Как создать пользовательский объект вывода в Kusto

У меня есть массив, как показано ниже, в качестве одного из свойств для моего объекта. Я хотел бы извлечь определенные поля и вернуть его как массив в выводе. Например хочу только name а также storageAccountType должен быть возвращен, как показано ниже

Желаемый вывод

[
    {
        "name": "Data",
        "storageAccountType": "Standard_LRS"
    },
    {
        "name": "Disk2",
        "storageAccountType": "Standard_LRS"
    }
]

Входной массив

[
    {
        "name": "Data",
        "createOption": "Attach",
        "diskSizeGB": 10,
        "managedDisk": {
            "id": "/subscriptions/24ba3e4c-45e3-4d55-8132-6731cf25547f/resourceGroups/GREG/providers/Microsoft.Compute/disks/Data",
            "storageAccountType": "Standard_LRS"
        },
        "caching": "None",
        "toBeDetached": false,
        "lun": 0
    },
    {
        "name": "Disk2",
        "createOption": "Attach",
        "diskSizeGB": 10,
        "managedDisk": {
            "id": "/subscriptions/24ba3e4c-45e3-4d55-8132-6731cf25547f/resourceGroups/GREG/providers/Microsoft.Compute/disks/Disk2",
            "storageAccountType": "Standard_LRS"
        },
        "caching": "None",
        "toBeDetached": false,
        "lun": 1
    }
]

1 ответ

Решение

Вот направление, в котором вы могли бы следовать (предполагается, что вам действительно нужно возвращать массивы, а не иметь каждый элемент в массиве в отдельной строке. Если последний хорош, удалите строки с комментариями (// *)

datatable(some_value:string, d:dynamic) // just a sample data set with 2 records
[
    "hello", dynamic([
    {
        "name": "Data",
        "createOption": "Attach",
        "diskSizeGB": 10,
        "managedDisk": {
            "id": "/subscriptions/24ba3e4c-45e3-4d55-8132-6731cf25547f/resourceGroups/GREG/providers/Microsoft.Compute/disks/Data",
            "storageAccountType": "Standard_LRS"
        },
        "caching": "None",
        "toBeDetached": false,
        "lun": 0
    },
    {
        "name": "Disk2",
        "createOption": "Attach",
        "diskSizeGB": 10,
        "managedDisk": {
            "id": "/subscriptions/24ba3e4c-45e3-4d55-8132-6731cf25547f/resourceGroups/GREG/providers/Microsoft.Compute/disks/Disk2",
            "storageAccountType": "Standard_LRS"
        },
        "caching": "None",
        "toBeDetached": false,
        "lun": 1
    }
]), "world", dynamic([
    {
        "name": "Data3",
        "createOption": "Attach",
        "diskSizeGB": 10,
        "managedDisk": {
            "id": "/subscriptions/24ba3e4c-45e3-4d55-8132-6731cf25547f/resourceGroups/GREG/providers/Microsoft.Compute/disks/Data",
            "storageAccountType": "Standard_LRS"
        },
        "caching": "None",
        "toBeDetached": false,
        "lun": 0
    },
    {
        "name": "Disk23",
        "createOption": "Attach",
        "diskSizeGB": 10,
        "managedDisk": {
            "id": "/subscriptions/24ba3e4c-45e3-4d55-8132-6731cf25547f/resourceGroups/GREG/providers/Microsoft.Compute/disks/Disk2",
            "storageAccountType": "Standard_LRS"
        },
        "caching": "None",
        "toBeDetached": false,
        "lun": 1
    }
])
]
// --> answer starts here <--
| extend r = rand() // *
| mv-apply d on (   
    project d = pack("name", d.name, "storageAccountType", d.managedDisk.storageAccountType)
)
| summarize d = make_list(d) by r, some_value // *
| project-away r // *
Другие вопросы по тегам