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

Azure Data Factory数据流:将Events对象拆分为单独行

解决Azure Data Flow中动态键对象展开问题

针对你遇到的动态键Events对象无法转数组展开的问题,可以通过以下步骤实现需求:

步骤1:添加派生列,将动态键对象转换为结构化数组

在Data Flow中添加派生列转换,创建一个新列(比如命名为EventArray),使用以下表达式将Events对象转换为包含time字段的事件数组:

mapArray(
    zip(mapKeys(Events), mapValues(Events)),
    (pair) => merge(pair[1], createMap('time', pair[0]))
)

表达式逻辑:

  • mapKeys(Events):提取Events的所有动态时间键,生成字符串数组
  • mapValues(Events):提取Events的所有事件属性对象,生成对象数组
  • zip(...):将时间键数组和事件对象数组按位置配对,得到[时间字符串, 事件对象]格式的数组
  • mapArray(...):遍历每个配对项,用merge把事件对象和time字段(对应时间键)合并,最终生成每个元素都包含完整事件属性的数组

步骤2:Flatten展开数组为多行

添加Flatten转换,将上一步生成的EventArray列设置为「Unroll by」列,数组中的每个元素会被展开为单独的一行数据。

步骤3:选择并整理输出字段

添加选择转换,保留需要的字段:id、展开后的time、GrossVolume、DipHeight、WaterHeight、IsManual,移除Events和EventArray这类中间列。

步骤4:写入目标Delta表

添加Sink转换,配置目标Delta表的连接信息与存储路径,将处理后的数据写入即可。

最终效果示例

处理后的数据格式与你要求的一致:

{
  "id": "20221230",
  "time": "2022-12-30T22:01:00",
  "GrossVolume": 16888.67,
  "DipHeight": 1562.28,
  "WaterHeight": 0,
  "IsManual": false
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:22:19