将带有分隔符的列字符串拆分为 azure kusto 中的单独列

Split column string with delimiters into separate columns in azure kusto

我在天蓝色 table 中有一个列 'Apples',其中包含以下字符串:“Colour:red,Size:small”。

现状:

|-----------------------|
| Apples                |
|-----------------------|
| Colour:red,Size:small |
|-----------------------|

期望的情况:

|----------------|
| Colour | Size  |
|----------------|
| Red    | small |
|----------------|

请帮忙

这个查询给了我想要的结果: | parse Apples with "Colour:" AppColour ", Size:" AppSize

请记住在要提取的每个单词之前添加所有不同的分隔符,例如“, Size”。注意space之间。

这对我有帮助,然后我用我的直觉根据我的需要自定义查询:

https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/parseoperator

我会回答这个标题,因为我注意到很多人都在寻找解决方案。

这里的关键是mv-expand运算符(扩展multi-value动态数组或属性包成多条记录):

datatable (str:string)["aaa,bbb,ccc", "ddd,eee,fff"]
| project splitted=split(str, ',')
| mv-expand col1=splitted[0], col2=splitted[1], col3=splitted[2]
| project-away splitted

project-away 运算符允许我们 select 从输入中排除哪些列从输出中排除 .

结果:

+--------------------+
| col1 | col2 | col3 |
+--------------------+
| aaa  | bbb  | ccc  |
| ddd  | eee  | fff  |
+--------------------+