首页 > 解决方案 > kdb union join (with plus join)

问题描述

我已经坚持了一段时间,但无法提出解决方案,任何帮助都会得到帮助

我有 2 张桌子

q)x
a b c d
--------
1 x 10 1
2 y 20 1
3 z 30 1

q)y
a b| c d
---| ----
1 x| 1 10
3 h| 2 20

想要sum公共列并附加新列。预期结果应该是

a b c d
--------
1 x 11 11
2 y 20 1
3 z 30 1
3 h 2  20

pj看起来只更新(1,x)但不插入新的(3,h). 我假设必须有一种方法可以在 kdb 中执行某种 union+plus join

标签: kdb

解决方案


您可以在这里利用加号 (+) 运算符,只需键入 x 并添加表 y 即可获得所需的表:

q)(2!x)+y
a b| c  d
---| -----
1 x| 11 11
2 y| 20 1
3 z| 30 1
3 h| 2  20

相同的“如果有匹配的键,则加,如果没有则插入”行为也适用于字典:

q)(`a`b!1 2)+`a`c!10 30
a| 11
b| 2
c| 30

推荐阅读