元数据驱动的 ADF 管道从多个源获取数据

问题描述 投票:0回答:1

我正在设计 ADF 解决方案以从 DataLake 原始层读取多个源文件夹,我需要构建一个配置文件,在其中可以动态管理要加载的文件/文件夹以及要加载的日期范围

即容器中的文件夹结构如下:

enter image description here

像上面的屏幕截图一样,我需要将文件动态加载到原始到暂存层,并使用配置文件分配路径和文件类型。我们正在接收多种类型的文件 csv、json 等

任何解决方案请分享

我正在开始新设计

azure-data-factory etl staging
1个回答
0
投票

要实现您的要求,首先您需要生成一个包含所需源文件路径列表的文件。

要生成该文件,请使用数据流。首先获取一个

DelimitedText
文件并给出直到根容器的路径,其中不包含列分隔符。将此数据集作为数据流的来源。

enter image description here

您提到您的源文件位于类似

root(crm)/src1/2024/03/22/
的目录结构中。因此,根据结构
*/*/*/*/*
给出通配符文件路径。在源设置中添加一列
filepath

enter image description here

导入投影并检查数据预览。您将得到两列,其中一列包含所有类型源文件的文件路径。

enter image description here

接下来,使用聚合转换并在 filepath 列上使用

groupBy
。在聚合部分中创建一个新列
count
并计算样本的文件路径 (
count(filepath)
) 列。

enter image description here

它将给出所有不同的文件路径及其数量。接下来使用选择转换并从流程中删除额外的

count
列。

enter image description here

现在,对 filepath 列进行

衍生列
转换,并在其中使用表达式
dropLeft(filepath,1)
。这将删除每行中的起始
/

enter image description here

现在,采取

filter transformation
并过滤掉所需的文件路径。您可以根据过滤器转换中的日期范围条件使用数据流表达式和函数

接下来,取另一个

DelimitedText
数据集作为数据流的接收器,并给出文件路径,直到数据集中的临时容器。在这里,请确保删除第一行作为标题复选框。

enter image description here

转到数据流的接收器设置并按照以下配置进行操作。

enter image description here

从管道执行数据流后,将生成

filepaths.csv
文件,如下所示,并具有所需的文件路径。

enter image description here

在数据流活动之后,在管道中进行复制活动,并以两个二进制数据集作为其源和接收器。给出直到源二进制数据集中的源容器(根

crm
)和目标二进制数据集中的目标根容器的路径。

在复制活动源中,选择文件列表选项并提供上面的

filepaths.csv
文件。

enter image description here

现在,执行管道,

filepaths.csv
文件中的所有路径将被复制到目标容器,保持相同的文件结构。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.