- KDB+ 教程
- KDB+ - 首页
- Q 编程语言
- Q 编程语言
- Q语言 - 类型转换
- Q语言 - 时间数据
- Q语言 - 列表
- Q语言 - 索引
- Q语言 - 字典
- Q语言 - 表格
- Q语言 - 动词和副词
- Q语言 - 连接
- Q语言 - 函数
- Q语言 - 内置函数
- Q语言 - 查询
- Q - 进程间通信
- Q - 消息处理器(.Z库)
- KDB+ 有用资源
- KDB+ - 快速指南
- KDB+ - 有用资源
- KDB+ - 讨论
Q语言 - 连接
在q语言中,我们根据提供的输入表和所需的连接表类型,有不同类型的连接。连接将来自两个表的数据组合在一起。除了外键查找外,还有四种其他方法可以连接表:
- 简单连接
- 截至连接 (asof join)
- 左连接 (left join)
- 联合连接 (union join)
本章将详细讨论这些连接中的每一个。
简单连接
简单连接是最基本的连接类型,使用逗号“,”执行。在这种情况下,两个表必须是类型一致的,即两个表具有相同数量的列,顺序相同,并且键相同。
table1,:table2 / table1 is assigned the value of table2
我们可以使用逗号连接每个长度相同的表来进行横向连接。这里可以对其中一个表进行键控。
Table1, `Table2
截至连接 (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,则主键必须匹配。
广告