比较两个表中的两个复合列

时间:2020-02-25 14:30:35

标签: kdb

我有两个带有sym和lp的表(见下文)。我想从tab1中抽出没有对应于符号的完整符号集的每一行 来自tab2的相同符号。

tab1:([]sym:`EUR`AUD`GBP;lp:(`aa`bb`cc;`dd`ee;`ff`gg`aa`ee))
tab2:([]sym:`EUR`AUD`GBP;lp:(`aa`bb`ff`cc;`ee`dd;`gg`ff`ee`aa`rr`xx))

即我的结果应该是:

tab3:([]sym:`EUR`GBP;lp:(`ff;`rr`xx))

谢谢

2 个答案:

答案 0 :(得分:1)

我认为这可能符合您的需求:

q)b: where 0 <> count each a: (exec lp from tab2) except' (exec lp from tab1)
q)update lp: a b from tab1 b
sym lp
----------
EUR ,`ff
GBP `rr`xx

我所做的一个假设是,两个表中的符号总是相同的,这是真的吗?

答案 1 :(得分:0)

键控表上的except在这里也可以工作:

q)(1!tab2)except''1!tab1
sym| lp
---| ----------
EUR| ,`ff
AUD| `symbol$()
GBP| `rr`xx

虽然性能不好。