如何在ADF中将API返回的CSV字符串提取为Blob存储的CSV文件?
解决ADF中API返回的CSV字符串转正常CSV文件的问题
问题原因
你之前生成单行CSV的核心问题是:API返回的results字段是完整的CSV格式字符串(包含表头和多行数据,用\n分隔),但ADF复杂映射将其当作单个字符串值处理,没有按换行符拆分成行,导致输出的CSV只有一行,无法被正确解析。
推荐解决方案:使用ADF数据流转换
步骤1:配置数据源
创建Blob存储数据集,指向保存API返回JSON的文件,格式选择JSON,确保能读取到results字段。
步骤2:派生列拆分CSV字符串
在数据流中添加「派生列」转换,新增列csv_rows,使用表达式:
split(results, '\n')
该表达式会把整个CSV字符串按换行符拆分成数组,每个元素对应一行数据(包含表头)。
步骤3:拆分数组为多行
添加「拆分数组」转换,将csv_rows数组作为拆分对象,把数组中的每个元素拆分成单独的数据行。
步骤4:处理表头(可选)
如果后续要导入SQL表,需要过滤掉表头行,可以添加「筛选行」转换,使用表达式排除表头:
!startswith(currentRow, 'Customer Name')
步骤5:配置目标CSV数据集
创建Blob存储目标数据集,格式选择CSV,配置关键参数:
- 分隔符:
, - 引号字符:
" - 第一行作为表头:根据需求勾选(保留表头行则勾选)
运行数据流后,Blob存储中会生成每行对应一条数据的标准CSV文件,可直接被ADF读取并导入SQL表。
备选方案:复制活动结合自定义查询(简单场景适用)
若不想使用数据流,可在复制活动中直接处理:
- 源选择HTTP链接服务,在「源」设置中用JSON路径
$.results提取CSV字符串。 - 在「映射」的高级模式中,添加映射并使用
split()函数拆分字符串,再指定拆分后的数组为集合引用。不过这种方式灵活性较低,优先推荐数据流方案。
内容的提问来源于stack exchange,提问作者Durassel
相关产品推荐
相关产品推荐

