使用ADF获取ADLS Gen2中按时间戳命名的最新文件夹实现方法
仅使用Azure Data Factory(ADF)获取ADLS Gen2下最新时间戳文件夹的实现步骤
前提:已提前在ADF中配置好指向目标ADLS Gen2存储账户的链接服务,且时间戳文件夹命名格式为yyyyMMddHHmmss这类高位到低位的时间格式(年>月>日>时>分>秒)。
步骤1:配置获取子文件夹的元数据活动
- 在ADF管道中拖入获取元数据活动,命名为
GetChildFolders - 活动关联的数据集选择指向ADLS Gen2
RootFolder路径的数据集 - 在活动的「字段列表」配置项中,添加
子项(Child Items)属性,运行后该活动会输出RootFolder下所有文件、文件夹的名称与类型列表
步骤2:过滤保留纯文件夹对象(可选)
如果RootFolder下可能存在非文件夹对象,增加这一步过滤:
- 拖入过滤活动,与
GetChildFolders活动建立成功依赖连接 - 过滤的「项目」输入填入表达式:
@activity('GetChildFolders').output.childItems - 过滤的「条件」输入填入表达式:
@equals(item().type, 'Folder'),运行后只会保留子项中的文件夹
步骤3:计算最新时间戳文件夹
- 先在管道的「变量」标签页新增一个字符串类型变量,命名为
LatestTimestampFolder,默认值留空 - 拖入设置变量活动,与过滤活动(未加过滤则直接接
GetChildFolders活动)建立成功依赖连接 - 变量选择
LatestTimestampFolder,值根据是否做了过滤填入对应表达式:- 已做文件夹过滤:
@max(select(activity('FilterFolders').output.value, item().name)) - 未做过滤(确认RootFolder下只有时间戳文件夹):
@max(select(activity('GetChildFolders').output.childItems, item().name))
- 已做文件夹过滤:
步骤4:使用结果
管道调试运行后,LatestTimestampFolder变量的值就是最新的时间戳文件夹名称,后续流程可以直接引用该变量做文件读取、写入等操作。
特殊场景说明
如果你的时间戳命名不是高位到低位的格式,或者包含非数字字符,需要先通过ADF的字符串处理函数提取纯时间戳并调整为高位到低位格式,再做最大值计算。
内容的提问来源于stack exchange,提问作者noobCoder50
相关产品推荐
相关产品推荐

