转换之转换组件
转换控件是转换里面的第三大组件,转换是ETL里面的(Transform),主要做数据转换,数据清洗的工作。ETL整个过程中,Transform的工作量最大,耗费时间也比较久,大概可以占到整个ETL的三分之二。
1. Concat fields
Concat fields转换控件,顾名思义,就是将多个字段连接起来形成一个新的字段。
2. 值映射
值映射就是把字段映射成其它值(码值转换功能)。在数据质量规范上使用非常多,比如很多系统对性别sex字段的定义不同【比如0和1、woman和man、男和女】。将一个字段的不同的值,映射换成我们需要的值。
- 选择映射的字段
- 还可以自定义映射完以后的新字段名
- 还可以设置不匹配时的默认值
- 设置映射的值
3. 增加常量&增加序列
增加常量就是在本身的数据流里添加一列数据,该列的数据都是相同的值。增加序列就是给数据流添加一个序列字段,可以自定义该序列字段的递增步长。
使用增加常量控件: 使用增加序列控件,它有两种方式添加,一种是使用序列,第二种是使用计数器:
4. 字段选择
字段选择控件就是从数据流中选择字段、改变名称、修改数据类型。在选择和修改中:不管修不修改,必须先获取所有字段,才能再进行删除或修改的操作。 进行删除操作:
在元数据选项卡中可以修改数据:
5. 计算器
计算器是一个函数集合来创建新的字段,还可以设置字段是否移除(临时字段)。我们可以通过计算器里面的多个计算函数对已有的字段进行计算,得出新的字段。 此外计算器还提供了其他计算规则:
6. 字符串剪切&替换&操作
转换控件中有三个关于字符串的控件,分别是剪切字符串,字符串操作,字符串替换。
- 剪切字符串是指定输出流字段裁剪的位置,剪切出新的字段。
- 字符串替换是指定搜索内容和替换内容,如果输入流的字段匹配上搜索内容就进行替换,生成新字段
- 字符串操作是去除字符串两端空格和大小写切换,并生成新的字段
对sex字段进行剪切,替换对sex字段进行替换
对sex字段进行操作(去空格,转大小写)
7. 排序记录&去除重复记录
去除重复记录是去除数据流里面相同的数据行。但是此控件使用之前要求必须先对数据进行排序,对数据排序用的控件是排序记录。排序记录控件可以按照指定的字段升序或降序对数据进行排序。因此排序记录+去除重复记录控件常常会组合使用。
设置id不允许重复
8. 唯一行(哈希值)
唯一行(哈希值)就是也是删除数据流重复的行。此控件的效果和(去除重复记录)的效果是一样的,但且原理不同。前者是对比每两行之间的数据,需要额外操作将数据排序,而唯一行(哈希值)是给每一行数据一个哈希值,通过哈希值来比较数据是否重复,因此唯一行(哈希值)去重效率比较高,也更建议大家使用。
9. 拆分字段
拆分字段是把字段按照分隔符拆分成两个或多个字段。需要注意的是,字段拆分以后,原字段就会从数据流中消失。
设置拆分字段 运行结果:
10. 列拆分为多行
列拆分为多行就是把指定字段按指定分隔符进行拆分为多行,然后其它字段直接复制。操作步骤如下:
- 选择要拆分的字段
- 设置合适的分隔符
- 设置分隔以后的新字段名
- 选择是否输出新数据的排列行号,行号是否重置
比如表中的数据是这样子: 配置列转换为行控件
运行结果
我们可以发现,转换后的结果中,被拆分为行的字段并没有被删除。
11. 行扁平化(不推荐用)
行扁平化就是把同一组的多行数据合并成一行,可以理解为列拆分为行的逆向操作。但需要注意的是行扁平化控件的使用有两个条件:
- 使用之前需要对数据进行排序(不排序可能会出现丢失数据)
- 每个分组的数据条数需要保证一致,否则数据会有错乱(该组件功能这么限制就比较鸡肋😑)
数据条数不一致,如下图,则不能使用行扁平化控件: 设置行扁平化控件
运行结果
12. 列转行
列转行,顾名思义多列转一行,就是如果数据一列有相同的值,按照指定的字段,将其中一列的字段内容编程不同的列,然后把多行数据转换为一行数据的过程。相比列拆分为多行控件支持多列转成一行。
警告
列转行之前数据流必须按照分组字段进行排序,否则数据会错乱!
控件使用配置说明:
- 关键字段:从数据内容变成列名的字段【星期】
- 分组字段:列转行,转换后的分组字段【姓名】
- 目标字段:增加的列的列名字段【周一~周日(可以自定义)】
- 数据字段:目标字段的数据字段【工作小时】
- 关键字值:数据字段在查询时的关键字,也可以理解为key【周一~周日(一定要填)】
输入数据如下: 必须先排序:
列转行:
运行结果:
13. 行转列
行转列,一行转转列,就是把数据字段的字段名转换为一列,把数据行变为数据列。我们也可以简单理解为行转列控件是列转行控件的逆行操作。
控件使用配置说明:
- Key字段:行转列,生成的列名字段名【星期】
- 字段名称:原本数据流中的字段名【Monday~Sunday】
- Key值:Key字段的值,这个是自定义的
- Value字段:对应的Key值的数据列的列名【工作时长】
数据输入:配置行转列
运行结果