使用 Azure 数据工厂 V2 按上次修改日期复制新文件和更改的文件



使用复制活动,我只需要获取文件夹中的最新文件。

例: 文件夹

文件1

文件2 其中 File2 是最新的。

但是,它正在获取这两个文件。

我跟着: https://learn.microsoft.com/en-us/azure/data-factory/solution-template-copy-new-files-lastmodifieddate

还在源数据集中尝试过>连接>按上次修改时间筛选

开始日期: @adddays(UTCnow((,-31(

结束日期: UTCnow((

我希望只有最后修改的文件在指定的日期范围内拍摄。

我的粗略想法是使用这样的流:获取元数据活动-->Azure函数活动-->复制活动。

Step1:使用元数据活动获取指定范围内特定文件夹中文件的上次修改日期时间。

Step2:将输出数组传递给azure函数活动,使用气泡排序(或其他比较算法(获取最新修改的文件名并过滤其他文件名。输出该文件名。

步骤3:将文件名传递给复制活动以进行传输。

你可以从这个案例中获得一些类似的线索:https://social.msdn.microsoft.com/Forums/en-US/affdcb44-6a8c-4b20-8e2e-6da20ab86c32/default-sorting-of-get-metadata-activity?forum=AzureDataFactory

对于类似的问题,我尝试了不同的方法。我注意到 getmetadata 活动按升序返回文件名。因此,在子项数组中,文件1将排在第一位,其次是文件2,文件3等。

我使用了以下步骤。

  1. 使用 Get 元数据活动获取子项
  2. 定义刺痛变量v_filename
  3. 在顺序模式下通过 foreach 循环循环子项
  4. 在 foreach 循环中使用一个 setvariable 活动,该活动将覆盖每次迭代中的v_filename
  5. 在最后一次迭代之后,变量将具有最新的文件名
  6. 在 foreach 之后使用复制活动,并将v_filename作为文件名传递。

它有效

我怀疑OP在更改"按上次修改时间过滤"字段(即开始时间和结束时间(后没有按下"发布"按钮。触发器只会作用于 ADF 位于发布分支中的状态。因此,即使您点击"保存"或"全部保存"按钮将更改保存到协作分支,这也不够。

最新更新