如何使用数据流验证从 adlsgen2 的一个文件夹中提取所有文件以及如何获取每个文件的计数

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

当我尝试内部的每个活动时,我们都有数据流活动,我们无法提取其中的所有文件

使用聚合函数对每个文件进行源转换和计数

名字计数 文件1 10 文件2 20 文件3 11 文件4 88

源转换(加载数据文件):

使用通配符加载多个数据文件。 捕获文件名并计算每个文件的记录数。 加入转型:

根据文件名将控制文件中的数据与实际数据文件连接起来。 派生列变换:

将实际记录数与预期记录数和标志不匹配情况进行比较。 水槽改造(可选):

您可以将结果写入接收器,记录验证结果,或者在发现不匹配时触发警报。

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

为了实现您的要求,确保所有源文件必须属于相同类型

在源数据集中,给出直到根文件夹的路径,并给出通配符文件路径中的剩余路径,如下所示。

来源:

enter image description here

源转换后,

filename
列中将包含类似
/file1.csv
的值。使用具有以下表达式的派生列将其删除或替换为
''

replace(filename,'/','')

enter image description here

现在,在

filename
上使用带有 group by 的聚合转换,并在聚合部分中使用表达式
count
创建列
count(filename)

enter image description here

现在,使用连接此转换和另一个控制文件源,在

filename
列上使用内连接转换。

enter image description here

这将结合两个转型并给出预期结果。

enter image description here

您可以使用表达式

flag
为列
equals(count,row_count)
添加另一个派生列来比较这些值。

enter image description here

现在,您可以将它们直接写入接收器,或者在两者之间进行条件分割转换,并根据您的要求从不匹配的数据中分割所需的数据。

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