Synapse Pipeline嵌套JSON人员列NULL及扁平化输出方案咨询
Synapse Pipeline处理REST API嵌套JSON扁平化方案
问题原因
复制活动的「扁平化层级」仅支持处理嵌套对象结构(如{ "contract": { "id": "123" } }),无法自动展开数组类型的嵌套字段(如{ "Personnel": [{}, {}] }),因此会将整个Personnel数组视为单个字段,而CSV不支持数组类型,最终返回NULL。
实现方案:用Data Flow替代复制活动处理数组展开
步骤1:创建Data Flow并配置REST源
- 在Synapse Pipeline中新建数据流动(Data Flow)
- 添加REST数据源,配置API连接信息、请求头、分页规则(如果需要),确保源能正确读取包含Personnel数组的JSON数据
- 调整源的JSON读取设置:若返回的是包含多个合同的数组,将「Document form」设为
Array of documents;若返回单个对象嵌套数组,按需调整
步骤2:添加「展开(Flatten)」转换处理Personnel数组
- 在REST源之后添加Flatten转换
- 在转换设置中,选择
Personnel作为「要展开的数组」 - 设置展开模式为「每个数组项生成一行」,此时每个合同的每一名人员会生成独立行,原合同的字段(如合同ID、合同名称等)会自动关联到对应人员行
步骤3:配置CSV Sink并运行
- 添加CSV类型的Sink,配置目标存储账户、文件路径、分隔符等参数
- 映射展开后的所有字段(合同字段+人员字段)到CSV列
- 运行Data Flow,验证输出CSV中每个合同的人员数据已正常扁平化,无NULL值
额外处理:空数组场景
如果部分合同的Personnel数组为空,可添加派生列转换,用表达式iif(isEmpty(Personnel), createArray({ "默认字段": "默认值" }), Personnel)生成默认人员对象,避免空合同无输出行
内容的提问来源于stack exchange,提问作者Ivan Nel
相关产品推荐
相关产品推荐

