如何通过ADF Data Flow将CSV转换为ADLS中的订单上卷聚合输出?
使用Azure Data Factory Data Flow实现订单数据的上卷聚合(Roll-Up Aggregation)
需求说明
通过ADF Data Flow将指定CSV输入数据转换为ADLS中的目标输出,实现按城市、国家维度的上卷聚合,统计各层级的订单ID数量。
输入数据
order_id,city,country L10,Sydney,Australia L11,Annecy,France L12,Montceau,France L13,Paris,France L14,Montceau,Canada L15,Ste-Hyacinthe,Canada
目标输出数据
COUNTRY,CITY,TOTAL_Order Australia,Sydney,1 Australia,Total,1 Canada,Montceau,1 Canada,Ste-Hyacinthe,1 Canada,Total,2 France,Annecy,1 France,Montceau,1 France,Paris,1 France,Total,3 Total,Total,6
(注:目标输出中Canada的城市Montréal应为输入中的Montceau,属于笔误,转换将以源数据为准)
具体实现步骤
1. 配置数据集
- 创建输入数据集:指向存储在ADLS(或其他存储)中的源CSV文件,开启“首行作为表头”选项。
- 创建输出数据集:指定ADLS中的输出路径,同样配置CSV格式,开启表头输出。
2. 构建Data Flow
2.1 添加源转换
拖入「源」组件,关联输入数据集,确认数据预览能正确读取order_id、city、country三列。
2.2 生成三级聚合分支
需要分别生成城市级、国家级、全局级三个统计分支,再合并结果:
- 分支1:城市-国家级统计
拖入「聚合」组件,分组依据选择country和city,添加聚合列TOTAL_Order,表达式为count(order_id),统计每个城市的订单数。 - 分支2:国家级汇总
从源组件分支拖入另一个「聚合」组件,仅将country作为分组依据,聚合列TOTAL_Order用count(order_id),同时添加派生列city,固定值为'Total'。 - 分支3:全局级汇总
再拖入一个「聚合」组件,不设置任何分组依据,聚合列TOTAL_Order用count(order_id),添加派生列country和city,固定值均为'Total'。
2.3 合并分支数据
拖入「联合」(Union)组件,将上述三个分支的输出接入,确保所有分支的列名、数据类型一致。之后可添加「派生列」组件,将列名重命名为大写的COUNTRY、CITY、TOTAL_Order,匹配目标输出格式。
2.4 写入输出
拖入「接收器」(Sink)组件,关联输出数据集,配置写入模式(按需选择覆盖或追加),完成数据写入。
验证结果
运行Data Flow后,ADLS中的输出文件应与目标格式完全匹配,包含各层级的订单统计数据。
内容的提问来源于stack exchange,提问作者Debashis
相关产品推荐
相关产品推荐

