将带有分隔符的列字符串拆分为Azure Kusto中​​的单独列

问题描述

我在azure表中有一个列“ Apples”,其中包含以下字符串:“ Colour:red,Size:small”。

当前情况:

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

期望的情况:

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

请帮助

解决方法

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

请记住,在要提取的每个单词之前都包含所有不同的定界符,例如“,Size”。注意两者之间的空间。

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

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

,

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

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

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 运算符允许我们选择从输入中排除哪些列

结果:

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