在尾部记录中显示聚合函数输出
display aggregate function output in trailer record
我们正在读取包含两个字段的 csv 文件输入。示例输入文件供参考
source, balance
1,100
2, 200
我需要在以下详细信息的输出中创建一个预告片记录-
- csv文件中的记录数(不包括文件头)
- 输入文件的“余额”列中的值总和
在我们的例子中,预告片记录将为 -
Trailer 02 300
如何在数据工厂中实现这一点?
我已经使用您的示例数据进行了重现,并且能够使用数据流添加具有聚合值的预告片记录。
- 将 source1 添加到源数据集。
- 添加
derived column
转换以创建具有虚拟值的虚拟列。
- 添加
pivot
转换以获取尾部记录的聚合值。
concat('Trailer ',toString(count(source)),' ',toString(sum(toInteger(balance))))
- 使用与源 1 相同的源数据集添加 source2。
- 将
union
转换添加到 source2 和 select 枢轴转换作为与流的联合,以将来自枢轴的预告片记录与 source2 的源数据集相结合。
- 在合并后和设置中添加
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;
我们正在读取包含两个字段的 csv 文件输入。示例输入文件供参考
source, balance
1,100
2, 200
我需要在以下详细信息的输出中创建一个预告片记录-
- csv文件中的记录数(不包括文件头)
- 输入文件的“余额”列中的值总和
在我们的例子中,预告片记录将为 -
Trailer 02 300
如何在数据工厂中实现这一点?
我已经使用您的示例数据进行了重现,并且能够使用数据流添加具有聚合值的预告片记录。
- 将 source1 添加到源数据集。
- 添加
derived column
转换以创建具有虚拟值的虚拟列。
- 添加
pivot
转换以获取尾部记录的聚合值。
concat('Trailer ',toString(count(source)),' ',toString(sum(toInteger(balance))))
- 使用与源 1 相同的源数据集添加 source2。
- 将
union
转换添加到 source2 和 select 枢轴转换作为与流的联合,以将来自枢轴的预告片记录与 source2 的源数据集相结合。
- 在合并后和设置中添加
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;