Запрос Кусто не может быть проанализирован
У меня есть SecurityLog с такими полями, как DstIP_s, и я хочу отображать записи, соответствующие моей таблице trojanDst
let trojanDst = datatable (DstIP_s:string)
[ "1.1.1.1","2.2.2.2","3.3.3.3"
];
SecurityLog |
| join trojanDst on DstIP_s
Я получаю запрос не может быть проанализирована ошибка?
3 ответа
Отправленный вами запрос имеет избыточный канал (|
) перед join
,
С точки зрения эффективности, убедитесь, что левая сторона join
это меньший, как предлагается здесь: https://docs.microsoft.com/en-us/azure/kusto/query/best-practices
Это слишком долго для комментария. Как указал @Yoni L, проблема заключается в двойном трубе оператора.
Для тех, кто имеет опыт работы с SQL join
может быть немного нелогичным (на самом деле это kind=innerunique
):
вид не указан, вид =innerunique
Только одна строка с левой стороны соответствует каждому значению клавиши on. Вывод содержит строку для каждого совпадения этой строки со строками справа.
Вид = внутренняя
В выводе есть строка для каждой комбинации совпадающих строк слева и справа.
let t1 = datatable(key:long, value:string)
[
1, "a",
1, "b"
];
let t2 = datatable(key:long, value:string)
[
1, "c",
1, "d"
];
t1| join t2 on key;
Выход:
┌─────┬───────┬──────┬────────┐
│ key │ value │ key1 │ value1 │
├─────┼───────┼──────┼────────┤
│ 1 │ a │ 1 │ c │
│ 1 │ a │ 1 │ d │
└─────┴───────┴──────┴────────┘
Стиль SQL JOIN
версия:
let t1 = datatable(key:long, value:string)
[
1, "a",
1, "b"
];
let t2 = datatable(key:long, value:string)
[
1, "c",
1, "d"
];
t1| join kind=inner t2 on key;
Выход:
┌─────┬───────┬──────┬────────┐
│ key │ value │ key1 │ value1 │
├─────┼───────┼──────┼────────┤
│ 1 │ b │ 1 │ c │
│ 1 │ a │ 1 │ c │
│ 1 │ b │ 1 │ d │
│ 1 │ a │ 1 │ d │
└─────┴───────┴──────┴────────┘
В KQL есть много типов соединений, таких как innerunique, inner, leftouter, rightouter, fullouter, anti и другие. здесь вы можете найти полный список