Azure Data Factory映射数据流分组后取最大created date对应全量字段咨询
可行实现方案
以下两种方案均可在Azure Data Factory的Mapping Data Flows中实现需求:
方案1:聚合转换+连接转换组合
适合已经完成聚合逻辑配置的场景:
- 保留你已配置好的按目标列分组的聚合转换,在聚合的聚合列配置中只保留分组键,新增一个计算项
max(createddate),命名为max_createddate,不需要加其他聚合字段,这一步输出仅包含分组键和每组最大日期两个维度的结果。 - 在聚合转换后新增连接转换(Join),左流选择你的原始输入数据流,右流选择上一步的聚合输出流。
- 连接条件设置为:原始流的所有分组键字段等于聚合流的对应分组键字段,同时原始流的
createddate等于聚合流的max_createddate,连接类型选择内连接(Inner Join)。 - 连接转换后新增选择转换(Select),删除重复的分组键、
max_createddate字段,仅保留原始流的所有字段,最终输出的就是每组createddate最大值对应的全字段记录。
方案2:窗口转换(更简便)
不需要拆分数据流,单链路即可完成:
- 移除原有聚合转换,新增窗口转换(Window)。
- 在「Over」选项卡中,添加你需要分组的所有列作为分区键。
- 在「排序」选项卡中,选择
createddate作为排序列,排序顺序设置为降序(Descending)。 - 在「窗口列」选项卡中,新增一个临时列(可命名为
row_rank),表达式填写rank()。 - 窗口转换后新增筛选转换(Filter),筛选条件设置为
row_rank == 1,后续直接输出即可得到每组createddate最大值对应的全字段记录。
注意:如果同一分组内存在多条
createddate完全相同且均为最大值的记录,上述两种方案都会输出所有符合条件的记录。如果你只需要保留单条,可以在窗口转换的排序规则中额外加一个唯一键列作为次排序条件,同时将表达式替换为rowNumber()即可实现单条输出。
内容的提问来源于stack exchange,提问作者user15488631
相关产品推荐
相关产品推荐

