Azure 如何在Kusto中将JSON转换为键值表
我有一个由一行和若干列组成的表。其中一列名为Azure 如何在Kusto中将JSON转换为键值表,azure,azure-log-analytics,azure-data-explorer,kql,Azure,Azure Log Analytics,Azure Data Explorer,Kql,我有一个由一行和若干列组成的表。其中一列名为EventProperties,它是此格式属性的JSON: { "Success":true, "Counters":{ "Counter1":1, "Counter2":-1, "Counter3":5, "Counter4":4, } } 我想将计数器从这个JSON转换成一个包含键和值的两列表,其中第一列是计数器的名称(例如Counter3),第二列是计数器的值(例如5)。 我试过
EventProperties
,它是此格式属性的JSON:
{
"Success":true,
"Counters":{
"Counter1":1,
"Counter2":-1,
"Counter3":5,
"Counter4":4,
}
}
我想将计数器
从这个JSON转换成一个包含键和值的两列表,其中第一列是计数器的名称(例如Counter3),第二列是计数器的值(例如5)。
我试过这个:
let eventPropertiesCell = materialize(MyTable
| project EventProperties
);
let countersStr = extractjson("$.Counters", tostring(toscalar(eventPropertiesCell)), typeof(string));
let countersJson = parse_json(countersStr);
let result =
print mydynamicvalue = todynamic(countersJson)
| mvexpand mydynamicvalue
| evaluate bag_unpack(mydynamicvalue);
result
但是我从JSON中得到一个表,每个计数器有一列,行数等于计数器数,而计数器值只填充一个随机行。例如,使用上面示例中的JSON,我得到:
但我想要这样的东西:
任何帮助都将不胜感激 您可以尝试使用
mv apply
如下:
datatable(event_properties:dynamic)
[
dynamic({
"Success":true,
"Counters":{
"Counter1":1,
"Counter2":-1,
"Counter3":5,
"Counter4":4
}
}),
dynamic({
"Success":false,
"Counters":{
"Counter1":1,
"Counter2":2,
"Counter3":3,
"Counter4":4
}
})
]
| mv-apply event_properties.Counters on (
extend key = tostring(bag_keys(event_properties_Counters)[0])
| project key, value = event_properties_Counters[key]
)
| project-away event_properties
您可以按如下方式尝试使用
mv apply
:
datatable(event_properties:dynamic)
[
dynamic({
"Success":true,
"Counters":{
"Counter1":1,
"Counter2":-1,
"Counter3":5,
"Counter4":4
}
}),
dynamic({
"Success":false,
"Counters":{
"Counter1":1,
"Counter2":2,
"Counter3":3,
"Counter4":4
}
})
]
| mv-apply event_properties.Counters on (
extend key = tostring(bag_keys(event_properties_Counters)[0])
| project key, value = event_properties_Counters[key]
)
| project-away event_properties
谢谢你,Yoni。这似乎为我提供了所需的表格式,但问题是我不想在查询本身中硬编码JSON及其值,而是从表中获取它(上面代码中的MyTable)。我试图修改您的解决方案并将其更改为:。。。datatable(事件属性:动态)[dynamic(eventPropertiesCell)]| mv应用事件属性。计数器。。。但是它说“缺少json值”。对不起,我认为很明显我无法查询您的表,这就是为什么我使用带有常量值的
datatable
。你应该可以用你的桌子来交换那部分。谢谢你,Yoni。这似乎为我提供了所需的表格式,但问题是我不想在查询本身中硬编码JSON及其值,而是从表中获取它(上面代码中的MyTable)。我试图修改您的解决方案并将其更改为:。。。datatable(事件属性:动态)[dynamic(eventPropertiesCell)]| mv应用事件属性。计数器。。。但是它说“缺少json值”。对不起,我认为很明显我无法查询您的表,这就是为什么我使用带有常量值的datatable
。您应该能够将该部分与实际表交换。