gpt4 book ai didi

azure - 如何将文件从两个旋转的 Azure 存储帐户容器提取/复制到另一个容器中

转载 作者:行者123 更新时间:2023-12-03 07:00:04 25 4
gpt4 key购买 nike

给定两个容器:

来源:一个 Azure StorageV2 帐户,有两个名为 A 和 B 的容器,其中包含 blob 文件,这些文件将平面存储在容器的根目录中。

目标:Azure Data Lake Gen2(为简化起见,将其视为具有单个目标容器的另一个存储帐户)。

目标:我尝试在月初复制/提取当前事件源容器中的所有文件。在该月的剩余时间内,还需要提取事件源容器内新添加/覆盖的任何文件。

每个月,我们只关心一个事件容器。因此,一月将使用容器 A,二月将使用容器 B,三月将使用容器 A,等等。使用 Azure 数据工厂,我已经弄清楚如何通过在文件路径中使用动态表达式来完成交换容器的逻辑。

@if(equals(mod(int(formatDateTime(utcnow(),'%M')), 2), 0), ‘containerB, ‘ContainerA’)

到目前为止我已经尝试过的内容:我使用翻滚窗口方法设置了复制管道,其中触发器每天运行以根据 LastModifiedDate 检查新的/更改的文件,如下所述:https://learn.microsoft.com/en-us/azure/data-factory/tutorial-incremental-copy-lastmodified-copy-data-tool 。然而,我遇到了一个难题,即与触发器的开始日期相比,要在月初摄取的文件的上次修改日期本质上会具有过去的 LastModifiedDate窗口,因为该容器是在容器更换之前的几天内提前准备好的。因此,由于与触发器的开始窗口相比,LastModifiedDate 是过去的,因此该月 1 日的那些现有文件将永远不会被复制,只会复制触发器开始日期之后的新文件/更改的文件。如果我通过硬编码较早的开始日期来手动触发触发器,那么月中添加到容器的任何文件最终都会按预期在该月的剩余时间内被摄取。

那么,如何解决在开始日期之前修改的文件的基本情况?如果这个问题能够解决,那么一切都可以在一个管道和一个触发器中发生。否则,我将不得不找出另一种方法。

总的来说,我对这里采取的最佳方法持开放态度。文件大小约为 2GB,数量约为 20,000 个。

最佳答案

您可以通过在每天结束时设置触发器来完成此操作,并尝试使用当天的最后修改日期复制所有新/更新的文件,如下所示。

假设当第一个容器处于事件状态时没有文件上传到第二个容器。

请按照以下步骤操作:

  • 转到数据工厂并将复制事件拖动到管道中。

  • 通过创建链接服务来创建源数据集。通过单击源数据集中的添加动态内容来指定容器条件。

    @if(equals(mod(int(formatDateTime(utcnow(),'%M')), 2), 0), 'containerb, 'containera')

enter image description here

  • 然后在文件路径类型中选择通配 rune 件路径,并在文件路径中输入 * ,如下所示,以复制多个文件。 enter image description here

  • 这里我正在复制过去 24 小时内新的/更新的文件。转到按上次修改时间过滤,并在开始时间中输入@adddays(utcNow(),-1),在结束时间中输入@utcNow()时间。

enter image description here

  • 由于我们在每天结束时使用触发器安排此操作,因此它将查找过去 24 小时内到开始时间的新/更新文件。

  • 将另一个存储帐户的容器作为接收器数据集

  • 现在,点击添加触发器并创建翻滚窗口触发器像下面这样。

enter image description here

您可以根据管道执行时间在当天结束时按照您的意愿指定上面的开始日期。

请确保在执行之前发布管道和触发器

如果当第一个容器处于事件状态时您的第二个容器也有新的/修改的文件,那么您可以在上次修改日期的开始时间进行这样的尝试。

@if(equals(int(formatDateTime(utcNow(),'%D')),1), adddays(utcNow(),-31), adddays(utcNow(),-1))

关于azure - 如何将文件从两个旋转的 Azure 存储帐户容器提取/复制到另一个容器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72536852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com