2

我创建了一个(一次运行)DF(V2)管道,用于将文件(.lta.gz)从 SFTP 服务器加载到 azure blob 中以获取历史数据。工作得很漂亮。SFTP 服务器上每天都会有几个新文件(这些文件无法被操纵或删除)。所以我想创建一个增量加载管道,每天检查新文件 - 如果是这样 ---> 复制新文件。

有人对我有什么建议吗?

4

2 回答 2

3

感谢您使用数据工厂!

要在 SFTP 服务器上以增量方式加载新生成的文件,您可以利用 GetMetadata 活动来检索 LastModifiedDate 属性: https ://docs.microsoft.com/en-us/azure/data-factory/control-flow-get-metadata-活动

本质上,您创作了一个包含以下活动的管道:

  • getMetadata(返回给定文件夹下的文件列表)
  • ForEach(遍历每个文件)
  • getMetadata(返回给定文件的 lastModifiedTime)
  • IfCondition(将 lastModifiedTime 与触发器 WindowStartTime 进行比较)
  • 复制(将文件从源复制到目标)

享受使用数据工厂构建数据集成流程的乐趣!

于 2018-05-12T04:42:46.700 回答
1

自从我在去年 5 月发布了我之前的答案以来,你们中的许多人联系我询问管道示例,以使用 getMetadata-ForEach-getMetadata-If-Copy 模式实现增量文件复制场景。这是一个重要的反馈,即增量文件复制是我们想要进一步优化的常见场景。

今天我想发布一个更新的答案 - 我们最近发布了一个新功能,它允许更容易和可扩展的方法来实现相同的目标:

您现在可以在 SFTP 数据集上设置 modifiedDatetimeStart 和 modifiedDatetimeEnd 以指定时间范围过滤器以仅提取在该期间创建/修改的文件。这使您能够使用单个活动来实现增量文件复制: https ://docs.microsoft.com/en-us/azure/data-factory/connector-sftp#dataset-properties

为 ADF 中的这些基于文件的连接器启用了此功能:AWS S3、Azure Blob 存储、FTP、SFTP、ADLS Gen1、ADLS Gen2 和本地文件系统。对 HDFS 的支持很快就会到来。

此外,为了更轻松地创作增量复制管道,我们现在将常见的管道模式作为解决方案模板发布。您可以选择其中一个模板,填写链接的服务和数据集信息,然后单击部署——就是这么简单! https://docs.microsoft.com/en-us/azure/data-factory/solution-templates-introduction

您应该能够在图库中找到增量文件复制解决方案: https ://docs.microsoft.com/en-us/azure/data-factory/solution-template-copy-new-files-lastmodifieddate

再次感谢您使用 ADF 并愉快地将编码数据与 ADF 集成!

于 2019-03-02T06:15:02.530 回答