сравнить значения двух строковых столбцов таблицы в q kdb - PullRequest
0 голосов
/ 14 июня 2019

У нас есть стол:

q)t:([] a:("abc";"def";"ghi";"lmn"); b:("abc";"xyz";"ghi";"def"); c:1 2 3 4)
q)t
a     b     c
-------------
"abc" "abc" 1
"def" "xyz" 2
"ghi" "ghi" 3
"lmn" "def" 4

Ожидаемый результат: сопоставить столбцы a и столбец b со строкой и соответствующим образом обновить столбец mu *

a     b     c mu
---------------------
"abc" "abc" 1 match
"def" "xyz" 2 unmatch
"ghi" "ghi" 3 match
"lmn" "def" 4 unmatch

Когда я запускаю запрос ниже, он терпит неудачу, вывод

q)select a,b,c, mu:?[any a like/: b; `match; `unmatch] from t
a     b     c mu
---------------------
"abc" "abc" 1 match
"def" "xyz" 2 match // Issue here, since match a value of column a in all value of b
"ghi" "ghi" 3 match
"lmn" "def" 4 unmatch

1 Ответ

3 голосов
/ 14 июня 2019

Если вы хотите выполнить построчное сопоставление, вы можете использовать match operator (~) и each-both operator (').

 q) update  mu:?[a~'b;`match;`unmatch] from t
...