A cloud-native SIEM solution that provides intelligent security analytics and threat detection across systems
Use summarize to aggregate the rows that share the same TimeGenerated, then project a single dynamic column that combines the three fields into an array of objects.
Assuming the three columns are Target, OldValue, and NewValue, and each row with the same TimeGenerated has one set of values:
YourTable
| summarize AuditChange = make_list(
pack(
"Target", Target,
"OldValue", OldValue,
"NewValue", NewValue
)
) by TimeGenerated
| project TimeGenerated, AuditChange
Result shape:
-
TimeGenerated: one row per timestamp -
AuditChange: dynamic array like[{"Target":"...","OldValue":"...","NewValue":"..."}, ...]
If there is only ever one row per TimeGenerated and you just want a single object instead of an array, use make_bag() instead of make_list() and adjust the pack() accordingly.
References: