Regex оставил соединение в KDB - PullRequest
0 голосов
/ 14 ноября 2018

В KDB возможно ли выполнить lj (Left-Join), используя "like" или "~", чтобы объединить 2 таблицы, где ключ 1 таблицы совпадает с ключом другой таблицы по регулярному выражению?

1 Ответ

0 голосов
/ 14 ноября 2018

Не используя готовые инструменты, но вы можете сделать что-то подобное (не будет невероятно эффективным)

q)t:([]sym:`ACF`ABC`ABD`BA`AAF`AABG`CDE;col1:til 7)

q)t2:([]regex:("*AB*";"AA?";"A*";"C*");col2:4#.Q.A)

q)t,'t2 first each where each t[`sym]like'\:t2[`regex]
sym  col1 regex  col2
---------------------
ACF  0    "A*"   C
ABC  1    "*AB*" A
ABD  2    "*AB*" A
BA   3    ""
AAF  4    "AA?"  B
AABG 5    "*AB*" A
CDE  6    "C*"   D

Этот подход будет использовать первый сопоставленный шаблон, если существует более одного совпадения.

Другая идея состоит в том, чтобы создать изготовленный ключ и оставить соединение на изготовленном ключе.

...