Обозреватель графиков ресурсов KQL / Azure: объединение значений из нескольких записей

#azure-data-explorer #kql #azure-resource-graph

Вопрос:

Я пытаюсь извлечь все общедоступные IP-адреса и полные доменные имена, настроенные для набора балансировщиков нагрузки, в обозревателе диаграмм ресурсов azure. Я получаю все необходимые данные с помощью следующего запроса:

 Resources
| where type =~ 'Microsoft.Network/loadBalancers'
| where subscriptionId =~ '11111111-2222-3333-4444-555555555555'
| where resourceGroup =~ 'resource-group-name'
| mv-expand ipConfig=properties.frontendIPConfigurations
| project name, publicIpId = tostring(ipConfig.properties.publicIPAddress.id)
| join kind=leftouter (
    Resources
    | where type =~ 'microsoft.network/publicipaddresses'
    | project publicIpId = id, publicIpAddress = tostring(properties.ipAddress), fqdn = tostring(properties.dnsSettings.fqdn)
)
on publicIpId
| summarize by name, publicIpAddress, fqdn
 

Но результат в виде:

 name              publicIpAddress       fqdn
outbound-lb       x.y.z.1               a domain
frontend-lb       x.y.z.2               another domain
frontend-lb       x.y.z.3               third domain
services-lb       x.y.z.4               fourth domain
 

и что мне нужно, так это:

 name              publicIpAddress       fqdn
outbound-lb       x.y.z.1               a domain
frontend-lb       x.y.z.2, x.y.z.3      another domain, third domain
services-lb       x.y.z.4               fourth domain
 

Я смотрел на summarize make_list() функцию, но мне не удалось получить нужный результат!

Ответ №1:

вы могли бы попробовать заменить это:

 | summarize by name, publicIpAddress, fqdn
 

с этим:

 | summarize publicIpAddress = strcat_array(make_set(publicIpAddress), ", "), 
            fqdn = strcat_array(make_set(fqdn), ", ")
         by name
 

Комментарии:

1. Большое спасибо за ваш быстрый ответ! Я новичок в KQL и обозревателе ресурсов Azure и потратил на это довольно много времени, не добившись никакого прогресса! Теперь это работает!