Как объединить две таблицы на основе совпадений подстрок в Azure Data Explorer / Kusto?

Я хотел бы создать результирующую таблицу из объединения этих двух таблиц на основе ячеек в Fruit наличие совпадений подстрок в Things Таблица данных.

      let Fruit = datatable(fruit:string) 
[
"apple", 
"banana" 
"orange" 
];
let Things = datatable(fruit:string) 
[
"anappletree",
"myoranges" 
];

Я пробовал что-то вроде этого:

      Fruit
| join Things on $left.fruit contains $right.thing

Но получите эту ошибку:

      Semantic Error 
join: only column entities or equality expressions are allowed in this context.

Так что не могу использовать contains здесь.

Как мне присоединиться к этому, чтобы получить таблицу, состоящую из

      "apple" | "anappletree"
"banana" | ""
"orange" | "myoranges"

1 ответ

Если левая часть join (в твоем случае - Fruit) достаточно мала, вы можете попробовать использовать mv-apply:

      let Fruit = datatable(fruit:string) 
[
    "apple", 
    "banana",
    "orange" 
];
let Things = datatable(thing:string) 
[
    "anappletree",
    "myoranges",
    "this is not a fruit"
];
let Fruit_list = toscalar(Fruit | summarize make_list(fruit));
Things
| mv-apply fruit = Fruit_list on (where thing contains fruit)
Другие вопросы по тегам