我还是Azure数据工厂的新手,我正在尝试将每天转储到我的S3文件夹/存储桶中的文件移动到Azure blob。我已经在Data Factory中创建了数据集(用于源和接收器)和链接服务。
但是由于我的S3存储桶每天都会收到新文件,所以我想知道如何每天移动在S3中丢弃的最新文件(例如美国东部时间早上5点)。我在网上查看了大多数答案,如this,this,this和this。但它们都没有解释如何找出哪个是S3中的最新文件(可能基于上次修改的日期/时间或匹配文件名模式,如'my_report_YYYYMMDD.csv.gz')并且仅将该文件复制到目的地blob。
提前感谢您的帮助/解答!
我的想法如下:
1.首先,当然,在日程安排触发器中配置您的管道执行。请参阅此link。
2.使用支持Amazon S3 Connector的Get metadata activity来获取S3数据集中的文件。
获取最后修改的文件名等元数据。
3.将包含lastModified Time和文件名的这些元数据数组放入Web Activity或Azure Function Activity。在其余的api或函数方法中,您可以执行排序逻辑业务以获取最新的修改文件。
4.从Web Activity或Azure Function Activity获取fileName,然后将其复制到Azure Blob存储中。
另一个想法是使用Custom-Activity。您可以使用.net代码实现您的要求。
(旁注:感谢上面的Jay Gong建议解决方案)
我找到了答案。它比我想象的要简单。有dynamic content/expression
我们可以添加到S3数据集的'按上次修改过滤'字段。请参阅下面的屏幕截图,其中我展示了如何使用动态表达式选择不超过5小时的文件。关于这些表达式的更多信息可以阅读here。
希望这是有帮助的。