比较两个表中的两个复合列
Compare two compound columns in two tables
我有两个表(见下文),其中包含 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))
谢谢
我认为这可能符合您的要求:
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
我所做的一个假设是您在两个表中的符号顺序始终相同,这总是正确的吗?
键控表上的 except
也适用于此:
q)(1!tab2)except''1!tab1
sym| lp
---| ----------
EUR| ,`ff
AUD| `symbol$()
GBP| `rr`xx
虽然性能不会很好。
我有两个表(见下文),其中包含 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))
谢谢
我认为这可能符合您的要求:
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
我所做的一个假设是您在两个表中的符号顺序始终相同,这总是正确的吗?
键控表上的 except
也适用于此:
q)(1!tab2)except''1!tab1
sym| lp
---| ----------
EUR| ,`ff
AUD| `symbol$()
GBP| `rr`xx
虽然性能不会很好。