首页 > 解决方案 > 如何在 Azure 数据工厂复制活动中使用源列对目标数据湖中的数据进行动态分区?

问题描述

我正在使用 ADF 复制活动,来源是 SQL 服务器。

现在我可能决定根据日期字段提取整个数据或增量数据 - 所以当我这样做时 - 我想根据此列在我的数据湖中创建/覆盖文件夹。

源数据:

col1

Col2

Col3 过滤列(日期)

目标湖:

例如,如果我提取 1 年的数据 - Lake 中的文件夹结构应创建如下(基于 FilterColumn):

实体/2020/03/01/abc.csv

实体/2020/03/02/abc.csv

实体/2020/03/03/abc.csv

实体/2020/03/04/abc.csv

..

..

实体/2021/02/28/abc.csv

其中文件夹是根据源过滤器列动态创建的 - 也作为选择查询的一部分出现。

关于如何在同一个复制活动中实现这一点的建议。

标签: azure-data-factory-2azure-data-lake-gen2

解决方案


我认为仅通过一项复制活动无法实现。您可以通过 Lookup 活动和 For Each 活动来执行此操作。

脚步:

  1. 使用查找活动获取不同的 col3 值并将格式更改为 yy/mm/dd。

在此处输入图像描述

  1. 通过 For Each 活动循环查找活动的输出。

在此处输入图像描述

  1. 将不同的日期数据复制到 For Each 活动中的相应 CSV 文件。

来源:

在此处输入图像描述

下沉:

在此处输入图像描述

接收器数据集:

在此处输入图像描述


推荐阅读