kdb union join (with plus join)

ppa*_*l26 1 kdb

我已经被困在这个问题上一段时间了,但无法提出解决方案,任何帮助都会得到帮助

我有 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
Run Code Online (Sandbox Code Playgroud)

想要sum常见的列并附加新的列。预期结果应该是

a b c d
--------
1 x 11 11
2 y 20 1
3 z 30 1
3 h 2  20
Run Code Online (Sandbox Code Playgroud)

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

小智 7

您可以在此处利用加号 (+) 运算符,只需键入 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
Run Code Online (Sandbox Code Playgroud)

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

q)(`a`b!1 2)+`a`c!10 30
a| 11
b| 2
c| 30
Run Code Online (Sandbox Code Playgroud)