joinx()

阅读(490) 标签: 连接, 集群游标,

描述:

连接同分步的集群(多路)游标

语法:

joinx(csi:Fi,xi,..;…)

备注:

假定xi升序将同分步的多个集群游标csi按照关联字段/关联表达式xix1以相等的关系进行连接,产生以Fi,…为字段的集群游标。Fi为引用字段,引用原集群游标序列csi中的记录。xj参数全省略则使用主键进行连接。有xj参数没设置维时则使用xj的值进行连接。支持集群多路游标,集群多路游标时路数必须相同。不管是多少个游标之间关联,都是和cs1中的x1进行相等判断,因此是一对多的关系。注意:需要连接的数据在同一台分机上,不能跨机取数。

选项:

@f

全连接,找不到匹配值时,则与null对应

@1

左连接(注意:这里是数字1,不是字母l

@p

按位置连接,忽略xj参数

参数:

Fi

结果字段名

csi

用于连接的集群游标

xi

连接字段/表达式

返回值:

同分布的集群游标

示例:

 

A

 

1

=file@n("D:/cs1.ctx","192.168.0.101:8281")

打开没有维的集群组表cs1.ctx生成集群文件,cs1.ctx中数据如下

2

=A1.create()

 

3

=A2.cursor()

返回集群游标

4

=file@n("D:/cs2.ctx","192.168.0.101:8291")

打开没有维的集群组表cs2.ctx生成集群文件,cs2.ctx中数据如下

5

=A4.create()

 

6

=A5.cursor()

返回集群游标,A3A6构成同分布的集群游标

7

=joinx(A3:EmployeeID1,EID;A6:EmployeeID2,EMPLOYEEID).fetch()

常规连接,不匹配的项丢弃,每个字段值指向原游标的一条记录

8

=file@n("D:/cs3.ctx","192.168.0.101:8281")

打开有维的集群组表cs3.ctx生成集群文件,cs3.ctx中数据如下

9

=A8.create()

 

10

=A9.cursor()

返回集群游标

11

=file@n("D:/cs4.ctx","192.168.0.101:8291")

打开有维的集群组表cs4.ctx生成集群文件,cs4.ctx中数据如下

12

=A11.create()

 

13

=A12.cursor()

返回集群游标,A3A6构成同分布的集群游标

14

=joinx(A10:EmployeeID1,EID;A13:EmployeeID2,EMPLOYEEID).fetch()

常规连接,不匹配的项丢弃,每个字段值指向原游标的一条记录,已设置主建显示效果如下:

15

=file@n("D:/cs3.ctx","192.168.0.101:8281")

 

16

=A15.create()

 

17

=A16.cursor()

返回集群游标

18

=file@n("D:/cs4.ctx","192.168.0.101:8291")

 

19

=A18.create()

 

20

=A19.cursor()

返回集群游标

21

=joinx@1(A17:EmployeeID1,EID;A20:EmployeeID2,EMPLOYEEID).fetch()

左连接

22

=file@n("D:/cs3.ctx","192.168.0.101:8281")

 

23

=A22.create()

 

24

=A23.cursor()

返回集群游标

25

=file@n("D:/cs4.ctx","192.168.0.101:8291")

 

26

=A25.create()

 

27

=A26.cursor()

返回集群游标

28

=joinx@f(A24:EmployeeID1,EID-3;A27:EmployeeID2,EMPLOYEEID).fetch()

全连接

29

=file@n("D:/cs3.ctx","192.168.0.101:8281")

 

30

=A29.create()

 

31

=A30.cursor()

返回集群游标

32

=file@n("D:/cs5.ctx","192.168.0.101:8291")

打开有维的集群组表cs5.ctx生成集群文件,cs5.ctx中数据如下

33

=A32.create()

 

34

=A33.cursor()

 

35

=joinx@p(A31:EmployeeID1;A34:EmployeeID2).fetch()

按位置连接

 

 

A

 

1

=file@n("D:/t1.ctx","192.168.0.111:8281")

 

2

=A1.create()

打开集群组表t1.ctx

3

=A2.cursor@m(;;3)

用集群组表生成路数为3的多路游标

4

=file@n("D:/t2.ctx","192.168.0.111:8281")

 

5

=A4.create()

打开集群组表t2.ctx

6

=A5.cursor(;;A3)

根据A3返回的多路游标同步分段

7

=joinx(A3:t1,EID;A6:t2,EID).fetch()

连接多路游标A3A6,进行多线程计算