You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在KQL的iif子句中使用mv-expand?处理混合结构Data列

如何仅对包含数组的列行执行mv-expand操作

你的需求可以通过拆分数据分别处理再合并的方式实现,因为mv-expand是查询运算符,不能嵌套在iif这类表达式函数里使用。

正确的查询写法

你可以把数据分成两组:一组是Data列为数组的行,执行mv-expand;另一组是Data列为单个对象的行,保持原样,最后用union合并结果:

// 替换成你的表名
your_table_name
// 筛选出Data为数组的行并展开
| where gettype(Data) == "dynamic[]"
| mv-expand Data
// 合并非数组的行
union (
    your_table_name
    | where gettype(Data) != "dynamic[]"
)

或者用array_length判断(单个对象调用array_length会返回null):

your_table_name
| where array_length(Data) != null
| mv-expand Data
union (
    your_table_name
    | where array_length(Data) == null
)

为什么你的之前写法报错

mv-expand是用来调整结果集结构的查询运算符,不是用来计算字段值的函数,所以不能作为iif的参数传递,这就是你之前尝试两种写法都失败的原因。

你的原始数据示例

// 单个对象的情况
{
  "field1": "data",
  "field2": "data"
}

// 数组的情况
[
  {
    "field1": "data",
    "field2": "data"
  },
  {
    "field1": "data",
    "field2": "data"
  }
]

内容的提问来源于stack exchange,提问作者Ville

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 05:20:21