知识库 : 需要预先排序的转换器说明

Edit Document

目录

需要预先排序的转换器说明

1.               什么是 输入流 预先排序

2.               为什么需要输 入流预先排序

3.               哪些转换器需要 输入流预先排序

4.               需要输入流 预先配置的转换器如何配置

4.1.               合并记录

4.2.               记录连 接

4.3.               记录 去重

4.4.               分组

5.               如果输入流没有预先 排序 有什么影响

6.               总结

需要预先排序的转换器说明

BY 纪文龙

1.     什么是 输入流 预先排序

对于一个转换器来说,有输入、输出,输入的数据按照某一字段或多个字段进行排序,这样转换器获取的输入流是预先排好序的。

 

2.     为什么需要输 入流预先排序

数据转换流程是一个生产者消费者模型,每个步骤为一个节点,而节点之间是通过一个阻塞队列来传递数据,前一个节点一条一条往阻塞队列写入,后面节点一条一条从阻塞队列读取。所以在这种机制下,某些转换节点比如记录去重转换器,当前读取一条判断是否重复就是要与前一条进行比较,所以就要预先排好序比较才有意义。

 

3.     哪些转换器需要 输入流预先排序

需要输入流预先排序的转换器列表

转换器

描述

合并记录

将旧数据源数据与新数据源合并,得到最新版本的数据。相当于oracle中的merge操作。(判断合并依据的字段需要排序)

记录连接

对具有来自两个不同输入步骤所得的数据集执行标准连接操作。连接选项包括 INNER、LEFT OUTER、RIGHT OUTER 和 FULL OUTER。(连接的字段需要排序)

记录去重

从输入流中去除重复行。(判断重复依据的字段需要排序)

分组

按照某些字段分组后,可以求聚合的值。(分组的字段需要排好序)

 

4.     需要输入流 预先配置的转换器如何配置

通过这些转换器的配置更好的来理解为什么需要输入流预先排序。数据准备:

I nput1的数据如下

I nput2的数据如下

4.1.     合并记录

转换配置如下

1.1         I nput1作为旧数据源,input2作为新数据源,判断记录合并的标准是id字段,前提就是id得排好序,配置如下:

结果预览

 

4.2.     记录连 接

转换 配置 如下

记录连接将input1和input2通过id进行连接,前提就是id得排好序,配置如下:

结果预览

4.3.     记录 去重

转换 配置 如下

认为 id 重复 就是重复数据,前提条件就是id得实现排好序,去重配置如下

去重结果查看

4.4.     分组

转换的 配置 如下

前三个 转换器 我的input1和input2是排好序的,如果没有排好序,可以增加个排序记录进行排序,这里对input1的id进行降序排列。然后再加分组求和

结果预览

 

5.     如果输入流没有预先 排序 有什么影响

如果输入流没有预先排序,那么会导致输出结果不正确,比如记录去重,如果输入流没有排序,那么只有相邻重复的行才会检查是否重复。

 

6.     总结

排序包括升序和降序,都可以,如果原始的输入文件没有排序,可以增加排序记录节点进行排序,如果原始输入是表输入,可以在表输入的sql查询语句处添加order by语句,也可以添加排序记录节点进行排序。

 

 

Attachments:

需要预先排序的转换器说明.docx (application/vnd.openxmlformats-officedocument.wordprocessingml.document)
需要预先排序的转换器说明.docx (application/vnd.openxmlformats-officedocument.wordprocessingml.document)