在尾部记录中显示聚合函数输出

display aggregate function output in trailer record

我们正在读取包含两个字段的 csv 文件输入。示例输入文件供参考

source, balance
1,100
2, 200

我需要在以下详细信息的输出中创建一个预告片记录-

在我们的例子中,预告片记录将为 -

Trailer 02   300

如何在数据工厂中实现这一点?

我已经使用您的示例数据进行了重现,并且能够使用数据流添加具有聚合值的预告片记录。

  1. source1 添加到源数据集。

  1. 添加 derived column 转换以创建具有虚拟值的虚拟列。

  1. 添加 pivot 转换以获取尾部记录的聚合值。

concat('Trailer ',toString(count(source)),' ',toString(sum(toInteger(balance))))

  1. 使用与源 1 相同的源数据集添加 source2

  1. union 转换添加到 source2 和 select 枢轴转换作为与流的联合,以将来自枢轴的预告片记录与 source2 的源数据集相结合。

  1. 在合并后和设置中添加sink转换select 输出到单个文件并提供输出文件名。

接收器预览:

您可以使用附近的一些 SQL 资源来使用 CTE 和 UNION ALL 进行这种格式化。我只是在这里使用虚拟数据来演示原理,但是在添加尾随记录、动态计算尾随记录等方面,这样的事情会起作用:

;WITH cte ( xsort, source, balance ) AS (
SELECT
10,
'1', 100 
UNION ALL
SELECT 20, '2', 200
)
SELECT source, balance
FROM
    (
    SELECT xsort, source, balance
    FROM cte
    UNION ALL
    SELECT 
        30, 
        CONCAT( 'Trailer ',
            FORMAT( ( SELECT COUNT(*) FROM cte ), '00' ),
            ' ',
            ( SELECT SUM(balance) FROM cte ) 
            ) x, 
        NULL
    ) x
ORDER BY xsort;