Q 语言 - 连接
在q语言中,我们根据提供的输入表和我们想要的连接表类型有不同类型的连接。连接合并两个表中的数据。除了外键追踪之外,还有四种连接表的方法 -
- 简单连接
- 阿索夫加盟
- 左连接
- 联盟加入
在本章中,我们将详细讨论每个连接。
简单加入
简单连接是最基本的连接类型,使用逗号“,”执行。在这种情况下,两个表必须类型一致,即两个表具有相同顺序的相同列数和相同的键。
table1,:table2 / table1 is assigned the value of table2
对于相同长度的表,我们可以使用逗号每个连接来横向连接。其中一张表可以在此处键入,
Table1, `Table2
Asof 加入 (aj)
它是最强大的联接,用于获取一个表中的字段在另一个表中的时间值。一般用于获取每次交易时的现行买价和卖价。
通用格式
aj[joinColumns;tbl1;tbl2]
例如,
aj[`sym`time;trade;quote]
例子
q)tab1:([]a:(1 2 3 4);b:(2 3 4 5);d:(6 7 8 9)) q)tab2:([]a:(2 3 4);b:(3 4 5); c:( 4 5 6)) q)show aj[`a`b;tab1;tab2] a b d c ------------- 1 2 6 2 3 7 4 3 4 8 5 4 5 9 6
左连接(lj)
这是 aj 的特殊情况,其中第二个参数是键控表,第一个参数包含右侧参数的键的列。
通用格式
table1 lj Keyed-table
例子
q)/Left join- syntax table1 lj table2 or lj[table1;table2] q)tab1:([]a:(1 2 3 4);b:(2 3 4 5);d:(6 7 8 9)) q)tab2:([a:(2 3 4);b:(3 4 5)]; c:( 4 5 6)) q)show lj[tab1;tab2] a b d c ------------- 1 2 6 2 3 7 4 3 4 8 5 4 5 9 6
联合连接 (uj)
它允许创建具有不同模式的两个表的并集。它基本上是简单连接 ( , ) 的扩展
q)tab1:([]a:(1 2 3 4);b:(2 3 4 5);d:(6 7 8 9)) q)tab2:([]a:(2 3 4);b:(3 4 5); c:( 4 5 6)) q)show uj[tab1;tab2] a b d c ------------ 1 2 6 2 3 7 3 4 8 4 5 9 2 3 4 3 4 5 4 5 6
如果您在带键的表上使用 uj,则主键必须匹配。