Сравните два составных столбца в двух таблицах - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть две таблицы (см. Ниже) с 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 ]

1 голос
/ 25 февраля 2020

Я думаю, что это может соответствовать тому, что вы ищете:

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

Одно предположение, которое я сделал, состоит в том, что у вас всегда есть символы в одном и том же порядке в обеих таблицах, это всегда так

0 голосов
/ 02 марта 2020

except для таблиц с ключами может также работать здесь:

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

Хотя производительность не будет хорошей.

...