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

如何在Azure Data Factory数据流中转换Log Analytics层级数据格式?

在ADF数据流中实现Log Analytics源格式到目标格式的转换

问题场景

需将同一Log Analytics工作区内的表A数据复制到表B,使用Azure Data Factory (ADF) Data Flow处理时,无法完成从嵌套结构的源格式到平键值对目标格式的转换。

源数据格式示例

[
  {
    "tables": [
      {
        "name": "PrimaryResult",
        "columns": [
          {"name": "TimeGenerated", "type": "datetime"},
          {"name": "day_of_occurrence", "type": "datetime"},
          {"name": "request_id", "type": "string"},
          // 其余列省略
        ],
        "rows": [
          [
            "2024-05-06T00:00:00Z",
            "2024-05-06T00:00:00Z",
            "",
            // 其余字段值省略
          ]
        ]
      }
    ]
  }
]

目标数据格式示例

[
{
"TimeGenerated":"2024-05-06T03:59:02.9499434Z",
"day_of_occurrence":"2024-05-06T03:59:02.9499434Z",
"request_id":"dfasdsad",
// 其余键值对省略
},
// 其余对象省略
]

解决步骤

使用ADF Data Flow的以下组件依次处理:

  1. 展开嵌套结构
    添加**展开(Flatten)**组件,先展开顶层的tables数组,再展开tables.rows数组,将每一行数据拆分为单独的数据流行,同时保留tables.columns字段用于后续映射。

  2. 生成键值对数组
    添加**派生列(Derived Column)**组件,创建新字段(比如命名为keyValuePairs),使用表达式将列名数组与行值数组配对:

    zip(columns.name, rows)
    

    该表达式会生成类似[["TimeGenerated", "2024-05-06T00:00:00Z"], ["request_id", ""]]的键值对数组。

  3. 转换为JSON对象
    再添加一个派生列组件,创建新字段(比如命名为targetObject),将键值对数组转换为目标格式的JSON对象:

    fromKeyValuePairs(zip(columns.name, rows))
    

    此步骤会直接生成{"TimeGenerated":"2024-05-06T00:00:00Z", "request_id":""}格式的对象。

  4. 清理冗余字段
    添加**选择(Select)**组件,仅保留转换后的targetObject字段,移除原有的columns、rows、tables等嵌套字段。

  5. 输出到目标表
    将数据流输出到Log Analytics的目标表B,确保输出设置为JSON数组格式,匹配目标接收要求。

注意事项

  • 确保columns数组的元素数量与rows数组的元素数量完全对应,避免映射错位
  • 数值类型(real、int)会被ADF自动保留原有类型,无需额外转换
  • 若存在多张表,可在展开前添加过滤条件,仅处理name为PrimaryResult的目标表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:34:58