3

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

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

提前感谢您的帮助/回答!

4

2 回答 2

1

我的想法如下:

1.首先,当然,在计划触发器中配置您的管道执行。请参阅此链接

2.使用支持 Amazon S3 连接器的获取元数据活动来获取 S3 数据集中的文件。

在此处输入图像描述

获取最后修改和文件名等元数据。

在此处输入图像描述

3.将这些包含 lastModified Time 和文件名的元数据数组放入Web ActivityAzure Function Activity中。在那个 rest api 或 function 方法中,您可以进行排序逻辑业务以获取最新修改的文​​件。

4.从 Web Activity 或 Azure Function Activity 中获取文件名,然后将其复制到 Azure Blob Storage。

另一个想法是使用自定义活动。您可以使用 .net 代码实现您的要求。

于 2019-04-09T07:01:35.883 回答
1

(旁注:感谢上面的 Jay Gong 提出解决方案)

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

在此处输入图像描述

希望这会有所帮助。

于 2019-04-23T19:33:40.557 回答