在 Kusto/Azure Data Explorer 中将系列转换为列
Turn series to columns in Kusto/Azure Data Explorer
我正在尝试将 Azure Logs (kusto) 中的 Windows 事件日志 xml 事件数据转换为列,因此给定 xml 中返回的 EventData 数组 parse_xml(),如何把它变成列?
我尝试了 mveexplode,它给了我行(系列),但后来我想把它们变成列,其中 col 名称是标签中的属性 "Name",值是文本 属性 .
Windows 事件日志 xml 下面供参考
<EventData xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<Data Name="DomainPolicyChanged">Password Policy</Data>
<Data Name="DomainName">XXX</Data>
<Data Name="DomainSid">S-1-5-21-....</Data>
<Data Name="SubjectUserSid">S-1-5-18</Data>
<Data Name="SubjectUserName">SRV-XX-001$</Data>
<Data Name="SubjectDomainName">DOMAIN</Data>
<Data Name="SubjectLogonId">0x3e7</Data>
<Data Name="PrivilegeList">-</Data>
<Data Name="MinPasswordAge"></Data>
<Data Name="MaxPasswordAge"></Data>
<Data Name="ForceLogoff"></Data>
<Data Name="LockoutThreshold">耠</Data>
<Data Name="LockoutObservationWindow"></Data>
<Data Name="LockoutDuration"></Data>
<Data Name="PasswordProperties">耠-</Data>
<Data Name="MinPasswordLength">-</Data>
<Data Name="PasswordHistoryLength">-</Data>
<Data Name="MachineAccountQuota">-</Data>
<Data Name="MixedDomainMode">1</Data>
<Data Name="DomainBehaviorVersion">8</Data>
<Data Name="OemInformation">12</Data>
</EventData>
以下方法可行
(取决于您实际计划查询数据的方式,可能会有更有效的方法 - 所以如果您可以共享示例查询,它可能会有所帮助)
datatable(someColumn:string, xmlValue:string)
["hello", '<EventData xmlns="http://schemas.microsoft.com/win/2004/08/events/event">\r\n'
'<Data Name="DomainBehaviorVersion">8</Data>\r\n'
'<Data Name="OemInformation">12</Data>\r\n'
'<Data Name="DomainPolicyChanged">Password Policy</Data>\r\n'
'<Data Name="DomainName">XXX</Data>\r\n'
'<Data Name="DomainSid">S-1-5-21-....</Data>\r\n'
'<Data Name="SubjectUserSid">S-1-5-18</Data>\r\n'
'<Data Name="SubjectUserName">SRV-XX-001$</Data>\r\n'
'<Data Name="SubjectDomainName">DOMAIN</Data>\r\n'
'<Data Name="SubjectLogonId">0x3e7</Data>\r\n'
'<Data Name="PrivilegeList">-</Data>\r\n'
'<Data Name="MinPasswordAge"></Data>\r\n'
'<Data Name="MaxPasswordAge"></Data>\r\n'
'<Data Name="ForceLogoff"></Data>\r\n'
'<Data Name="LockoutThreshold">耠</Data>\r\n'
'<Data Name="LockoutObservationWindow"></Data>\r\n'
'<Data Name="LockoutDuration"></Data>\r\n'
'<Data Name="PasswordProperties">耠-</Data>\r\n'
'<Data Name="MinPasswordLength">-</Data>\r\n'
'<Data Name="PasswordHistoryLength">-</Data>\r\n'
'<Data Name="MachineAccountQuota">-</Data>\r\n'
'<Data Name="MixedDomainMode">1</Data>\r\n'
'</EventData>',
"world", '<EventData xmlns="http://schemas.microsoft.com/win/2004/08/events/event">\r\n'
'<Data Name="DomainBehaviorVersion">876543</Data>\r\n'
'<Data Name="OemInformation">12345</Data>\r\n'
'</EventData>'
]
| extend parsed = parse_xml(xmlValue).EventData.Data
| mvexpand parsed
| summarize d = make_bag(pack(tostring(parsed['@Name']), parsed['#text'])) by someColumn
| evaluate bag_unpack(d)
此示例中使用的 operators/functions 的文档:
- 数据表运算符:https://docs.microsoft.com/en-us/azure/kusto/query/datatableoperator
- parse_xml 函数: https://docs.microsoft.com/en-us/azure/kusto/query/parse-xmlfunction
- mvexpand 运算符:https://docs.microsoft.com/en-us/azure/kusto/query/mvexpandoperator
- make_bag聚合函数:https://docs.microsoft.com/en-us/azure/kusto/query/make-bag-aggfunction
- 打包函数:https://docs.microsoft.com/en-us/azure/kusto/query/packfunction
- bag_unpack 插件:https://docs.microsoft.com/en-us/azure/kusto/query/bag-unpackplugin
我正在尝试将 Azure Logs (kusto) 中的 Windows 事件日志 xml 事件数据转换为列,因此给定 xml 中返回的 EventData 数组 parse_xml(),如何把它变成列?
我尝试了 mveexplode,它给了我行(系列),但后来我想把它们变成列,其中 col 名称是标签中的属性 "Name",值是文本 属性 .
Windows 事件日志 xml 下面供参考
<EventData xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<Data Name="DomainPolicyChanged">Password Policy</Data>
<Data Name="DomainName">XXX</Data>
<Data Name="DomainSid">S-1-5-21-....</Data>
<Data Name="SubjectUserSid">S-1-5-18</Data>
<Data Name="SubjectUserName">SRV-XX-001$</Data>
<Data Name="SubjectDomainName">DOMAIN</Data>
<Data Name="SubjectLogonId">0x3e7</Data>
<Data Name="PrivilegeList">-</Data>
<Data Name="MinPasswordAge"></Data>
<Data Name="MaxPasswordAge"></Data>
<Data Name="ForceLogoff"></Data>
<Data Name="LockoutThreshold">耠</Data>
<Data Name="LockoutObservationWindow"></Data>
<Data Name="LockoutDuration"></Data>
<Data Name="PasswordProperties">耠-</Data>
<Data Name="MinPasswordLength">-</Data>
<Data Name="PasswordHistoryLength">-</Data>
<Data Name="MachineAccountQuota">-</Data>
<Data Name="MixedDomainMode">1</Data>
<Data Name="DomainBehaviorVersion">8</Data>
<Data Name="OemInformation">12</Data>
</EventData>
以下方法可行 (取决于您实际计划查询数据的方式,可能会有更有效的方法 - 所以如果您可以共享示例查询,它可能会有所帮助)
datatable(someColumn:string, xmlValue:string)
["hello", '<EventData xmlns="http://schemas.microsoft.com/win/2004/08/events/event">\r\n'
'<Data Name="DomainBehaviorVersion">8</Data>\r\n'
'<Data Name="OemInformation">12</Data>\r\n'
'<Data Name="DomainPolicyChanged">Password Policy</Data>\r\n'
'<Data Name="DomainName">XXX</Data>\r\n'
'<Data Name="DomainSid">S-1-5-21-....</Data>\r\n'
'<Data Name="SubjectUserSid">S-1-5-18</Data>\r\n'
'<Data Name="SubjectUserName">SRV-XX-001$</Data>\r\n'
'<Data Name="SubjectDomainName">DOMAIN</Data>\r\n'
'<Data Name="SubjectLogonId">0x3e7</Data>\r\n'
'<Data Name="PrivilegeList">-</Data>\r\n'
'<Data Name="MinPasswordAge"></Data>\r\n'
'<Data Name="MaxPasswordAge"></Data>\r\n'
'<Data Name="ForceLogoff"></Data>\r\n'
'<Data Name="LockoutThreshold">耠</Data>\r\n'
'<Data Name="LockoutObservationWindow"></Data>\r\n'
'<Data Name="LockoutDuration"></Data>\r\n'
'<Data Name="PasswordProperties">耠-</Data>\r\n'
'<Data Name="MinPasswordLength">-</Data>\r\n'
'<Data Name="PasswordHistoryLength">-</Data>\r\n'
'<Data Name="MachineAccountQuota">-</Data>\r\n'
'<Data Name="MixedDomainMode">1</Data>\r\n'
'</EventData>',
"world", '<EventData xmlns="http://schemas.microsoft.com/win/2004/08/events/event">\r\n'
'<Data Name="DomainBehaviorVersion">876543</Data>\r\n'
'<Data Name="OemInformation">12345</Data>\r\n'
'</EventData>'
]
| extend parsed = parse_xml(xmlValue).EventData.Data
| mvexpand parsed
| summarize d = make_bag(pack(tostring(parsed['@Name']), parsed['#text'])) by someColumn
| evaluate bag_unpack(d)
此示例中使用的 operators/functions 的文档:
- 数据表运算符:https://docs.microsoft.com/en-us/azure/kusto/query/datatableoperator
- parse_xml 函数: https://docs.microsoft.com/en-us/azure/kusto/query/parse-xmlfunction
- mvexpand 运算符:https://docs.microsoft.com/en-us/azure/kusto/query/mvexpandoperator
- make_bag聚合函数:https://docs.microsoft.com/en-us/azure/kusto/query/make-bag-aggfunction
- 打包函数:https://docs.microsoft.com/en-us/azure/kusto/query/packfunction
- bag_unpack 插件:https://docs.microsoft.com/en-us/azure/kusto/query/bag-unpackplugin