Hi David, One way but its not at all scalable (and could be inaccurate) is to find and map an entity
SecurityIncident
| extend Alerts = extract("\\[(.*?)\\]", 1, tostring(AlertIds))
| mv-expand AlertIds to typeof(string), Labels to typeof(string), Comments to typeof(string), AdditionalData to typeof(string)
| join kind=leftouter
(
SecurityAlert
) on $left.AlertIds == $right.SystemAlertId
| summarize AlertCount=dcount(AlertIds),
arg_max
(
TimeGenerated, *
)
by IncidentNumber
// start to map to individual entities, as an example I'm using IP
| mv-expand todynamic(Entities)
| where Entities.Type == "ip"
| extend ip_ = trim(@"[^\w]+",tostring(Entities.Address))
// now join to the IP in the Evidence Table
| join //kind=inner
(
AlertEvidence
| where EntityType =~ "Ip"
| extend ip_ = tostring(RemoteIP)
) on ip_