将最新文件从S3复制到Azure Blob(使用Azure Factory V2)

时间:2019-04-08 18:37:03

标签: azure azure-storage azure-data-factory-2 azure-triggers

我还是Azure Data Factory的新手,并试图将每天在S3文件夹/存储桶中转储的文件移动到Azure blob。我已经在Data Factory中创建了数据集(用于源和接收器)和链接的服务。

但是,由于我的S3存储桶每天都会收到新文件,因此我想知道如何每天移动在S3中删除的最新文件(例如,美国东部标准时间上午5点)。我已经在线浏览了大多数答案,例如thisthisthisthis。但是它们都没有解释如何确定哪个文件是S3中的最新文件(也许基于上次修改的日期/时间,或者通过匹配类似于'my_report_YYYYMMDD.csv.gz'的文件名模式 ),仅将该文件复制到目标Blob。

预先感谢您的帮助/答案!

2 个答案:

答案 0 :(得分:1)

我的想法如下:

1。首先,请确保在计划触发器中配置管道执行。请参阅此link

2。使用支持Amazon S3连接器的Get metadata activity来获取S3数据集中的文件。

enter image description here

获取上次修改的文件名等元数据。

enter image description here

3。将包含lastModified Time和文件名的这些元数据数组放入Web ActivityAzure Function Activity中。在该其余api或函数方法中,您可以进行逻辑处理以获得最新的修改文件。

4。从Web活动或Azure Function活动中获取文件名,然后将其复制到Azure Blob存储中。

另一个想法是使用Custom-Activity。您可以使用.net代码实现要求。

答案 1 :(得分:0)

(旁注:感谢上述周杰伦提出的解决方案)

我找到了答案。它比我预期的简单。我们可以将dynamic content/expression添加到S3数据集的“按上次修改的过滤条件”字段中。请查看下面的屏幕截图,其中显示了如何使用动态表达式选择不超过5小时的文件。有关这些表达式的更多信息,请阅读here

enter image description here

希望这会有所帮助。