json - 展平 kusto 列中的嵌套 json
问题描述
我有一个 kusto 表,其中一列是带有嵌套 json 的动态类型,如何在 kusto 中展平?mv-expand 只做一个级别。
column1 : timetsamp
column2 : id
column3 : json object
timestamp id value
2020-10-13 22:42:05.0000000 d0 "{
""value"": ""0"",
""max"": ""0"",
""min"": ""0"",
""avg"": ""0""
}"
2020-10-13 22:42:05.0000000 d0 "{
""sid"": ""a0"",
""data"": {
""x"": {
""a"": {
""t1"": ""2020-10-13T22:46:50.1310000Z"",
""m1"": 446164,
""m4"": {
""m41"": ""abcd"",
""m42"": 1234
}
}
}
}
}"
#update2 :我可以弄错键,但不能弄错值
let testJson = datatable(timestamp : datetime, id : string, value : dynamic )
[datetime(2020-10-13T22:42:05Z), 'd0', dynamic({"value":"0","max":"0","min":"0","avg":"0"}),
datetime(2020-10-13T22:42:05Z), 'd1', dynamic({"sid":"a0","data":{"x":{"a":{"t1":"2020-10-13T22:46:50.131Z","m1":446164,"m4":{"m41":"abcd","m42":1234}}}}})];
testJson
| extend key=treepath(value)
| mv-expand key
| extend value1 = value[tostring(key)]
解决方案
您可以多次调用 mv-expand:
let _data = datatable (column1:datetime , column2:string , column3:dynamic )
[
datetime(2020-10-13 22:42:05.0000000), 'd0', dynamic({
"value": "0",
"max": "0",
"min": "0",
"avg": "0"
}),
datetime(2020-10-13 22:42:05.0000000), 'd0', dynamic({
"sid": "a0",
"data": {
"x": {
"a": {
"t1": "2020-10-13T22:46:50.1310000Z",
"m1": 446164,
"m4": {
"m41": "abcd",
"m42": 1234
}
}
}
}
})
];
_data
| mv-expand column3
| mv-expand more_data=column3.data.x.a
| mv-expand more_data_m4=more_data.m4
您还可以使用以下方法将动态字段提升到列中evaluate bag_unpack()
:
https ://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/bag-unpackplugin
let _data = datatable (column1:datetime , column2:string , column3:dynamic )
[
datetime(2020-10-13 22:42:05.0000000), 'd0', dynamic({
"value": "0",
"max": "0",
"min": "0",
"avg": "0"
}),
datetime(2020-10-13 22:42:05.0000000), 'd0', dynamic({
"sid": "a0",
"data": {
"x": {
"a": {
"t1": "2020-10-13T22:46:50.1310000Z",
"m1": 446164,
"m4": {
"m41": "abcd",
"m42": 1234
}
}
}
}
})
];
_data
| mv-expand column3
| extend expanded_data = column3.data.x.a
| evaluate bag_unpack(expanded_data)
推荐阅读
- ruby-on-rails - Rails Enum 返回整数值,而不是字符串表示
- vb.net - 尝试使用 VB.Net 列出某个目录中的所有文件
- c - 我需要对矩阵进行排序,以便行中的值保持相同的顺序,但整行会根据某些标准改变它们的位置
- android - 如何解决android studio错误Gradle Sync?
- node.js - Mongodb不在文档中存储字符串数组
- ios - GCKSessionManager - 会话未恢复
- azure - Azure Batch REST API,授权问题
- llvm - LLVM:以前未定义的“无效重新定义函数”
- modelica - Dymola 在非线性系统初始化过程中如何选择迭代变量?
- oauth-2.0 - 是否可以拥有多个具有相同客户端凭据的有效访问令牌?