如何在ADF数据流中调整JSON输出结构以满足需求
解决ADF数据流生成目标JSON结构的方法
步骤1:用逆透视(Unpivot)转换拆分属性字段
当前数据是扁平结构,先把catalogid、manufacturer、model这类属性字段转成键值对行数据:
- 添加逆透视转换并连接上游数据源。
- 逆透视设置:
- 保留
equipmentRefId作为透视键(分组依据)。 - 将
catalogid、manufacturer、model加入逆透视字段,设置逆透视键名称为attributeName,逆透视值名称为attributeValue。
转换后数据会变成每行对应一个属性:
equipmentRefId attributeName attributeValue MEA-26627 catalogid LITE MEA-26627 manufacturer 24.37 MEA-26627 model 85401 - 保留
步骤2:聚合生成attribute数组
用聚合转换把同一equipmentRefId的属性行合并为数组:
- 添加聚合转换连接逆透视输出。
- 设置分组依据为
equipmentRefId。 - 添加聚合列
attribute,使用表达式:
该表达式会将每个属性的键值对收集为一个数组。collect(struct(attributeName, attributeValue))
步骤3:构造目标嵌套结构
用派生列转换组装最终JSON结构:
- 添加派生列转换连接聚合输出。
- 创建新列
importEquipmentItem,使用表达式:
此表达式会生成目标要求的嵌套对象结构。struct( equipmentRefId = equipmentRefId, equipmentAttributes = struct( attribute = attribute ) )
步骤4:输出JSON文件
- 添加选择转换,仅保留
importEquipmentItem字段,移除冗余字段。 - 连接JSON数据集,在输出设置中:
- 选择单个文档(Single document),避免输出为数组结构。
- 确保JSON格式无额外数组包裹。
完成以上步骤后,生成的JSON结构将与目标结构一致。
内容的提问来源于stack exchange,提问作者Dark S
相关产品推荐
相关产品推荐

