如何在 Synapse 管道中处理 SharePoint 中的最新文件

How to process the latest file from SharePoint in Synapse pipeline

提问人:CuteeeeRabbit 提问时间:11/17/2023 最后编辑:AswinCuteeeeRabbit 更新时间:11/20/2023 访问量:72

问:

我正在构建管道以在 synapse 中处理 SharePoint 上的最新文件,但我不知道如何仅处理最新的文件。 我认为管道中需要 3 个步骤。(但现在我还没有添加第三个活动。pipeine首先是“从 SharePoint 获取访问令牌”,这是成功的。 第二个是“获取文件列表”,这也是成功的。 最后一个是“仅选择最新文件”,但我不知道我该怎么做。 我尝试使用第二步的输出。@item().value.TimeLastModifiedsecond step output

数据的更新频率几乎是每月一次,但每个月的文件名模式都不一样。(不像filename_yyyyMM.xlsx) 因此,很难从文件名中选择要处理的文件。

你有什么想法吗?任何答案都会有所帮助。 对不起,我的英语不好。谢谢。

SharePoint Azure-Synapse

评论

0赞 Aswin 11/17/2023
是否只想从文件列表中获取最新文件(从步骤:2开始)
0赞 CuteeeeRabbit 11/17/2023
是的,但我不知道我该怎么办。

答:

0赞 Rakesh Govindula 11/20/2023 #1

从第二个 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"
    }
]

首先在管道中创建两个字符串类型的变量。datelatest_filename

将旧日期作为变量的起始值。我们将循环中的当前上次修改日期与此变量进行比较,如果它更大,则使用当前修改日期更新此变量。date

所以,给旧日期,这里我给的是去年的日期。@subtractFromTime(utcnow(),1,'year')

enter image description here

然后,将 Web 活动输出数组提供给 ForEach,并确保选中 Sequential。在这里,我给出了我的数组参数。@activity('get the list of files').output.value

enter image description here

在 ForEach 中,采用 if 激活并使用下面的表达式来比较日期。

@greaterOrEquals(ticks(item().TimeLastModified), ticks(variables('date')))

enter image description here

True 活动中,使用 set variable activities 将 和 变量更新为当前文件名和当前 .datelatest_filenameTimeLastModified

enter image description here

更新当前文件名。

enter image description here

调试管道,具有最新修改日期的文件名将存储在 For 循环末尾的变量中。latest_filename

enter image description here

根据您的要求,将此变量用于进一步的步骤。