如何解决在kusto中使用parse和mv-expand后如何投影附加列
这是一个字符串列的示例,我想根据字典的键值将此字符串列拆分为多列,如果有更多键,我想将它们分成不同的行。
<column2>: "for each user:[{"id":1,"Publisher":null,"type":0,"Identity":{
"Id":"00000000-0000-0000-0000-000000000000","sid":"134567890"},"roles":[],"permissions":[],"name":"ABC"},{"id":1,"name":"ABC"}]"```
I want to trim initial string "for each user:" and create columns for id,publisher,type,Identity.Id,Identity.sid,roles,permissions,name and since there are two dictionaries in the above sample,I want to insert the second item into a new row.
I also want <column1> in the output
解决方法
print message = ```<column1>: "val",<column2>: "for each user:[{"id":1,"Publisher":null,"type":0,"Identity":{
"Id":"00000000-0000-0000-0000-000000000000","sid":"134567890"},"roles":[],"permissions":[],"name":"ABC"},{"id":1,"name":"ABC"}]"```
| parse message with * '<column1>: "' column1 '"' * '<column2>: "for each user:' dict:dynamic '"'
| mv-expand dict
| project dict.id,dict.publisher,dict.type,dict.Identity.Id,column1 // add the rest of your properties of interest
dict_id | dict_publisher | dict_type | dict_Identity_Id | column1 |
---|---|---|---|---|
1 | 0 | 00000000-0000-0000-0000-000000000000 | val | |
1 | 0 | 00000000-0000-0000-0000-000000000000 | val |
给你:
datatable(Column2: string) [
'for each user:[{"id":1,"Identity":{"Id":"00000000-0000-0000-0000-000000000000","name":"ABC"}]"'
]
| parse Column2 with 'for each user:' Json:dynamic '"'
| project Json
| mv-expand Json
| evaluate bag_unpack(Json)
结果:
id | 身份 | 姓名 | 权限 | 角色 | 类型 |
---|---|---|---|---|---|
1 | { "Id": "00000000-0000-0000-0000-000000000000", "sid": "134567890" } |
ABC | [] | [] | 0 |
1 | { "Id": "00000000-0000-0000-0000-000000000000", "sid": "134567890" } |
ABC | [] | [] | 0 |
分步说明:
- 使用
parse
将您感兴趣的 json 部分提取到名为Json
的列中 - 仅投影
Json
列(因为您不关心原始输入字符串) - 使用
mv-expand
将Json
列中的数组拆分为单独的元素(每个元素将获得自己的记录) - 使用
evaluate bag_unpack(Json)
为Json
列中的每个键拥有一个单独的列
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。