如何在Azure Data Factory Lookup中按时间戳排序数据(无需额外服务)
在Azure Data Factory Lookup活动中按时间戳升序读取文件
无需逻辑应用、函数或数据流的实现方案
核心思路
借助Lookup活动的查询排序能力直接获取升序排列的文件列表,再通过ForEach顺序遍历读取数据。
步骤1:配置Lookup活动获取排序后的文件列表
- 构建目标存储(Blob/ADLS Gen2等)的数据集,指向存放10个文件的文件夹,不指定具体文件名。
- 添加Lookup活动并关联上述数据集:
- 若依赖文件的
LastModified属性排序:在查询选项中输入ORDER BY LastModified ASC - 若依赖文件名中的时间戳(如
data_202405011200.csv):根据文件名格式提取时间串排序,例如ORDER BY SUBSTRING(name, 5, 12) ASC(自行调整SUBSTRING的起始位置和长度匹配你的时间格式)
- 若依赖文件的
- 按需勾选递归(如果文件分布在子文件夹中),确保所有目标文件被纳入查询范围。
步骤2:验证排序结果
运行Lookup活动后,在Monitor页面查看活动输出,确认value数组中的文件已按时间戳升序排列。
步骤3:顺序遍历读取文件
添加ForEach活动,将Lookup的输出@activity('Lookup文件列表').output.value作为输入:
- 开启顺序执行(必须开启,保证按排序后的顺序读取)
- 在ForEach内部添加Copy活动,将源数据集的文件名设置为
@item().name,指向当前循环的文件,完成数据读取。
关键提示
- 文件名中的时间戳必须使用可排序的格式(如
YYYYMMDDHHMMSS),避免使用MM/DD/YYYY这类无法直接通过字符串排序的格式。 - 确认目标存储支持Lookup的查询语法(Blob/ADLS Gen2均支持ORDER BY语句)。
内容的提问来源于stack exchange,提问作者20R212 - DINESH KUMAR P
相关产品推荐
相关产品推荐

