ADF管道分隔文件首行格式校验与错误处理方案咨询
实现ADF中竖线分隔TXT文件的首行格式校验与错误处理
整体思路
在ForEach循环内前置校验逻辑,先判断文件首行是否包含竖线分隔符,校验通过才执行Data Flow流程;不通过则触发错误标记,并将文件移至拒绝文件夹。
具体实现步骤
1. 读取文件首行内容
在ForEach循环内添加Lookup活动:
- 数据源选择目标TXT数据集,在数据集的「连接」选项卡中设置「行数」为1,确保仅读取文件第一行
- 临时调整数据集的分隔符设置(比如设为任意字符),避免因格式问题直接触发Lookup活动报错
2. 校验首行格式
添加If Condition活动,基于Lookup返回的结果判断:
- 条件表达式:
contains(activity('LookupFirstRow').output.firstRow['Prop_0'], '|')
(注:Prop_0是Lookup读取无表头行时的默认列名;若数据集临时禁用了「首行为表头」,直接用这个列名即可) - 条件为True时:执行后续的Data Flow活动
- 条件为False时:进入错误处理分支
3. 错误处理:移动坏文件
在If Condition的False分支中添加两个活动:
- Fail活动:自定义错误消息,例如
concat('坏文件:', items('ForEach'), ' 首行无竖线分隔符'),标记该文件处理失败 - Copy活动:
- 源:通过
items('ForEach')指定当前遍历的文件路径 - 目标:指向拒绝文件夹的数据集
- 可选:复制完成后添加Delete活动删除原文件,或保留原文件(按需选择)
- 源:通过
4. 恢复Data Flow数据源配置
确保Data Flow的源数据集恢复正确的竖线分隔符设置,同时保持「漂移架构」开启,正常处理校验通过的文件。
5. 可选:记录错误日志
若需要留存坏文件信息,可在Fail活动前添加SQL活动或Web活动,将坏文件路径、错误原因写入日志表,方便后续排查。
内容的提问来源于stack exchange,提问作者Sarah
相关产品推荐
相关产品推荐

