azure-application-insights - kusto 查询与动态对象值没有键
问题描述
我有很多数据看起来像
{"tuesday":"<30, 60>"}
{"friday":"<0, 5>"}
{"saturday":"<5, 10>"}
{"friday":"<0, 5>"}
{"saturday":"<5, 10>"}
{"sunday":"0"}
{"monday":"<0, 5>"}
我想要的只是价值,而不管密钥如何。
我的查询:
customEvents
| where name == "eventName"
| extend d = parse_json(tostring(customDimensions.['Properties']))
| project d
| take 7
d 是一个动态对象,我可以为该值执行 d.monday,但我想在没有密钥的情况下获取该值。Kusto 可以做到这一点吗?
谢谢
解决方案
对于您在上面演示的单一属性的情况,使用parse
运算符可以工作:
datatable(d:dynamic)
[
,dynamic({"tuesday":"<30, 60>"})
,dynamic({"friday":"<0, 5>"})
,dynamic({"saturday":"<5, 10>"})
,dynamic({"friday":"<0, 5>"})
,dynamic({"saturday":"<5, 10>"})
,dynamic({"sunday":"0"})
,dynamic({"monday":"<0, 5>"})
]
| parse d with * ':"' value '"' *
| project value
笔记:
如果您的值不一定包含在双引号中(例如数字),那么您应该能够
kind=regex
为parse
运算符指定,并使用条件表达式来确定双引号的存在。如果每个属性包可能有超过 1 个属性,
extract_all()
则可以选择使用。
相关文件: