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

问题描述 投票:0回答:1

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

@item().value.TimeLastModified

数据的更新频率几乎是每月一次,但每个月的文件名模式并不相同。 (不像 filename_yyyyMM.xlsx) 所以很难从文件名中选择我要处理的文件。

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

sharepoint azure-synapse
1个回答
0
投票

从第二个网络活动中获取文件列表后,您可以按照以下方法来实现您的要求。

与您的网络活动输出数组一样,我采用了文件名和上次修改日期的示例数组,如下所示。我已将其存储在数组类型的管道参数中。

[
    {
        "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')

enter image description here

然后,将您的 Web 活动输出数组

@activity('get the list of files').output.value
提供给 ForEach 并确保选中 Sequential。这里我给出了我的数组参数。

enter image description here

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

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

enter image description here

True events 内,使用设置变量活动将

date
latest_filename
变量更新为当前文件名和当前
TimeLastModified

enter image description here

更新您当前的文件名。

enter image description here

调试管道,最新修改日期的文件名将存储在 For 循环末尾的

latest_filename
变量中。

enter image description here

根据您的要求使用此变量执行进一步的步骤。

© www.soinside.com 2019 - 2024. All rights reserved.