azure-data-explorer - 如何在 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
}
]
解决方案
这是您可以遵循的方向(假设您实际上需要取回数组,而不是将数组中的每个元素都放在自己的行中。如果后者很好,请删除带有注释的行(// *
)
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 // *
推荐阅读
- jquery - JQuery - 事件委托 - 我的代码中发生了什么?
- flutter - 在 Dart/Flutter 中的嵌套地图内的列表中添加一个项目
- docker - docker run & docker-compose 使用环境变量运行命令
- javascript - 从字符串中获取数字并使用它们创建一个对象 javascript
- css - 如何在 CSS 中添加下划线、上划线、任意线?
- android - React Native 'yarn android' 失败,'Task :app:compileDebugJavaWithJavac FAILED' 和 'package org.unimodules.core.interfaces 不存在'
- swift - 变量重新分配导致“消息发送到解除分配的实例”
- javascript - 我正在尝试在标签上设置一个类名。问题是当我点击链接时页面刷新并且类被删除
- javascript - 如何在不使用 Selenium 和节点 js 刷新页面的情况下重新加载元素?
- php - 运行 laravel 项目 php artisan serve 时出现致命错误