使用ADF验证SFTP中两个文件是否存在的异常问题排查
排查SFTP文件存在验证逻辑异常的问题
以下是几个关键排查方向,按优先级逐一验证:
1. 检查Get Metadata活动配置
- 若验证单个文件,确认活动的目标路径是具体文件路径而非文件夹路径,且字段列表勾选了
exists;若检查文件夹下的文件,需勾选childItems来获取子文件列表。 - 若同时验证两个文件,建议为每个文件单独配置Get Metadata活动,避免单活动查文件夹后筛选逻辑出错。
2. 校验If Condition表达式正确性
- 若用两个独立的Get Metadata活动(比如
Check_XLSX和Check_PDF),正确表达式应为:
注意不要写错活动名称或@and(equals(activity('Check_XLSX').output.exists, true), equals(activity('Check_PDF').output.exists, true))exists字段(比如误写为exist),可查看活动运行日志,确认exists返回值确实为true。 - 若通过文件夹的
childItems判断,需确保文件名完全匹配(含后缀),示例表达式:@and(contains(activity('Check_Folder').output.childItems, 'report.xlsx'), contains(activity('Check_Folder').output.childItems, 'report.pdf'))
3. 确认文件路径准确性
- 检查SFTP路径是否存在拼写错误、多余斜杠(比如
/sftp/data/和/sftp/data可能被服务器视为不同路径)。 - 确认文件确实在目标文件夹下,Get Metadata默认不会递归查询子目录。
4. 排查文件名大小写问题
- 基于Linux的SFTP服务器区分大小写,比如
Report.XLSX和report.xlsx会被视为不同文件,核对实际文件名与表达式中的写法是否完全一致。
5. 验证SFTP权限与连接
- 确认Data Factory使用的SFTP账号拥有目标文件夹的读取权限,权限不足可能导致
exists返回错误值。 - 查看活动运行日志,是否存在隐藏的权限报错(部分情况下报错不会终止流程,但会导致输出异常)。
6. 检查活动执行顺序与依赖
- 确保Get Metadata活动在If Condition之前执行,且If Condition正确依赖了Get Metadata的输出。若依赖配置错误,可能会使用缓存值或空值进行判断。
内容的提问来源于stack exchange,提问作者kimchigirl
相关产品推荐
相关产品推荐

