Azure Data Factory:Copy Data任务扁平数据集转JSON的Sink映射问题
解决Azure Data Factory中扁平CSV转嵌套JSON的映射问题
核心说明
Copy Data任务仅支持扁平结构的直接映射,无法直接生成嵌套JSON。必须先通过**数据流(Data Flow)**完成数据的分组聚合转换,再输出为目标JSON格式。
具体操作步骤
- 创建数据流并接入源数据:新建数据流,添加CSV源数据集指向你的扁平文件,确认
State、City、Zip三列被正确识别。 - 添加聚合转换实现嵌套:
- 插入**聚合(Aggregate)**转换,在「分组依据」中选择
State字段,按州分组。 - 在聚合列配置中,创建名为
City的数组列,使用collect()函数将每组内的City和Zip打包为对象,表达式如下:
此操作会将同一州下的所有城市-邮编组合,打包为数组嵌套在对应State条目下。collect( struct( City as city, Zip as zip ) )
- 插入**聚合(Aggregate)**转换,在「分组依据」中选择
- 配置JSON接收器输出:添加JSON类型的接收器,设置输出路径和数据集。在接收器设置中,确认文件格式为JSON,且输出为数组结构(匹配目标JSON的外层数组要求)。
替代方案(若坚持用Copy Data任务)
如果必须使用Copy Data任务,需先将CSV数据导入临时数据库表(如Azure SQL DB),然后通过SQL查询实现分组聚合生成嵌套结构,再以查询结果作为Copy Data的源进行输出。但此步骤繁琐,数据流方案更高效直接。
注意点
- 注意字段名大小写匹配:目标JSON中
city为小写,需在struct()函数里明确映射(如City as city)。 - 数据流调试时,使用「数据预览」功能确认聚合后的结构是否符合预期,再正式运行。
内容的提问来源于stack exchange,提问作者Jesse O
相关产品推荐
相关产品推荐

