mv-expand
更有效的方法来获取每个对象的每个 displayName
属性的值?下面的示例工作正常,但我可以看到它在大型查询上效率不高。这个想法是列出每个对象的所有 displayName
值,反转它们,然后创建一个通过 /
连接这些值的新字符串。
仅供参考,原始查询是针对
resourcecontainers
表的。
代码:
let result = print table = dynamic([
{
"name": "object1",
"properties": {
"managementGroupAncestorsChain": [
{
"displayName": "foo",
"name": "foo"
},
{
"displayName": "root",
"name": "root"
}
]
}
},
{
"name": "object2",
"properties": {
"managementGroupAncestorsChain": [
{
"displayName": "bar",
"name": "bar"
},
{
"displayName": "root",
"name": "root"
}
]
}
}
])
| mv-expand table
| evaluate bag_unpack(table);
result
| extend chain = properties.managementGroupAncestorsChain
| mv-expand chain
| summarize chain = strcat_array(array_reverse(make_list(chain.displayName)), '/') by name
所需输出:
名字 | 链条 |
---|---|
对象1 | 根/foo |
对象2 | 根/栏 |
是否有比
更有效的方法来获取每个对象的每个mv-expand
属性的值?displayName
AFAIK,mv-expand 是执行此操作的有效方法,下面是我执行此操作的类似方法:
下面是我简化的 KQL 查询(这里我在 bagunpacking 后取了表):
let rithtest = datatable(name: string, properties: dynamic)
[
"object1", dynamic({"managementGroupAncestorsChain": [{"displayName": "fooo", "name": "fooo"}, {"displayName": "root", "name": "root"}]}),
"object2", dynamic({"managementGroupAncestorsChain": [{"displayName": "baar", "name": "baar"}, {"displayName": "root", "name": "root"}]})
]
| mv-expand parse_json(properties).managementGroupAncestorsChain
| extend chain = properties_managementGroupAncestorsChain.displayName
| summarize chain = strcat_array(array_reverse(make_list(chain)), '/') by name;
rithtest
Output:
小提琴。