【问题标题】:kdb union join (with plus join)kdb union join (with plus join)
【发布时间】:2021-06-14 05:02:08
【问题描述】:

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

我有 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 加入

【问题讨论】:

    标签: kdb


    【解决方案1】:

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

    【讨论】:

    • 这太棒了!谢谢。
    【解决方案2】:

    知道了:)

    q) (x pj y), 0!select from y where not ([]a;b) in key 2!x
    a b c d
    --------
    1 x 11 11
    2 y 20 1
    3 z 30 1
    3 h 2  20
    

    始终开放以获得更好的实施:D 我相信有一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多