kql - 使用 strcat_array 将具有嵌套数组的字段处理为字符串以在 Kusto 中输出
问题描述
我想将 Azure AD 审核日志处理为 HTML 表/csv 文件。数据包含嵌套的数组集,我想将它们汇总为逗号分隔的字符串。
例如看起来像这样的数据
{
"TargetResources": [{"displayName": "Policy",
"modifiedProperties": [{"displayname": "PolicySetting1"},
{"displayname": "PolicySetting2"}]
}]
}
会被处理成
TargetResource | Policy
modifedProps | PolicySetting1, PolicySetting2
mv-expand
似乎不起作用,因为某些行没有 modifiedProperties 所以这些行被消除
我能够找到的唯一解决方案接近我正在尝试做的事情是这样的:
AuditLogs
| extend TargetResource = tostring(TargetResources[0].displayName)
| extend ModifiedProperty0 = tostring(parse_json(tostring(TargetResources[0].modifiedProperties))[0].displayName)
| extend ModifiedProperty1 = tostring(parse_json(tostring(TargetResources[0].modifiedProperties))[1].displayName)
| extend ModifiedProperty2 = tostring(parse_json(tostring(TargetResources[0].modifiedProperties))[2].displayName)
| extend ModifiedProperties = strcat(ModifiedProperty0,", ",ModifiedProperty1,", ",ModifiedProperty2)
此解决方案的局限性在于它不能适用于任意数量的 modifiedProperty 值(它仅适用于恰好 3 个),这是我的目的所要求的,如果 modifiedProperties 不存在并且如果有 0-,我希望该解决方案能够工作15 个值。
感谢您提供任何帮助
解决方案
如果我正确理解了您的描述,您可以使用mv-apply
(两次)来实现:
datatable(d: dynamic)
[
dynamic({"TargetResources":[{"displayName": "Policy0","someOtherProperty":"hello world"}]}),
dynamic({"TargetResources":[{"displayName": "Policy1","modifiedProperties":[{"displayname":"PolicySetting1"},{"displayname":"PolicySetting2"}]}]}),
dynamic({"TargetResources":[{"displayName": "Policy2","modifiedProperties":[{"displayname":"PolicySetting3"},{"displayname":"PolicySetting4"}]}, {"displayName":"Policy3","modifiedProperties":[{"displayname":"PolicySetting5"},{"displayname":"PolicySetting6"}]}]}),
]
| mv-apply tr = d.TargetResources on (
extend TargetResource = tr.displayName
| mv-apply mp = tr.modifiedProperties on (
extend propertyName = mp.displayname
| summarize modifiedProps = strcat_array(make_set(propertyName), ", ")
)
)
| project TargetResource, modifiedProps
目标资源 | 修改道具 |
---|---|
政策0 | |
政策1 | 策略设置 1、策略设置 2 |
政策2 | 策略设置 3、策略设置 4 |
政策3 | PolicySetting5、PolicySetting6 |
推荐阅读
- reactjs - 如果我使用 mapStateToProps,输入属性不会改变
- apache-spark - Elasticsearch Spark 解析问题 - 无法解析字段 [Y] 的值 [X]
- javascript - 如果子项包含某个文本/字符串,如何隐藏父 div?
- java - MySQL内部连接错误:在执行查询期间检测到为空。主键不能包含 null
- php - phpMyadmin error "continue" targeting switch is equivalent to "break"
- java - Spring Rest Hibernate 创建嵌套对象
- android - 如何修复此错误 retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall 无法转换为 com.example.test.dto.User
- android - kotlin 中数据绑定的好处?
- css - Bootstrap Btn 类在移动设备上不起作用
- c# - 如何在 asp.net-mvc 中添加 actionlink?