0

我最近开始使用 Azure Resource Graph Explorer 来获取资源信息。KQL 是我一直在研究的新事物,我需要帮助的一个问题是将字典数组操作为字符串值数组的一种方法。举个例子:

考虑以下数据

{
  "customerId": "201",
  "orders": [
    {
      "dept": "/packaging/fruits"
    },
    {
      "dept": "/packaging/vegetables"
    }
  ]
}

使用以下查询:

Customers
| where customerId == 201
| project customerId, orders

结果如下: 第一个结果

我的问题是,如何修改查询以产生以下结果: 期望的结果

试图通过 KQL 文档,但似乎无法找到实现上述目标的正确方法。任何帮助将非常感激!

4

1 回答 1

1

在 Kusto 中,您可以使用mv-apply

datatable(customerId:int, orders:dynamic)
[
  201, dynamic([
    {
      "dept": "/packaging/fruits"
    },
    {
      "dept": "/packaging/vegetables"
    }
  ]),
  201, 
  dynamic([
    {
      "dept": "/packaging2/fruits2"
    },
    {
      "dept": "/packaging2/vegetables2"
    }
  ])
]
| where customerId == 201
| mv-apply orders on (
    summarize orders = make_list(orders.dept)
)
客户ID 订单
201 [
“/包装/水果”,
“/包装/蔬菜”
]
201 [
“/包装2/水果2”,
“/包装2/蔬菜2”
]

在 ARG 中,mv-apply不支持,因此您可以使用mv-expand

datatable(customerId:int, orders:dynamic)
[
  201, dynamic([
    {
      "dept": "/packaging/fruits"
    },
    {
      "dept": "/packaging/vegetables"
    }
  ]),
  201, 
  dynamic([
    {
      "dept": "/packaging2/fruits2"
    },
    {
      "dept": "/packaging2/vegetables2"
    }
  ])
]
| where customerId == 201
| extend rn = rand()
| mv-expand orders
| summarize orders = make_list(orders.dept) by rn, customerId
| project-away rn
客户ID 订单
201 [
“/包装/水果”,
“/包装/蔬菜”
]
201 [
“/包装2/水果2”,
“/包装2/蔬菜2”
]
于 2021-10-04T16:16:53.230 回答