就是将数据从其它载体中输入到kettle中,即抽取数据过程,我们可以从数据库表中获取,从文本件,EXCEL,XML等文件获取,还可以只在kettle中模拟数据,或者获取系统中的参数,往往是kettle的开始部分。
生成记录
生成一些固定字段的记录,主要用来模拟一些数据进行测试;
注意:如果【生成记录】前面还有其他转换操作,前面的记录是无法正确读取的。所以该控件一般作为开始控件。
获取固定数据
制定时间获取数据:
自定义常量数据
自定义常量数据步骤主要用于增加自定义字段和行集数据到流中,可增加多个字段并为每个字段赋予行集的值。步骤配置信息如图1所示。
下文详细解释各控件的含义:
1、转换步骤名称:步骤的名称,在单一转换中,名称必须唯一。
2、元数据:用于设置字段的信息,若字段定义为date类型,则格式必须选择。如图1所示,定义了c_time、id、info三个字段。
(1)名称:输入行集的字段名称。
(2)类型:指定字段类型:字符串、日期、数字、布尔值、整数、BigNumber、可序列化或二进制。
(3)格式:格式化字符串时需要。例如需要格式化日期与时间,那么可以用yyyy-MM-dd’T’HH:mm:ss.XXX,注意其中单引号限定部分。如果需要在日期格式中使用原始字母,那么必须用单引号限定,否则将当成表达式解析。注:需与类型关联使用。
(4)长度:对于数字:数字的有效长度;对于字符串:字符串的总长度;对于日期:字符串的打印输出长度(例如,输入4只会返回年份)。
(5)精度:对于数字:小数位数。
(6)货币类型:货币符号,主要用在财务场景,一般放在货币金额数字的前缀或者后缀。例如人民币一般用的¥,美元一般用$,欧元一般用€。该控件对于步骤本身不产生影响,只是对该字段的货币类型进行备注。
(7)小数:这里应属于翻译错误,翻译为“小数点符号”更为合适。在字符型转小数型(BigNumber)时,识别字符串中的小数点。如字符串“123,456.789”和“123456.789”转BigNumber型时,设置十进制为“.”,则能转变为123456.789。有意思的是这里除了能识别“.”,还能适配其他字符,如“,”、“|”、“_”、甚至字母“a”都可以。只要字符被替换成“.”之后整个字符串是符合数字格式的就行。注意不管设置多长的字符串,这里始终只取第一个字符作为小数点符号。
(8)分组:在字符型转小数型(BigNumber)时,识别字符串中的分隔符(常见的千位分隔符)。如字符串“6,123,456.789”转BigNumber型时,设置分组为“,”,则能转变为6123456.789。有意思的是这里除了能识别“,”,还能适配其他字符,如“.”、“|”、“_”、甚至字母“a”都可以。只要字符被转换后整个字符串是符合数字格式的就行。另外分组可以结合小数点符号做一些更有意思的事情,如有一个字符串如“123.456,789”,将小数点符号设为“,”,将分组设为“.”,可转换为“123,456.789”。
(9)设为空串:选择下拉菜单中的“是”或“或”。默认设置为“否”,当选择为“是”时,则该字段会输出一个空的字符串。注:空的字符串类型不能被后续步骤的数字型字段接收,如果要输出数字类型的空值,请设置该字段类型为Number,且设为空串处设为“否”。
3、数据:用于为定义的字段填充行集数据。
获取系统信息
获取系统参数包括命令行输入的参数,操作系统时间,ip 地址,一些特殊属性,kettle 版本等
CSV文件输入
CSV 文件是一个用逗号分隔的固定格式的文本文件,这种文件后缀名为.csv,可以用Excel或者文本编辑器打开。在企业里面一般最常见的
ETL 需求就是将 csv 文件转换为 excel 文件,如果用 Kettle 来做这个
ETL工作,就需要用到本章节讲解的CSV文件输入控件。
- 步骤名称:可以修改,但是在同一个转换里面要保证唯一 性, 见名知意
- 文件名:选择对应的csv文件
- 列分隔符:默认是逗号(不用改)
- 封闭符:结束行数据的读写(不用改)
- NIO 缓存大小:文件如果行数过多,需要调整此参数
- 包含列头行:意思是文件中第一行是字段名称行,表头不进行读写
- 行号字段:如果文件第一行不是字段名称或者需要从某行开始读写,可在此输入行号。
- 并发运行? :选择并发,可提高读写速度
- 字段中有回车换行? :不要选择,会将换行符做数据读出
- 文件编码:如果预览数据出现乱码,可更换文件编码。
文本文件输入
提取服务器上的日志信息是公司里 ETL开发很常见的操作,日志信息基本上都是文本类型,因此文本文件输入控件是kettle中常用的一个输入控件。
配置文件处理规则
配置输出的数据名称
XML文件输入
XML可扩展标记语言eXtensible
MarkupLanguage,由W3C组织发布,目前推荐遵守的是W3C组织于2000年发布的XML1.0规范。XML用来传输和存储数据,就是以一个统一的格式,组织有关系的数据,为不同平台下的应用程序服务。
XPath即为XML路径语言(XML Path
Language),它是一种用来确定XML文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。XPath使用路径表达式在XML文档中选取节点。下面列出了最有用的路径表达式
XML控件配置说明
获取 xml文档的所有路径,设置合适的循环读取路径
获取字段,获得自己想要读取的所有字段,并且设置适当的格式
获取表名
➢ 获取某个数据库的表信息
➢ 获取视图信息
➢ 获取存储过程信息
➢ 获取同义词信息
➢ 获取模式名
➢ 获取数据库名
➢ 可以在表名、视图名、过程名前添加上模式名
JSON输入
1)JSON介绍
JSON(JavaScript Object
Notation,JS对象简谱)是一种轻量级的数据交换格式。JSON对象本质上就是一个JS对象,但是这个对象比较特殊,它可以直接转换为字符串,在不同语言中进行传递,通过工具又可以转换为其他语言中的对象。
JSON核心概念:
数组:[]
对象:{}
属性:key:value
2)JSON Path
JSONPath 类似于 XPath 在 xml 文档中的定位,JsonPath
表达式通常是用来路径检索或设置Json的。其表达式可以接受“dot - notation”(点记法)和“bracket
-notation”(括号记法)
格式:
点记法:$.store.book[0]title
括号记法:$[‘store’][‘book’ ][0][ ‘ title’ ]
3)JSON 输入控件
了解JSON格式和JSON Path以后,我们要学习使用JSON输入控件,JSON控件也是企业里做ETL常用的控件之一
Excel输入
Excel输入控件也是很常用的输入控件,一般企业里会用此控件对大量的Excel文件进行ETL操作。
表输入
表输入可以说是kettle中用到最多的一种输入控件,
因为企业中大部分的数据都会存在数据库中。kettle可以连接市面上常见的各种数据库,比如Oracle,Mysql,
SqlServer等。但是在连接各个数据库之前,我们需要先配置好对应的数据库驱动,本教程以mysql为例,给大家讲解kettle连接mysql数据库的过程。
-
下载对应数据库的驱动放到kettle的lib下:
-
重启Spoon客户端;
-
创建对应的DB链接
-
数据库连接默认只对本转换有效,换一个转换以后,这个连接就没法用了,还需要新建数据库连接,所以我们需要将建好的这个数据库连接进行共享下,共享以后,其他的转换也能用我们提前建好的这个数据库连接了。
-
创建好数据库连接以后,我们就可以使用表输入控件了,双击表输入控件,选择刚刚创建的数据库连接,然后在SQL框里输入合适的查询语句,然后点击预览按钮,看能否预览到我们期望的数据