Azure Data Factory:如何检查文件夹是否存在并判断后缀是否为*-imported
解决方案:Azure Data Factory中基于文件夹规则的布尔判断
针对Cost Management导出到存储账户的多层文件夹场景,无法用Validation活动实现需求的情况下,可通过Get Metadata + Filter + 变量判断的组合逻辑完成,步骤如下:
1. 用Get Metadata活动获取文件夹列表
配置一个Get Metadata活动,数据源指向存储账户的目标容器:
- 字段列表选择
Child Items,用于获取容器下所有子项(文件/文件夹) - 如果目标文件夹是多层嵌套结构,勾选数据源设置中的递归选项,确保能遍历到所有层级的文件夹
2. 用Filter活动筛选符合要求的文件夹
将Get Metadata的输出作为Filter活动的输入,设置筛选条件(多条件用and组合):
@and( equals(item().type, 'Folder'), not(endswith(item().name, '-imported')), matchesPattern(item().name, '^\d{4}-\d{2}-\d{2}-TO-\d{4}-\d{2}-\d{2}$') )
- 第一个条件:筛选出类型为文件夹的子项
- 第二个条件:排除名称以
-imported结尾的文件夹 - 第三个条件:匹配Cost Management导出的
FROM-TO日期格式文件夹(可根据实际日期格式调整正则表达式,比如^\d{8}-TO-\d{8}$对应YYYYMMDD-TO-YYYYMMDD格式)
3. 生成布尔判断结果
- 提前在流水线中初始化一个布尔变量(如
isValidFolderExists),默认值设为false - 添加Set Variable活动,将变量值设置为:
@greater(length(activity('Filter').output.Value), 0)
当筛选后的文件夹列表长度大于0时,变量值为true(存在符合要求的文件夹),否则为false
4. 根据布尔值执行分支逻辑
用If Condition活动判断@variables('isValidFolderExists'):
- 当值为
true时,执行后续业务操作(如CSV文件处理、复制等) - 当值为
false时,跳过操作或执行其他分支逻辑
内容的提问来源于stack exchange,提问作者Francesco Mantovani
相关产品推荐
相关产品推荐

