如何在ADF中使用通配符匹配文件名配置If条件活动
ADF管道If条件活动文件名匹配配置方法
前置检查
首先确认你使用的Get Metadata活动已经在「字段列表」中勾选了Child items选项,确保输出结果包含路径下所有文件/文件夹的名称、类型信息。你贴出的输出存在JSON格式书写错误,ADF实际返回的childItems是标准结构的对象数组,每个元素自带name(名称)、type(类型,值为File/Folder)属性,不影响后续逻辑配置。
If条件活动配置
直接在If条件活动的表达式输入框中填入以下表达式即可,注意把表达式里的你的Get Metadata活动名称替换成你管道里实际的Get Metadata活动命名:
@greater(length(filter(activity('你的Get Metadata活动名称').output.childItems, @or(contains(item().name, 'qbx_abc'), contains(item().name, 'data_new'), equals(item().type, 'File')))),0)
表达式逻辑说明
- 用
filter()函数遍历Get Metadata返回的所有子项,筛选时同时校验规则:项类型为文件(排除同名文件夹干扰),且文件名满足「包含qbx_abc」「包含data_new」两个条件的任意一个就算匹配 - 用
length()统计筛选后符合规则的文件总数 - 用
greater()判断总数是否大于0,只要存在至少1个符合规则的文件,条件就返回true,流程自动进入If活动的True分支,也就是你需要的下一执行阶段。
特殊场景适配
如果你是在ForEach遍历单个文件的循环内做判断,不需要遍历整个文件列表,直接用简化版表达式即可:
@or(contains(item().name, 'qbx_abc'), contains(item().name, 'data_new'))
补充说明:如果需要做严格大小写匹配,给
contains()函数传入第三个参数true即可,比如contains(item().name, 'qbx_abc', true),默认配置下ADF的字符串匹配不区分大小写。
内容的提问来源于stack exchange,提问作者harshith
相关产品推荐
相关产品推荐

