如何使用Azure Data Factory将任意CSV转换为指定嵌套JSON数组?
Azure Data Factory 实现任意列CSV转指定JSON结构
需求说明
输入为任意列数的CSV文件,需转换为以下固定Schema的JSON:
{ "Data": [ ["value_1", "value_2"], ["value_3", "value_4"] ] }
限制:仅使用Azure Data Factory原生组件,禁止依赖Azure Functions等外部服务,排除Copy Data活动(仅支持固定列)和Data Flow(配置复杂、启动耗时)。
实现方案:Lookup + 变量 + ForEach 组合
1. 配置CSV数据集
- 创建CSV类型数据集,取消勾选"第一行作为标题",设置对应CSV的分隔符(默认逗号)。
2. Lookup活动读取CSV内容
- 添加Lookup活动,数据源选择上述CSV数据集,活动输出会将CSV所有行以对象数组形式返回,示例输出:
{ "value": [ {"Column_0": "value_1", "Column_1": "value_2"}, {"Column_0": "value_3", "Column_1": "value_4"} ] }
3. 初始化数组变量
- 在Pipeline中创建数组类型变量
dataArray,初始值设为[],用于存储转换后的二维数组。
4. ForEach活动遍历并转换每行
- 添加ForEach活动,迭代项设置为
@activity('LookupCSV').output.value(替换为你的Lookup活动名称)。 - 在ForEach内部添加Append Variable活动,将当前行的所有值提取为数组并追加到
dataArray,表达式为:
@values(item())
values()函数会自动提取对象的所有值并转为数组,适配任意列数场景。
5. 生成最终JSON结构
- 添加Set Variable活动,创建字符串类型变量
finalJson,赋值表达式:
@concat('{"Data": ', string(variables('dataArray')), '}')
该表达式会将dataArray转为JSON字符串并包裹到指定结构中。
6. 输出到存储(可选)
- 若需写入JSON文件,使用Copy Data活动:
- 源选择"Inline"数据集,内容设为
@variables('finalJson'); - 目标选择JSON数据集,设置为"Single file"模式,即可生成符合要求的JSON文件。
- 源选择"Inline"数据集,内容设为
内容的提问来源于stack exchange,提问作者Hennadii Sakhniuk
相关产品推荐
相关产品推荐

