Azure Data Factory数据流读取Blob CSV遇字段内换行致无效记录的解决方法
解决Azure Data Factory数据流中CSV字段内换行导致的格式异常问题
方案1:启用CSV数据源的引用字符处理
- 字段内换行引发拆分的核心原因是未用引用字符包裹含特殊格式的字段。在ADF数据流的CSV数据源配置里,找到Quote character选项,设置为双引号
"。ADF会自动识别被双引号包裹的内容为单个字段,即便内部有换行也不会拆分记录。 - 如果原始CSV未给含换行的字段加引号,需先预处理:可以用ADF的Copy活动配合自定义分隔规则,或通过Azure Functions/Logic Apps批量遍历文件,给包含换行的字段前后添加双引号。
方案2:在数据流中合并已拆分的错误记录
若已经出现拆分后的无效行,可通过以下步骤修复:
- 添加派生列活动,用表达式判断当前行是否为不完整记录(比如检测字段数量是否匹配表头列数,或判断关键字段是否为空)。
- 使用窗口函数
lag()获取上一行内容,将当前行的字段拼接到上一行对应字段中。 - 过滤掉已被合并的无效行。
示例表达式(假设col3是含换行的字段,错误行的col1为空):
iNull(col1, lag(col3) + '\n' + col3, col3)
方案3:替换HTML换行标记
如果你的示例中是<br />这类HTML换行符而非实际换行符\n,直接在派生列中替换即可:
replace(col3, '<br />', ' ')
根据业务需求,也可替换为其他合法分隔符,避免字段被误拆分。
方案4:利用Schema漂移处理字段异常
开启数据源的Schema drift选项,允许ADF自动检测字段变化。后续通过选择活动重新映射正确字段,或用聚合活动按唯一标识(比如col1)合并拆分的字段内容。
内容的提问来源于stack exchange,提问作者sxc758462
相关产品推荐
相关产品推荐

