假设 Data Lake 上有个test的文件夹,有如下文件
目标:使用Azure Data Factory的Pipeline获取这个目录下的文件名列表,并删除掉以"ETC"开头的文件。
步骤:
1. 需要在Linked services中新建一个能连接到Data Lake的连接
2. 在Datasets里面创建一个数据集
Datasets -> New dataset -> Azure Data Lake Storage Gen2 -> DelimitedText
Linked service 选择上一步创建的连接
添加一个参数
设置好File path:
也可以将文件路径作为参数传入
3. 新建Pipeline, 将Get Metadata 拖拽出来,按如下设置
4. 添加ForEach
表达式:@activity('Get Metadata1').output.childItems
这里就可以拿到文件名列表
5. 点击ForEach活动的编辑按钮进入它里面, 添加If Condition活动
输入表达式:@startswith(item().name,'ETC')
这里判断是否是ETC文件名开头
6. 点击If Condition 中true部分的编辑按钮进入
7. 添加Delete活动,按以下设置
如果If Condition条件为true, 即文件名以ETC开头,将被删除,这里将Recursively的勾选去掉,是指不删除目录,也就是不删除test文件夹
可以把这里去掉,这样就不用写log,默认是勾选的,勾选状态下需要选择log生成的路径,看需要吧
这样就完成了。
如果是根据文件更新时间去删除,就不用去获取文件名列表,只要提供正确的路径和时间即可,文件更新时间可以直接给以下这两个地方用表达式来设置。