如何在Synapse Pipeline中筛选SharePoint的最新文件进行处理
方法一:通过变量+循环遍历筛选
适合文件数量不多的场景,步骤如下:
初始化变量
添加Initialize Variable活动,创建两个变量:LatestModifiedTime:类型选DateTime,初始值设为'1900-01-01T00:00:00Z'LatestFileInfo:类型选Object,初始值设为{}
遍历文件列表并更新最新文件信息
添加ForEach活动,遍历第二步“获取文件列表”的输出:@activity('获取文件列表').output.value
在ForEach内部添加If Condition活动,判断条件:@greater(item().TimeLastModified, variables('LatestModifiedTime'))条件为真时,添加两个
Set Variable活动:- 将
LatestModifiedTime更新为@item().TimeLastModified - 将
LatestFileInfo更新为@item()(存储当前文件的完整元数据,包括路径、ID等)
- 将
处理最新文件
循环结束后,LatestFileInfo变量中就存储了最新修改的文件信息,后续可直接调用该变量的属性(比如@variables('LatestFileInfo').ServerRelativeUrl)执行下载、读取等操作。
方法二:通过Data Flow(数据流)高效筛选
适合文件数量较多的场景,利用数据流的排序和取顶功能:
- 加载文件列表到数据流
先添加Lookup活动,将“获取文件列表”的输出结果加载为数据集;或者在数据流中直接使用Web源调用SharePoint的文件列表接口。 - 排序并取最新文件
在数据流中添加Sort转换,按TimeLastModified字段降序排序;接着添加Top转换,设置只取前1条数据。 - 输出结果到管道变量
添加Sink转换,将筛选出的单条最新文件数据输出到管道变量,供后续活动使用。
注意事项
- 确保
TimeLastModified字段为标准ISO日期时间格式,若格式不兼容,可使用表达式转换:@parseDateTime(item().TimeLastModified) - 若存在多个文件修改时间完全一致的情况,可额外添加筛选条件(比如按文件大小降序、文件名排序)来确定最终目标文件。
内容的提问来源于stack exchange,提问作者user19504539
相关产品推荐
相关产品推荐

