如何在ForEach活动中筛选含CSV子项的ADLS文件夹并追加Item值?
实现ForEach遍历ADLS文件夹并筛选含CSV子项的目录
整体逻辑
通过ForEach活动遍历传入的数组Items,针对每个Item对应的参数化ADLS路径,先获取文件夹元数据;若该文件夹下存在.csv后缀的子项,就将当前Item值追加到指定数组变量中,供后续流程使用。
分步配置
1. 配置ForEach活动
- 选择ForEach活动类型,将Items属性绑定到传入的数组变量/参数,示例表达式:
@variables('YourArrayVariable') - 建议勾选Sequential执行选项,避免并行操作对目标数组变量造成写入冲突
2. ForEach内部活动编排
在ForEach活动内部,按顺序添加以下活动:
2.1 Metadata活动(获取文件夹元数据)
- 命名为
Get Folder Metadata - 关联指向ADLS的数据集,将数据集的路径设置为参数化路径,用当前遍历的Item填充,示例路径表达式:
@concat('/your/base/directory/', item()) - 在字段列表中勾选
childItems,用于获取文件夹下的所有子项信息
2.2 If Condition活动(判断是否存在.csv子项)
添加If Condition活动,使用以下表达式判断文件夹中是否包含.csv后缀的子项:
@greater(length(filter(activity('Get Folder Metadata').output.childItems, (child) => endsWith(child.name, '.csv'))), 0)
该表达式会过滤出所有后缀为.csv的子项,若结果长度大于0则判定为符合条件
2.3 Append Variable活动(追加符合条件的Item)
在If Condition的True分支中添加Append Variable活动:
- 选择预先定义好的数组类型变量
- 将值设置为
@item(),即当前ForEach遍历的Item值
附图说明
接收数组类型Items的ForEach活动界面:

ForEach活动内部的活动编排结构:

内容的提问来源于stack exchange,提问作者Boris
相关产品推荐
相关产品推荐

