如何通过ADF删除Azure Gen2数据湖中超过5天的文件夹
解决方案:ADF删除数据湖中超期快照文件夹
步骤1:获取目标目录下的所有子项
- 创建Get Metadata活动,配置数据集指向路径
snapshot/tablename/ - 在活动的
Field list中勾选Child items,确保能获取该目录下的所有文件和文件夹
步骤2:筛选超期文件夹
- 添加Filter活动,将
Items设置为@activity('Get Metadata').output.childItems - 设置筛选条件为:
逻辑说明:先筛选出类型为文件夹的项,再将文件夹名称(@and(equals(item().type, 'Folder'), lessThan(parseDateTime(item().name, 'yyyyMMddHHmmss'), addDays(utcNow(), -5)))yyyyMMddHHmmss格式)转换为UTC时间,判断是否早于当前UTC时间前5天。
步骤3:批量删除超期文件夹
- 添加ForEach活动,将
Items设置为@activity('Filter').output.value - 在ForEach循环内添加Delete活动:
- 配置数据集的动态路径为
@concat('snapshot/tablename/', item().name) - 将Delete活动的
Delete behavior设置为Delete recursively,确保删除文件夹及其下所有嵌套文件/子文件夹
- 配置数据集的动态路径为
关键排查点
- 验证Get Metadata输出:查看运行日志,确认
childItems中包含目标文件夹 - 日期格式匹配:确保
parseDateTime的格式字符串yyyyMMddHHmmss与文件夹名称的时间格式完全一致 - 权限检查:ADF服务主体需拥有数据湖存储账户的
Storage Blob Data Contributor(或更高)权限,确保能执行删除操作 - 数据集配置:若使用ADLS Gen2,Linked Service需正确配置托管标识或密钥,路径动态表达式无语法错误
内容的提问来源于stack exchange,提问作者Greencolor
相关产品推荐
相关产品推荐

