使用 Azure 数据工厂根据 LastModifiedDate 复制新的和已更改的文件
适用于:Azure 数据工厂 Azure Synapse Analytics
本文介绍一个解决方案模板。使用该模板可以根据 LastModifiedDate,仅将新的和已更改的文件从基于文件的存储复制到目标存储。
关于此解决方案模板
此模板首先根据新文件和已更改文件的 LastModifiedDate 属性选择这些文件(且仅限这些文件),然后将所选的文件从数据源存储复制到数据目标存储。
该模板包含一个活动:
- Copy - 仅根据新文件和已更改文件的 LastModifiedDate 将其从文件存储复制到目标存储。
该模板定义六个参数:
- FolderPath_Source 是可从中读取源存储中的文件的文件夹路径。 需将默认值替换为自己的文件夹路径。
- Directory_Source 是可从中读取源存储中的文件的子文件夹路径。 需将默认值替换为自己的子文件夹路径。
- FolderPath_Destination 是目标存储中要将文件复制到的文件夹路径。 需将默认值替换为自己的文件夹路径。
- Directory_Destination 是目标存储中要将文件复制到的子文件夹路径。 需将默认值替换为自己的子文件夹路径。
- LastModified_From 用于选择其 LastModifiedDate 属性迟于或等于此日期时间值的文件。 为了仅选择上次未复制的新文件,此日期/时间值可以是上次触发管道的时间。 可将默认值“2019-02-01T00:00:00Z”替换为 UTC 时区中的预期 LastModifiedDate。
- LastModified_To 用于选择其 LastModifiedDate 属性早于此日期时间值的文件。 为了仅选择以前运行中未复制的新文件,此日期/时间值可以是当前时间。 可将默认值“2019-02-01T00:00:00Z”替换为 UTC 时区中的预期 LastModifiedDate。
如何使用此解决方案模板
从 Azure 数据工厂的“作者”选项卡导航到“模板库”,然后选择“+”按钮、“管道”,最后选择“模板库”。
搜索模板“仅按 LastModifiedDate 复制新文件”,选择它,然后选择“继续”。
与目标存储建立新的连接。 目标存储是要将文件复制到的存储。
创建与源存储的新连接。 源存储是要从中复制文件的存储。
选择“使用此模板” 。
可以在面板中看到可用的管道,如以下示例所示:
选择“调试”,写入“参数”的值,然后选择“完成”。 在后面的图片中,我们将按如下所示设置参数。
- FolderPath_Source = sourcefolder
- Directory_Source = subfolder
- FolderPath_Destination = destinationfolder
- Directory_Destination = subfolder
- LastModified_From = 2019-02-01T00:00:00Z
- LastModified_To = 2019-03-01T00:00:00Z
此示例指示上次在 2019-02-01T00:00:00Z 到 2019年-03-01T00:00:00Z 时间跨度内修改的文件将从源路径 sourcefolder/subfolder 复制到目标路径 destinationfolder/subfolder。 可以将这些时间或文件夹替换为自己的参数。
查看结果。 你会看到只有上次修改时间处于所配置时间跨度内的文件复制到了目标存储。
现在,可以添加一个翻转窗口触发器来自动执行此管道,使管道始终可以定期根据 LastModifiedDate,仅复制新文件和已更改的文件。 依次选择“添加触发器”、“新建/编辑”。
在“添加触发器”窗口中,选择“+ 新建”。
选择“翻转窗口”作为触发器类型,设置“每隔 15 分钟”作为重复周期(可更改为任意间隔时间)。 对于“已激活”框,请选择“是”,然后选择“确定”。
按如下所示设置“触发器运行参数”的值,然后选择“完成”。
- FolderPath_Source = sourcefolder。 可替换为源数据存储中的文件夹。
- Directory_Source = subfolder。 可替换为源数据存储中的子文件夹。
- FolderPath_Destination = destinationfolder。 可替换为目标数据存储中的文件夹。
- Directory_Destination = subfolder。 可替换为目标数据存储中的子文件夹。
- LastModified_From = trigger().outputs.windowStartTime。 这是触发器中的一个系统变量,确定了上次触发管道的时间。
- LastModified_To = trigger().outputs.windowEndTime。 这是触发器中的一个系统变量,确定了本次触发管道的时间。
选择“全部发布”。
在数据源存储的源文件夹中创建新文件。 现在将等待自动触发管道,并仅将新文件复制到目标存储。
在左侧导航面板中选择“监视”选项卡;如果触发器的重复周期已设置为每 15 分钟,则等待大约 15 分钟。
查看结果。 你会看到管道每隔 15 分钟会自动触发一次,并且在每个管道运行中,只有来自源存储的新建或已更改文件会复制到目标存储。