conj()

阅读(3600) 标签: conj,

本章介绍conj()的多种用法。

A.conj(x)

描述:

计算序列成员的和列。

语法:

A.conj(x)

备注:

计算序列A中各个序列成员的和列。有参数x时,循环计算表达式x后再进行和列。

A.conj(x,…)等同于A.(x,…).conj()

选项:

@r

递归计算到所有成员都不再是序列为止。

@v

A的成员为纯序列/纯序表时返回纯序列。

参数:

A

序列,其成员为序列。

x

表达式,可省略。

返回值:

序列

示例:

A成员为序列:

 

A

 

1

=[[1,2,3],[4,5,6]].conj()

返回结果:[1,2,3,4,5,6]

2

=[[1,[2,3]],[2,5,6]].conj()

返回结果:[1,[2,3],2,5,6]

3

=[[1,2,3],[3],[7]].conj()

返回结果:[1,2,3,3,7]

4

=[[1,[2,3]],[2,5,6]].conj@r()

使用@r选项,递归计算到所有成员不再是序列为止,返回结果:[1,2,3,2,5,6]

5

=[[1,2,3],[4,5,6]]

 

6

=A5.conj(~**2)

返回结果:[2,4,6,8,10,12]

7

=A5.(~**2).conj()

返回结果同A5

A成员为序表/排列:

 

A

 

1

=demo.query("select  top 4 EID,NAME,GENDER from EMPLOYEE where GENDER = 'M' ")

2

=demo.query("select top 4 EID,NAME,GENDER  from EMPLOYEE where GENDER = 'F' ")

3

=[A1,A2].conj()

计算[A1,A2]序列的和列,返回结果:

4

=[A1,A2].conj(~.(NAME))

计算[A1,A2]序列中NAME和列,返回结果:

["Matthew","Ryan","Jacob","Daniel","Rebecca","Ashley","Rachel","Emily"]

5

=[A1,A2].(~.(NAME)).conj()

结果同A4

返回纯序列:

 

A

 

1

=[1,2,3].i()

返回纯序列。

2

=[4,5].i()

返回纯序列。

3

=[A1,A2].conj@v()

使用@v选项,返回纯序列。

4

=ifpure(A3)

返回true, 判断A3是否为纯序列。

 

ch.conj()

描述:

拆分管道中的记录并将拆分结果并集,将该计算附加到原管道。

语法:

ch.conj(x)

备注:

管道ch附加计算,ch中的记录根据计算表达式x把每条记录拆分为序列/排列,然后将拆分结果中的成员或记录并在一起,返回原管道ch

该函数属于附加计算动作

参数:

ch

管道。

x

返回排列(序表)的表达式。

返回值:

管道

示例:

 

A

 

1

=demo.cursor("select * from GYMNASTICSWOMEN")

返回游标。

GYMNASTICSWOMEN表内容如上图。

2

=channel()

创建管道。

3

=A2.conj(create(ID,NAME,COUNTRY,SUBJECT,SCORES).record([ID,NAME,

COUNTRY,"VAULT",VAULT,ID,NAME,COUNTRY, "UNEVENBARS",UNEVENBARS,

ID,NAME,COUNTRY,"BALANCEBEAM",BALANCEBEAM,ID,NAME,

COUNTRY,"FLOOR",FLOOR]))

管道A2附加计算,把管道中的字段VAULTUNEVENBARSBALANCEBEAMFLOOR做列转行计算,返回原管道。

3

=A2.fetch()

A2管道执行结果集函数,保留管道当前数据。

4

=A1.push(A2)

将游标A1中的数据推送到管道,此时数据不会立即被推送到管道。

5

=A1.fetch()

A1游标执行取数动作,此时数据才会被推送到管道,然后管道执行计算并记录结果。

6

=A2.result()

获取管道A2计算结果:

cs.conj()

描述:

拆分游标中的记录并将拆分结果并集,将该计算附加到原游标。

语法:

cs.conj(x)

备注:

游标cs附加计算,cs中的记录根据计算表达式x把每条记录拆分为序列/排列,然后将拆分结果中的成员或记录并在一起,返回原游标cs

该函数属于延迟计算函数。

参数:

cs

游标/多路游标。

x

返回排列(序表)的表达式。

返回值:

游标

示例:

 

A

 

1

=demo.cursor("select * from GYMNASTICSWOMEN")

返回游标,数据内容如下:

2

=A1.conj(create(ID,NAME,COUNTRY,SUBJECT,SCORES).record([ID,NAME,COUNTRY,"VAULT",

VAULT,ID,NAME,COUNTRY, "UNEVENBARS",UNEVENBARS,ID,NAME,COUNTRY,

"BALANCEBEAM",BALANCEBEAM,ID,NAME,COUNTRY,"FLOOR",FLOOR]))

A1游标附加计算,把游标中的字段VAULTUNEVENBARSBALANCEBEAMFLOOR做列转行计算,返回原游标A1

3

=A1.fetch()

读取游标A1执行A2计算后的数据(数据量较大时建议分批读取)

 

CS.conj()

描述:

纵向连接游标序列后返回多路游标。

语法:

CS.conj()

备注:

CS是游标组成的序列,针对其成员做纵向连接,结果返回多路游标,相当于合并游标中的数据。游标序列中各个游标的结构必须相同。

该函数属于延迟计算函数。

参数:

CS

游标组成的序列。

返回值:

多路游标

示例:

 

A

 

1

=connect("demo").cursor("SELECT  top 3 *  FROM scores where SUBJECT='English' ")

返回游标,数据内容如下:

2

=connect("demo").cursor("SELECT  top 3 *  FROM scores where SUBJECT='Math' ")

返回游标,数据内容如下:

3

=connect("demo").cursor("SELECT  top 3 *  FROM scores where SUBJECT='PE' ")

返回游标,数据内容如下:

4

=[A1,A2,A3]

返回游标组成的序列。

5

=A4.conj()

纵向连接游标序列,返回游标。

6

=A5.fetch()

读取A5游标中的数据(数据量较大时建议分批读取):

 

相关概念:

A.merge()

CS.merge()

T.conj()

描述:

虚表中定义计算,拆分虚表记录并将拆分结果并集

语法:

T.conj(x)

备注:

虚表T中定义计算,T根据计算表达式x把每条记录拆分为序列/排列,然后将拆分结果中的成员或记录并集后返回成新虚表。

参数:

T

虚表。

x

返回排列(序表)的表达式。

返回值:

虚表

示例:

 

A

 

1

=create(file).record(["gymn.ctx"])

gymn.ctx组表内容如下:

2

=pseudo(A1)

返回虚表对象。

3

=A2.conj(create(ID,NAME,COUNTRY,SUBJECT,SCORES).record([ID,NAME,COUNTRY

,"VAULT",VAULT,ID,NAME,COUNTRY,"UNEVENBARS",UNEVENBARS

,ID,NAME,COUNTRY,"BALANCEBEAM",BALANCEBEAM,ID,NAME,COUNTRY,

"FLOOR",FLOOR]))

A2虚表定义计算,拆分虚表中的记录并将拆分结果并集,返回新虚表。

4

=A3.cursor().fetch()

读取A3虚表中的数据,此时A2虚表执行A3中定义的计算操作,返回内容如下: