如何在Azure Data Factory/Synapse中扁平化多维数组并提取email
在Azure Data Factory/Synapse中提取多维数组中的email字段生成CSV
方法一:数据流(Data Flow)实现(推荐)
针对多维数组结构,正确配置Flatten活动即可完成解析:
- 配置源数据集:指向目标JSON文件,在源设置的
JSON path中填入$.input.values,直接定位到多维数组的根节点 - 添加第一层Flatten活动:在
Unroll by选项中选择最外层数组字段,将第一层数组展开为单条记录 - 添加第二层Flatten活动:针对展开后的子数组字段,再次在
Unroll by中选择该子数组,完成第二层数组的展开,此时每个包含email的对象会成为独立行 - 添加Select活动:仅保留
email字段,删除其他无关列 - 配置CSV接收器:设置输出路径,开启
First row as header(如需表头),完成输出
方法二:Lookup活动结合复制活动实现
适合小数据量场景,步骤如下:
- 添加Lookup活动:源指向JSON文件,读取完整的JSON内容
- 解析多维数组:在后续活动的表达式中,用嵌套遍历提取所有email字段,示例表达式:
@concat('"email"', '\n', join(flatten(foreach(item(activity('Lookup').output.value[0].input.values), foreach(item(item()), if(contains(item(), 'email'), item().email, '')))), '\n')) - 写入CSV:添加复制活动,源选择
Inline dataset,将上述表达式结果作为输入内容;接收器选择CSV数据集,设置输出路径即可
注意事项
- 若存在空email记录,可在数据流中添加Filter活动,过滤掉
email为空的行 - 数据流方法支持大数据量处理,性能优于Lookup方案,优先推荐
内容的提问来源于stack exchange,提问作者user31502762
相关产品推荐
相关产品推荐

