Как искать значения из одной таблицы в другую в Azure Data Explorer (kusto) - PullRequest
1 голос
/ 06 ноября 2019

Я новичок в языке Kusto, но опыт работы с SQL. Поэтому, возможно, я делаю вещи совершенно неправильно.

Я пытаюсь создать запрос, который должен проверить, существуют ли значения из одной таблицы в другой.

Примерно так:

let T1 = datatable(id: int, ss:dynamic)
[
    1, dynamic(["qwe", "rty"]),
    2, dynamic(["uio", "pas"]),
    3, dynamic(["dfg", "hjk"]),
];
let T2 = datatable(id:int, s:string)
[
    1, "rty",
    2, "abc",
    3, "hjk"
];
T2
| join (T1) on id
| extend e=case(s has_any (ss),"Yes","No");

Но появляется ошибка «Ошибка has_any (): не удалось привести аргумент 2 к скалярной константе».

Есть ли способ сделать это?

Еще лучше с функцией, что-то вроде этого:

let E = (i_id: int, i_s: string)
{
T1 | where id==i_id | project e=case(i_s has_any (ss),"Yes","No")
};
T2
| extend e=E(id,s);

Пожалуйста, сообщите.

1 Ответ

0 голосов
/ 06 ноября 2019

вот несколько вариантов для рассмотрения:

1.

let T1 = datatable(id: int, ss:dynamic)
[
    1, dynamic(["qwe", "rty"]),
    2, dynamic(["uio", "pas"]),
    3, dynamic(["dfg", "hjk"]),
]
;
let T2 = datatable(id:int, s:string)
[
    1, "rty",
    2, "abc",
    3, "hjk"
]
;
T2
| join (T1 | mv-expand ss to typeof(string)) on id
| summarize e = case(countif(s == ss) > 0, "Yes", "No") by id, s

2.

let T1 = datatable(id: int, ss:dynamic)
[
    1, dynamic(["qwe", "rty"]),
    2, dynamic(["uio", "pas"]),
    3, dynamic(["dfg", "hjk"]),
]
;
let T2 = datatable(id:int, s:string)
[
    1, "rty",
    2, "abc",
    3, "hjk"
]
;
T2
| join T1 on id
| project id, s, e = case(indexof(tostring(ss), s) > 0, "Yes", "No")
// not necessarily accurate, depending on the values in the actual data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...