是否可以在KQL中的iif子句中使用mv-expand?

问题描述 投票:0回答:1

我有一个名为 Data 的列,有时包含单个对象,有时包含对象数组,例如

{
  "field1": "data"
  "field2": "data"
}
... or
[
  {
    "field1": "data"
    "field2": "data"
  },
  {
    "field1": "data"
    "field2": "data"
  }
]

我只想在数据列中包含数组的行上使用 mv-expand 。这可能吗?我尝试了这个查询:

| extend DataLength = array_length(Data)
| extend Data = iif(DataLength == 1, mv-expand Data, Data)

但是失败了

语法错误:缺少表达式:如果关键字“mv-expand”是表达式的一部分,则需要将其括起来为 ['mv-expand']。",

我无法解决这个问题。我试过了

| extend DataLength = array_length(Data)
| extend Data = iif(DataLength == 1, ['mv-expand'] Data, Data)

但这只是“请求无效,无法执行。”,

kql azure-data-explorer
1个回答
0
投票

如果我正确理解你的问题,这样的事情会起作用吗? mv-expand 应该可以正常处理各种数据类型,即使它是单个长度数组。

let T = datatable(Key:int, Data:dynamic) [
1, dynamic(['data1']),
2, dynamic(['data1', 'data2']),
3, dynamic(['data1', 'data2', 'data3']),
4, 'data1'
];
T
//| where array_length(Data) > 1 //Comment line in or out for only Data colums with more than one entry
| mv-expand Data to typeof(string)
钥匙 数据
1 数据1
2 数据1
2 数据2
3 数据1
3 数据2
3 数据3
4 数据1
© www.soinside.com 2019 - 2024. All rights reserved.