如何在Azure Data Factory管道中直接转换JSON数据并导入Azure SQL表
嵌套JSON同步到Azure SQL数组错误解决方案
你遇到的数组错误基本是Lookup输出的嵌套结构没有正确定位到待遍历的数组节点,或者字段提取时没有处理数组类型的返回值导致的,可按照以下两种方案解决:
方案1:优化现有Lookup+ForEach配置
- Lookup组件调整:如果JSON外层是单对象包裹待遍历数组,开启「仅返回第一行」,后续用
@activity('<你的Lookup组件名称>').output.<数组节点名>作为ForEach的items参数;如果JSON根节点就是数组,关闭「仅返回第一行」,直接用@activity('<你的Lookup组件名称>').output.value作为ForEach的items输入。 - ForEach内部取值:按JSON层级写字段提取表达式,示例如下:
- Ergon_Businessunit_code取值:
@item().Ergon_Businessunit_code - KPL取值:
@item().KPL - Ergon_Functiegroep_code取值:
@item().Ergon_Functiegroep_code - Aantal取值:
@item().Aantal
如果对应字段本身是数组类型,加first()函数取有效值,示例:@first(item().Ergon_Businessunit_code)
- Ergon_Businessunit_code取值:
方案2:用Flatten+Copy Activity简化流程(更推荐,避免遍历出错)
- 新增Flatten组件,输入接JSON源数据集,在「展开」配置中选择你要遍历的嵌套数组节点
- 映射配置中直接绑定Ergon_Businessunit_code、KPL、Ergon_Functiegroep_code、Aantal四个字段的JSON路径
- Flatten输出直接对接Copy Activity的源,目标选Azure SQL表,自动对齐字段即可,无需嵌套遍历,性能更高也不会出现数组参数错误
操作参考示意图

内容的提问来源于stack exchange,提问作者Hennie
相关产品推荐
相关产品推荐

