kettle使用数据库来生成序列_kettle专题5:数据转换
我们说kettle是个ETL工具,如果把前面讲的输入控件看成是E,把输出控件看成是L,那么数据转换控件就是T的能力。
数据转换控件就是将抽提的数据按照目标要求进行的合并、分拆、映射、计算、行列转换以及扁平化等清洗转换工作。
一、几种常见的转换控件
1、增加常量控件
这个控件容易理解,如果需要将不同的数据进行空间和时间的标识,这需要增加一列进行区分,比如来自不同省份填写的数据,就要加上一个常量省份字段。
2、增加序列控件
经常在excel中可以看见序号列,既可以作为顺序进行计数,也可以作为唯一主键,这个控件给数据增加序号,完成简单的主键。
3、Concat fields控件
如果需要将数据中的多个字段进行合并,就可以使用这个控件。比如可以将三级级联选择的省市县三个字段合并为一个字段。
4、值映射控件
应用设计中不少数据字段都设置为字典映射值,这样的好处是既可以提高查询速度(字符串映射为数字),另外可以不需要修改历史数据,修改字典值就可以数据的修改。如果需要在入库前将文字信息转化为字典值后入库,就可以将数据库中的字典映射关系使用值映射控件完成。
5、字段选择控件
这个控件可以实现字段选择,名称修改,类型转换。
6、计算器控件
计算器控件实际上就是一个函数集合,如果需要对字符串、数字、时间等类型的数据进行算数运算和特殊运算处理,比如日期的加减,就可以使用这个控件。
7、字符串剪切、替换、操作控件
这三个控件主要是针对字符串,实现字符串中的截取、替换、以及去空格、大小写转化等常规操作。
8、去除重复记录和排序控件
字面上就能理解,清洗数据就是去重,按照规则进行排序。
9、唯一行 (哈希值)控件
这个控件非常有用,当我们数据缺少主键时,可以由确定唯一行的多个字段生成哈希值作为数据的主键。
10、拆分字段控件
将一个字段按照指定字符进行拆分成过个字段,比如两个手机号用逗号分开,我们可以拆分为,手机号1,手机号2。
11、列拆分为多行控件
和拆分字段控件不同的是这个控件是按照字段中的多个值拆分成多条记录,其它字段信息为相同的行。
12、行转列控件
根据某个分组字段进行行转列,比如按照省份的数据,转化为每个省名称为一列的数据。
13、列转行控件
是行转列的逆运算控件。
14、行扁平化控件
是列拆分为多行控件的逆运算,可以将分组相同的多条数据中的一个字段数据进行拆分成多个列字段。
掌握这些控件基本能够搞定90%以上的转化任务。
二、excel处理演示
1、需求
我们有如下这样的表格,然后按照省份进行数量统计,并将这个省的所有人员合并到一起作为一个字段,转化后的格式为第二张图。
转换图如下:
首先通过excel输入控件获得要转换的数据,然后排序后去重,根据省份分组,分组后按照数量再次排序并生成目标文件输出为excel格式。
排序和去重控件都很好配置,无非是设置字段,但对于分组需要说明一下:
使用聚合类型为“使用,连接同组字符串”的聚合方法,很轻松的实现多个字段的合并。
最终完成的后的excel如图,完全按照我们的转换目标:
如果希望字段姓名中的名字之间用空格,也可以使用字符串替换控件进行替换。另外,也可以使用excel输出控件的设置模板,对数据进行格式设置来美化。
三、关于转换控件的几点说明
1、转换控件在数据量较少的情况下很方便的实现很多转换任务,但如果数据量较大时进行的排序和转化会受到java处理性能的影响,建议数据量较大时一定考虑转换控件的性能,可以在获取源数据之前完成去重和排序的操作。
2、我们可以轻松结合转换控件完成既定目标的数据处理,这对于对excel公式不熟,不了解vba的人来说,又多了一种处理手段。通过清晰的逻辑和控件的拖拽完成一个转换任务,后续可以重复调用这个转换任务,完成同类任务工作。
3、有了这些控件只能完成单一模式的转化任务,下个专题我们会介绍流程控件,有了流程控件的配合使用,就可以完成excel的拆分,合并以及复杂的逻辑任务。
其它文档阅读
kettle专题1:一款免费的ETL工具
kettle专题2:数据库操作
kettle专题3:数据从哪里来
kettle专题4:数据的目的地
kettle使用数据库来生成序列_kettle专题5:数据转换相关推荐
- kettle使用数据库来生成序列_Kettle的安装和使用
Kettle简介 Kettle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行,数据抽取高效稳定. Kettle是"Kettle E.T.T.L. ...
- kettle使用数据库来生成序列_Python办公自动化:使用python来自动生成word文档
让python做办公自动化,让你闲下来 让python做自动化,让你闲下来 上节对python的excel Python办公自动化系列:自动操作Excel自动化做了介绍.这次介绍如何用python对w ...
- Kettle使用_17 计算器生成时间维度数据
Kettle使用_17 计算器生成时间维度数据 需求: 通过Kettle的组件自动生成时间维的数据. 解决方法:结合增加序列.计算器.选择字段等组件解决,这里主要是通过计算器里的支持的计算类型来实现的 ...
- 数据库 测试数据生成_我们的测试数据生成器如何使假数据看起来真实
数据库 测试数据生成 by Tom Winter 汤姆·温特(Tom Winter) 我们的测试数据生成器如何使假数据看起来真实 (How our test data generator makes ...
- 基于Visual Studio2010讲解LINQ读出数据库数据生成XML
LINQ to XML 是一种启用了 LINQ 的内存 XML 编程接口,使用它,可以在 .NET Framework 编程语言中处理 XML. LINQ to XML 最重要的优势是它与 Lang ...
- oracle 序列验证脚本,oracle 生成序列脚本
今天在移植一个项目的的数据库时,要移动所有的序列,下面就是一个如何生成序列脚本的语句 方法一: SELECT ' CREATE SEQUENCE '||SEQUENCE_NAME|| ' INCREM ...
- Oracle数据库之创建序列
@[TOC](Oracle数据库之创建序列) ##序列的创建 Oracle不像mysql一样可以创建自增的主键ID,所在在需要某一字段或者是主键自增的时候,我们就需要在Oracle中创建序列,一般创建 ...
- Paper:RNN之《Generating Sequences With Recurrent Neural Networks用循环神经网络生成序列》的翻译和解读
Paper:<Generating Sequences With Recurrent Neural Networks>的翻译和解读 目录 Generating Sequences With ...
- oracle数据库序列码,oracle 数据库中的序列
序列是什么,通俗点说,序列就是按照一定顺序进行排列,序列会自动给你递增,生成唯一的序列号: oracle数据库不同于sqlServer数据库,oracle数据库中是没有自增长列,使用的是sequenc ...
最新文章
- redux-thunk使用教程
- 使用Javap分析Java代码里的static final的工作原理
- 使用开发者工具调试jsp页面中的脚本
- ASP.NET MVC3 系列教程 – Web Pages 1.0
- flex实现最后一个元素居右
- 软件生产的工业化思路
- 请求转发 tomcat 404错误
- 思科里服务器的dns配置文件,cisco设置dns
- iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 5000 -j DNAT --to-destinatio
- 兼容性问题:安卓正常,ios报错invalid group specifier name
- go语言基础(四):继承、方法
- 【计算机网络】网络层——IPv6/IP组播/移动IP
- java 设计模式之: 建造模式(Builder)
- 括弧匹配检验:比较基础的栈
- 计算机常用英文简称扫盲
- 『每周译Go』那些年我使用Go语言犯的错
- The rate shock 利率冲击 | 经济学人中英双语精读笔记
- 微信小程序滑块验证方法
- linux视频教程第0讲.开山篇
- 【转】NLP 的巨人肩膀(下)
热门文章
- linux搭建nfs
- iphone储存空间系统怎么清理_iPhone储存空间里其他占了几十GB,怎样彻底删除它?...
- java byte缓存_java-如何使用带byte []键的番石榴缓存?
- 华为鸿蒙系统可能,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可
!【手机吧】_百度贴吧...
- java函_Java 8的函式重用
- 同时多次调用存储规程_本体技术视点 | 神奇的Merkle树是如何实现存储层优化的?...
- RocketMQ 分布式事务
- jumpserver(0.3.2版本)开源跳板机系统部署
- cogs 167. [USACO Mar07] 月度花费
- eclipse clean和build作用