返回介绍

Q Language - Joins

发布于 2021-05-31 13:43:27 字数 1694 浏览 916 评论 0 收藏 0

q语言中,我们根据提供的输入表和我们想要的连接表的类型提供不同类型的连接。 连接组合来自两个表的数据。 除了外键追逐,还有其他四种方式可以连接表格 -

  • Simple join
  • Asof join
  • Left join
  • Union join

在本章中,我们将详细讨论这些连接中的每一个。

简单加入

简单连接是最基本的连接类型,使用逗号','执行。 在这种情况下,两个表必须符合type conformant ,即两个表具有相同顺序的列数和相同的键。

table1,:table2/table1 is assigned the value of table2

对于具有相同长度的表,我们可以使用逗号 - 每个连接来横向连接。 其中一个表可以在这里键入,

Table1, `Table2

Asof Join (aj)

它是最强大的连接,用于在另一个表中获取一个表中字段的值。 一般来说,它用于获得每笔交易时的现行买入价和卖出价。

一般格式

aj[joinColumns;tbl1;tbl2]

例如,

aj[`sym`time;trade;quote]

例子 (Example)

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

Left Join(lj)

这是aj的一个特例,其中第二个参数是键控表,第一个参数包含右参数键的列。

一般格式

table1 lj Keyed-table

例子 (Example)

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

Union Join (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,则主键必须匹配。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文