我有一个名为 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)
但这只是“请求无效,无法执行。”,
如果我正确理解你的问题,这样的事情会起作用吗? 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 |