我的数据湖文件夹中没有几组月度文件,我希望将它们复制到数据湖中的另一个文件夹中,在将数据复制到目标数据湖文件夹时,我希望创建一个YYYY格式的文件夹(Ex: 2022-11),并且我希望复制该文件夹中的文件。
在下个月,我将再次获得新的数据集,并希望将它们复制到(2022-12)文件夹,等等。
我想每个月运行管道,因为我们将获得每月负载的数据。
发布于 2022-11-23 14:38:17
由于您希望每个月只使用ADF复制新文件,这可以通过两种方式完成。
首先将使用存储事件触发器.
演示:
我已经为新的文件名创建了管道参数,如下所示。
接下来,创建一个存储事件触发器,并为管道参数提供@triggerBody().fileName
。
参数:
在这里,我使用了两个参数来更好地理解。如果需要,也可以使用单个管道参数来完成。
带有dataset参数用于文件名的源数据集:
带有dataset参数的Sink数据集用于文件夹名和文件名:
副本来源:
拷贝接收器:
文件夹名的表达式:@formatDateTime(utcnow(),'yyyy-MM')
当我上传到源文件夹时,文件成功复制到所需的文件夹。
因此,每次上传到您的文件夹中的新文件都会被复制到所需的文件夹中。如果不希望文件在复制后存在,请使用delete活动在复制活动之后删除源文件。
注意:确保在触发管道之前发布所有更改。
第二种方法可以在ForEach中使用Get元数据活动和ForEach以及复制活动。
每个月都要使用调度触发器。
首先使用UTC(使用另一个源数据集并只给出路径直到文件夹)获取子项,并在经过最后修改的元数据活动的utcnow()
筛选器中给出您的月份开始日期(使用动态内容FormatDatetime()
和FormatDatetime()
以获得正确的格式)。
现在,您将获得所有子项数组的列表,该数组上次修改日期为本月。将这个数组交给ForEach,在ForEach内部使用复制活动。
在复制活动源中,使用dataset参数作为文件名(与上面相同),并给出@item().name
。
在复制活动接收器中,使用两个dataset参数,一个用于文件夹名,另一个用于文件名。在文件夹名中,yyyy-MM
格式的动态内容与上面的相同,文件名的动态内容为@item().name
。
https://stackoverflow.com/questions/74545918
复制相似问题