我还是Azure Data Factory的新手,并试图将每天在S3文件夹/存储桶中转储的文件移动到Azure blob。我已经在Data Factory中创建了数据集(用于源和接收器)和链接的服务。
但是,由于我的S3存储桶每天都会收到新文件,因此我想知道如何每天移动在S3中删除的最新文件(例如,美国东部标准时间上午5点)。我已经在线浏览了大多数答案,例如this,this,this和this。但是它们都没有解释如何确定哪个文件是S3中的最新文件(也许基于上次修改的日期/时间,或者通过匹配类似于'my_report_YYYYMMDD.csv.gz'的文件名模式 ),仅将该文件复制到目标Blob。
预先感谢您的帮助/答案!
答案 0 :(得分:1)
我的想法如下:
1。首先,请确保在计划触发器中配置管道执行。请参阅此link。
2。使用支持Amazon S3连接器的Get metadata activity来获取S3数据集中的文件。
获取上次修改的文件名等元数据。
3。将包含lastModified Time和文件名的这些元数据数组放入Web Activity或Azure Function Activity中。在该其余api或函数方法中,您可以进行逻辑处理以获得最新的修改文件。
4。从Web活动或Azure Function活动中获取文件名,然后将其复制到Azure Blob存储中。
另一个想法是使用Custom-Activity。您可以使用.net代码实现要求。
答案 1 :(得分:0)
(旁注:感谢上述周杰伦提出的解决方案)
我找到了答案。它比我预期的简单。我们可以将dynamic content/expression
添加到S3数据集的“按上次修改的过滤条件”字段中。请查看下面的屏幕截图,其中显示了如何使用动态表达式选择不超过5小时的文件。有关这些表达式的更多信息,请阅读here。
希望这会有所帮助。