joinx()

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

描述:

连接同分步的集群游标。

语法:

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

备注:

假定xi升序将同分布的多个集群游标csi按照关联字段/关联表达式xix1以相等的关系连接,产生以Fi,…为字段的集群游标。Fi为引用字段,引用原集群游标序列csi中的记录。xj参数全省略则使用主键连接。有xj参数没设置维时则使用xj的值连接。

支持集群多路游标,集群多路游标时路数必须相同。不管是多少个游标之间关联,都是和cs1中的x1相等判断,因此是一对多的关系。

注意:需要连接的数据在同一台分机上,不能跨机取数。

选项:

@f

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

@1

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

@p

按位置连接,忽略xj参数。

@i

仅用于过滤cs1,忽略Fi参数,与@f@1互斥。

@d

仅用于过滤cs1,只保留找不到的,忽略Fi参数,与@f@1互斥。

参数:

Fi

结果字段名。

csi

用于连接的集群游标。

xi

连接字段/表达式。

返回值:

集群游标

示例: 

 

A

B

 

1

[192.168.0.114:8281,192.168.18.131:8281]

 

两个集群分机。

2

=file("salespart.ctx", A1)

=file("orderpart.ctx":[1], A1)

组表salespart.ctx orderpart.ctx 分布在两台集群分机中

 

3

=A2.open()

=B2.open()

打开集群组表。

4

=A3.cursor()

=B3.cursor()

 

5

=B4.sortx(EID; A4)

=joinx(A4:s,EID;A5:o,EID)

A5中将B4的结果数据排序,将排序的结果按照用户数据来同分布处理,生成与用户数据同分布的游标;

B5中用joinx将两个同分布的游标连接。

 

 

A

 

1

=file("t1.ctx","192.168.0.111:8281")

 

2

=A1.open()

打开集群组表t1.ctx

3

=A2.cursor@m(;;3)

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

4

=file("t2.ctx","192.168.0.111:8281")

 

5

=A4.open()

打开集群组表t2.ctx

6

=A5.cursor(;;A3)

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

7

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

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