0

我的任务是每天从 SAP 服务器复制新添加的文件并将其存储在 ADLS 中。服务器上有 2 种类型的文件(循环和前期)附加日期。我需要将文件存储在单独的文件夹中,并且每天将最新文件从 SAP 服务器添加到 ADLS。

文件名格式:R_07292021.orc Recurring_08312021.orc U_07292021.orc Upfront_08312021.orc

以下是我到目前为止所采取的步骤

  1. Get Metadata Activity 从服务器获取文件列表 在此处输入图像描述

  2. 使用过滤器活动根据名称分隔文件,因此使用首字母过滤 在此处输入图像描述

  3. 我尝试使用 Foreach 活动和 If Condition,但它似乎不起作用。

我被困在这一点上,试图弄清楚如何继续。任何帮助将不胜感激。

4

1 回答 1

0

如果您尝试从文件夹中获取文件的最新修改日期,您可以参考以下过程。

我用一种以“<strong>U”开头的文件对其进行了测试。

  1. 创建 2 个变量,一个用于存储maxdate,另一个用于存储latestfilename。在 maxdate 变量中分配任何初始值(即过去的日期)。

在此处输入图像描述

  1. 使用Get Metadata活动通过将文件名参数值硬编码为“<strong>U”来获取以“<strong>U”开头的文件列表。

在此处输入图像描述

Get Metadata1 的输出

在此处输入图像描述

  1. 将 Get Metadata 活动输出子项传递给ForEach活动以遍历列表中的所有文件。

在此处输入图像描述

  1. ForEach内部--> 使用另一个Get Metadata活动来获取循环中当前文件的元数据(最后修改日期和文件名)。

在此处输入图像描述

获取元数据 2 的输出:

在此处输入图像描述

  • 将Get Metadata连接到If Condition并使用更大的函数和刻度函数来评估 If 条件表达式。

  • Ticks 函数返回指定时间戳的整数值,并使用更大的函数比较 2 个值。

      @greater(ticks(activity('Get_lastmodified_date_and_name').output.lastModified),ticks(formatDateTime(variables('maxdate'))))
    

在此处输入图像描述

  1. 当表达式计算结果为时,添加(2 组变量)活动以将最后修改日期和相应的文件名存储到最初创建的变量中。

最大日期

在此处输入图像描述

最新文件名

在此处输入图像描述

注意:如果循环中的下一个迭代文件包含大于前一个(或第一个)循环文件的时间戳,这些变量的值将被覆盖。

  1. 在接下来的活动中,使用变量文件名 (latestfilename) 为源文件中的文件名参数赋值。

在此处输入图像描述

于 2021-09-16T11:24:27.023 回答