kdb - 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
解决方案
您可以在这里利用加号 (+) 运算符,只需键入 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