首页 > 解决方案 > Azure Resource Graph Explorer - 查询 Azure VM 描述、OS、sku - 我需要加入列(OS 和 sku 合二为一)

问题描述

我有一个问题。我想知道如何将两列合二为一。

我想将“OS”和“sku”列合并为一个名为“OS”的列

这是我的 KQL: Azure 资源图上的 Kusto 查询

Resources
| where type == "microsoft.compute/virtualmachines"
| extend OS = properties.storageProfile.imageReference.offer
| extend sku = properties.storageProfile.imageReference.sku
| project OS, sku, name, nic = (properties.networkProfile.networkInterfaces)
| mvexpand nic
| project OS, sku, name, nic_id = tostring(nic.id)
| join (
    Resources 
    | where type == "microsoft.network/networkinterfaces" 
    | project nic_id = tostring(id), properties) on nic_id
    | mvexpand ipconfig = (properties.ipConfigurations)
    | extend subnet_resource_id = split(tostring(ipconfig.properties.subnet.id), '/'), ipAddress = ipconfig.properties.privateIPAddress
    | order by name desc
| project vmName=(name), OS, sku, vnetName=subnet_resource_id[8], subnetName=subnet_resource_id[10], ipAddress

这是我的结果:

结果图像

我需要这样:

所需的输出 img

谁能帮帮我,非常感谢。

我尝试使用“联合”运算符,但无法使其工作。

我使用了这些参考链接:

Azure 文档链接 1

Azure 文档链接 2

Azure 文档链接 3

标签: azuregraphkql

解决方案


如果你想组合两个字符串 - 你可以使用 strcat() 函数:

 Resources
| where type == "microsoft.compute/virtualmachines"
| extend OS = properties.storageProfile.imageReference.offer
| extend sku = properties.storageProfile.imageReference.sku
| project OS, sku, name, nic = (properties.networkProfile.networkInterfaces)
| mvexpand nic
| project OS, sku, name, nic_id = tostring(nic.id)
| join (
    Resources 
    | where type == "microsoft.network/networkinterfaces" 
    | project nic_id = tostring(id), properties) on nic_id
    | mvexpand ipconfig = (properties.ipConfigurations)
    | extend subnet_resource_id = split(tostring(ipconfig.properties.subnet.id), '/'), ipAddress = ipconfig.properties.privateIPAddress
    | order by name desc
| project vmName=(name), OS = strcat(OS, ' ', sku), vnetName=subnet_resource_id[8], subnetName=subnet_resource_id[10], ipAddress

推荐阅读