当我尝试内部的每个活动时,我们都有数据流活动,我们无法提取其中的所有文件
使用聚合函数对每个文件进行源转换和计数
名字计数 文件1 10 文件2 20 文件3 11 文件4 88
源转换(加载数据文件):
使用通配符加载多个数据文件。 捕获文件名并计算每个文件的记录数。 加入转型:
根据文件名将控制文件中的数据与实际数据文件连接起来。 派生列变换:
将实际记录数与预期记录数和标志不匹配情况进行比较。 水槽改造(可选):
您可以将结果写入接收器,记录验证结果,或者在发现不匹配时触发警报。
为了实现您的要求,确保所有源文件必须属于相同类型。
在源数据集中,给出直到根文件夹的路径,并给出通配符文件路径中的剩余路径,如下所示。
来源:
源转换后,
filename
列中将包含类似/file1.csv
的值。使用具有以下表达式的派生列将其删除或替换为 ''
。
replace(filename,'/','')
现在,在
filename
上使用带有 group by 的聚合转换,并在聚合部分中使用表达式 count
创建列 count(filename)
。
现在,使用连接此转换和另一个控制文件源,在
filename
列上使用内连接转换。
这将结合两个转型并给出预期结果。
您可以使用表达式
flag
为列 equals(count,row_count)
添加另一个派生列来比较这些值。
现在,您可以将它们直接写入接收器,或者在两者之间进行条件分割转换,并根据您的要求从不匹配的数据中分割所需的数据。