Уплощение списка списков в запросе Kusto

У меня есть запрос Kusto, который возвращает ряд строк, каждая из которых содержит список с разделителями точкой с запятой. Мне удалось разделить содержимое каждой строки в список, но я не смог сгладить этот список. К сожалению, я совсем новичок в использовании Kusto, поэтому немного борюсь.

Я пытался использовать функции "union", "join", "flatten" и искал функции, которые включают слово "merge" или "selectmany" (функцию, которую я использовал бы для выравнивания в C# с linq). Я также пробовал искать похожие функции sql, поэтому я могу найти эквивалентный запрос в Kusto, но мне не повезло.

Я использую запрос:

| where Nicknames != ""
| project split(Nicknames, ";")

Результаты примерно такие:

[
"Joe",
"Jim",
"JJ"
]
-------------
[
"Abe"
]
-------------
[
"Hal",
"Harry"
]

и я хотел бы использовать что-то вроде (псудо-Кусто):

UserInfo
| where Nicknames != ""
| project split(Nicknames, ";")
| flatten results
| distinct results

... где "результаты" - это таблицы, возвращенные предыдущей операцией.

1 ответ

Решение

Взгляните, например, на оператора mv-expand

datatable(Nicknames:string)["Joe;Jim;JJ", "Abe", "Hal;Harry"] 
| extend Nicknames = split(Nicknames, ";")
| mv-expand Nicknames to typeof(string)
| distinct Nicknames
Другие вопросы по тегам