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

如何在Azure Synapse管道中扁平化带1:M映射的嵌套数组JSON

在Azure Synapse Data Flow中按索引扁平化嵌套数组(1:M映射)

你的问题出在单独展开timestamps和values数组时产生了笛卡尔积,而实际需要这两个数组按索引一一对应(即第i个timestamp对应第i个value)。以下是具体实现步骤:

操作步骤

  • 步骤1:展开基础层级
    通过两次Unroll活动依次展开result和data数组,得到包含dimensions(单元素数组)、timestamps(数组)、values(数组)的行数据。

  • 步骤2:生成索引序列
    添加Derived Column活动,创建名为indexes的新列,表达式为:

    range(0, size(timestamps))
    

    该表达式会生成从0到数组长度-1的整数数组,比如timestamps长度为4时,indexes的值为[0,1,2,3]。

  • 步骤3:展开索引数组
    添加Unroll活动,选择展开indexes列,此时每一行会被拆分为与数组长度相等的行数,每行对应一个索引值。

  • 步骤4:按索引提取对应值
    再次添加Derived Column活动,替换原有列:

    • 替换timestamps列,表达式:timestamps[indexes]
    • 替换values列,表达式:values[indexes]
    • 若要将dimensions从数组转为字符串,表达式:dimensions[0]
  • 步骤5:清理冗余列
    使用Select活动,只保留dimensions、timestamps、values这三列,移除indexes、原数组列等冗余数据。

完成以上步骤后,输出结果就会和你期望的一致,每个timestamp对应同索引的value,不会产生笛卡尔积的冗余行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 21:35:04