描述:
连接同分步的集群(多路)游标
语法:
joinx(csi:Fi,xi,..;…)
备注:
假定xi为升序,将同分步的多个集群游标csi按照关联字段/关联表达式xi和x1以相等的关系进行连接,产生以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() |
返回集群游标,A3和A6构成同分布的集群游标 |
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() |
返回集群游标,A3和A6构成同分布的集群游标 |
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() |
连接多路游标A3、A6,进行多线程计算 |