提问人:CuteeeeRabbit 提问时间:11/17/2023 最后编辑:AswinCuteeeeRabbit 更新时间:11/20/2023 访问量:72
如何在 Synapse 管道中处理 SharePoint 中的最新文件
How to process the latest file from SharePoint in Synapse pipeline
问:
我正在构建管道以在 synapse 中处理 SharePoint 上的最新文件,但我不知道如何仅处理最新的文件。
我认为管道中需要 3 个步骤。(但现在我还没有添加第三个活动。首先是“从 SharePoint 获取访问令牌”,这是成功的。
第二个是“获取文件列表”,这也是成功的。
最后一个是“仅选择最新文件”,但我不知道我该怎么做。
我尝试使用第二步的输出。@item().value.TimeLastModified
数据的更新频率几乎是每月一次,但每个月的文件名模式都不一样。(不像filename_yyyyMM.xlsx) 因此,很难从文件名中选择要处理的文件。
你有什么想法吗?任何答案都会有所帮助。 对不起,我的英语不好。谢谢。
答:
从第二个 Web 活动获取文件列表后,您可以按照以下方法来满足您的要求。
与您的 Web 活动输出数组一样,我取了一个文件名和上次修改日期的示例数组,如下所示。我已将其存储在数组类型的管道参数中。
[
{
"filename":"file1.xlsx",
"TimeLastModified":"2023-11-16T01:37:20Z"
},
{
"filename":"file2.xlsx",
"TimeLastModified":"2023-11-17T01:37:20Z"
},
{
"filename":"file3.xlsx",
"TimeLastModified":"2023-10-16T01:24:20Z"
}
]
首先在管道中创建两个字符串类型的变量。date
latest_filename
将旧日期作为变量的起始值。我们将循环中的当前上次修改日期与此变量进行比较,如果它更大,则使用当前修改日期更新此变量。date
所以,给旧日期,这里我给的是去年的日期。@subtractFromTime(utcnow(),1,'year')
然后,将 Web 活动输出数组提供给 ForEach,并确保选中 Sequential。在这里,我给出了我的数组参数。@activity('get the list of files').output.value
在 ForEach 中,采用 if 激活并使用下面的表达式来比较日期。
@greaterOrEquals(ticks(item().TimeLastModified), ticks(variables('date')))
在 True 活动中,使用 set variable activities 将 和 变量更新为当前文件名和当前 .date
latest_filename
TimeLastModified
更新当前文件名。
调试管道,具有最新修改日期的文件名将存储在 For 循环末尾的变量中。latest_filename
根据您的要求,将此变量用于进一步的步骤。
评论