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

Kdb 比较两个表中的两个复合列,kdb,Kdb,我有两个表,见下面的sym和lp。我想从tab1中抽出每一行,其中没有与 表2中的相同符号 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)) i、 e.我的结果应该是: tab3:([]sym:`EUR`GBP;lp:(`ff;`rr`xx)) 谢谢我想这可能符合您的要求: q)b:

我有两个表,见下面的sym和lp。我想从tab1中抽出每一行,其中没有与 表2中的相同符号

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))
i、 e.我的结果应该是:

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

谢谢

我想这可能符合您的要求:

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
我所做的一个假设是,在两个表中,符号的顺序总是相同的,这总是正确的吗?

除键控表外,在这里可能也适用:

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

不过,性能不会很好。

我可以保证它们是好的。非常感谢。事实上,我不确定我是否能够做出这样的假设-tab2将是所有sym的集合,tab1很有可能不包含所有sym-我已经加入了两个表,并尝试将您的用例扩展到这一个表,同时拉出了两列,但得到了一个长度错误。您可以尝试从中选择lp by sym{except[x1;x0]}将每个1!tab1;tab2解组,或者,如果您不介意表中有空值,请从tab1中更新lp:{1!tab2[x][`lp]except y}'[sym;lp]。如果这两种方法都不起作用,您能提供一些更具描述性的表吗?谢谢!第二种方法非常有效!再次感谢Matthew