【问题标题】:Azure Data Factory - How to read only new files from blob storageAzure 数据工厂 - 如何从 Blob 存储中仅读取新文件
【发布时间】:2017-11-29 05:07:09
【问题描述】:

我的 Application Insights 中有一个“连续导出”流程,它根据我的新 Insights 创建新文件。

除此之外,我还有一个过程,使用 Azure 数据工厂,使用 Blob 存储数据加载一个 SQL 表。

问题: 我无法从 A.D.F. 中读取,只能从 Blob 存储中读取新文件,而且我总是在处理相同的数据。目前,我忽略了 SQL 存储过程中加载过程后的重复数据,但我想通过仅从 blob 存储读取新数据来提高此过程的效率,我可以从 A.D.F. 执行此操作吗? 谁能帮我?有哪些替代方案可以实现这一目标?

最好的问候, 瑞·费尔南德斯

【问题讨论】:

  • 数据工厂适用于基于时间的文件夹,并具有帮助解决此问题的功能 - 请参阅 here

标签: azure azure-data-factory azure-blob-storage


【解决方案1】:

有哪些替代方法可以实现这一目标?

如果 WebJob 是可接受的,我们可以使用 WebJob blob 触发器轻松做到这一点。我们可以从 Azure official document.获得更多关于 WebJob 触发器的信息

以下是演示代码:

 public static void ProcessBlobTrigger([BlobTrigger("containername/{name}")] TextReader input, TextWriter log)
        {
            // your logic to process data
        }

【讨论】:

  • 我试图避免这个选项,但我遵循了它,因为它是实现我想要的唯一目标。谢谢汤姆
【解决方案2】:

我建议您通过将旧 Blob 重命名为“Archive/oldBlobName”来以编程方式(自定义管道)归档它们!之后,下次在代码中迭代分段的 blob 结果(包含在数据集中指定的容器中的 blob 列表)时,只需转义名称以“存档”开头的那些。

        foreach (IListBlobItem listBlobItem in blobList.Results)
        {
            CloudBlockBlob inputBlob = listBlobItem as CloudBlockBlob;

            // Take all blobs from container that are not in "Archive"
            if ((inputBlob == null) || string.IsNullOrEmpty(inputBlob.Name)
                            || inputBlob.Name.ToLower().StartsWith("Archive"))
            {
                continue;
            }
                     ...

【讨论】:

    猜你喜欢
    • 2016-08-13
    • 2020-09-08
    • 2021-11-25
    • 2022-01-12
    • 2012-06-16
    • 2019-01-15
    • 2020-12-22
    • 1970-01-01
    • 2016-08-30
    相关资源
    最近更新 更多