Kettle 学习笔记1

182 阅读5分钟

Kettle 学习笔记1

本地安装

  1. 安装JDK

  2. 配置环境变量

    系统变量:JAVA_HOME

    系统变量:KETTLE_HOME:data-integration

  3. 配置环境变量

    path: %JAVA_HOME% ; %KETTLE_HOME%

核心概念

  1. 可视化编程

    使用图形化的方式定义复杂的ETL程序和工作流

  2. 转换

    • 转换处理抽取、转换、加载各种对数据行的操作
    • 转换包含一个或多个步骤 (Step),如读取文件,过滤数据行,数据清洗
    • 转换里的步骤通过跳(hop)来连接,hop定义一个单向通道,允许数据从一个步骤向另一个步骤流动
    • 在Kettle中,数据的单位是行
  3. Step 步骤

    • 步骤需要一个名字,这个名字在转换范围内是唯一的
    • 每个步骤都会读、写数据(唯一例外的是“生产记录”步骤,该步骤只写数据)
  4. Hop 跳

    • 跳就是步骤之间带箭头的连线,跳定义了步骤之间的数据通路
    • 跳实际上是两个步骤之间的被称之为行集的数据行缓存
  5. 作业

    • 对于Kettle的转换,所有步骤都以并发方式运行,当转换启动后,所有步骤都同时启动,因此想要一个任务沿着指定的顺序执行,那么就要使用作业

输入控件

输入就是用来抽取数据或生产数据,是ETL 操作中的 E

csv文件输入

CSV文件是一种带有固定格式的文本文件

文件编码:GBK

文本文件输入

EXCEL 输入

多文件合并( 多个EXCEL 文件合并)

Get data from XML

XML:可扩展标记语言,XML 被设计用来传输和存储数据

XPath:基于XML 树状结构,提供在数据结构树中寻找节点的能力

<AllRows testDescription="1 - simple functionality test"> - 根节点
    <Rows rowID="1">first row chunk of data - 属性
         <Row> - 节点
             <v1>1.1.1</v1>
             <v2>1.1.2</v2>
        </Row>
         <Row>
             <v1>1.2.1</v1>
             <v2>1.2.2</v2>
        </Row>
    </Rows>
    <Rows rowID="2">second row chunk of data
        <Row>
            <v1>2.1.1</v1>
            <v2>2.1.2</v2></Row>
        <Row>
            <v1>2.2.1</v1>
            <v2>2.2.2</v2></Row>
    </Rows>
    <Rows rowID="3">third row chunk of data
        <Row><v1>3.1.1</v1><v2>3.1.2</v2></Row>
        <Row><v1>3.2.1</v1><v2>3.2.2</v2></Row>
    </Rows>
</AllRows>
​
​
# 循环读取路径: /AllRows/Rows/Row 这样只能读到v1 和 v2
# 在字段中添加
testDescription   ../../@testDescription  属性  Vaule of  String
rowID  ../@rowID  属性 Vaule of Integer
<?xml version="1.0" encoding="UTF-8"?>
<messages>
    <note id ="501">
        <to>Geroge</to>
        <from>John</from>
        <heading>Reminder</heading>
        <body>Don't forget the meeting</body>
    </note>
    <note id ="502">
        <to>John</to>
        <from>Geroge</from>
        <heading>Re: Reminder</heading>
        <body>I will not</body>
    </note>
</messages>
​
# 循环读取路径: /messages/note 这样只能读到 to 、from、 heading、 body
# 在字段中添加
id   @id  属性  Vaule of  String

JSON Input

JSON 核心概念:数组、对象、属性

数组: [ ]

对象: { }

属性: key : value

生成记录

静态数据:静态维度数据是可以提前生成的; 数据仓库中绝大多数的数据都是业务系统生成的动态数据,但其中一部分维度数据不是动态的, 比如:日期维度。

在excel文件中插入1000条记录,id为1,name为Amanda,age为18

输出控件

输出是转换里面的第二个分类,是ETL 操作中的 L (Load)

  1. Excel 输出

xls:2007年之前

xlsx:2007年之后

  1. Microsoft Excel 输出

    如果数据量较大勾选:Stream XSLX data

  2. 文本文件输出

    扩展名:txt 和 csv

  3. SQL 文件输出

    可以导出数据库表的结构和数据

  4. 表输出

    把数据写入到指定的表

  5. 插入更新

    把数据库已经存在的记录与数据流里面的记录进行比对,如果不同就进行更新,如果记录不存在就插入数据

  6. 删除

自定义常量数据就是生成key-value形式的常量数据

删除就是删除数据库表中指定条件的数据

转换控件

输出是转换里面的第三个分类,是ETL 操作中的T(Transform)

  1. Concat fields

    多个字段连接起来形成一个新的字段

    Target Field Name: 新字段名

    Separator:连接符号

  2. 值映射

    值映射就是把字段得一个值映射成其他的值

    使用的字段名:需要映射的字段

    目标字段名:映射生成的字段

    字段值: 映射规则

  3. 增加常量

    在本身的数据流里面添加一列数据,该列的数据都是相同的值

  4. 增加序列

    给数据流添加一个序列字段

    只有Oracle 支持使用数据库来生成序列

  5. 字段选择

    从数据流中选择字段、改变名称、修改数据类型

  6. 计算器

    是一个函数集合来创建新的字段,还可以设置字段是否移除(临时字段):A*B、Quarter of date A、Day of week of date A

  7. 字符串-剪切-操作-替换

    剪切字符串:指定输入流字段裁剪的位置剪切出新的字段

    字符串替换:指定搜索内容和替换内容,如果输入流的字段匹配上搜索内容就进行替换生成新字段

    字符串操作:去除字符串两端的空格喝大小写切换,并生成新的字段

  8. 去除重复记录 + 排序记录

    必须先对数据流进行排序才能去除重复记录 [去除数据流里面相同的数据行]

  9. 唯一行 (哈希值)

    唯一行(哈希值)就是删除数据流重复的行,与(排序+去除重复记录)效果一样的,但实现的原理不同。

    唯一行(哈希值)执行的效率会高一些

  10. 拆分字段

    拆分字段是把字段按照分隔符拆分成两个或多个字段。

    拆分字段后,原字段就不存在于数据流中

  11. 列拆分为多行

    指定分隔符的字段进行拆分为多行

  12. 列转行

    列转行之前数据流必须进行排序

    如果数据一列有相同的值,按照指定的字段,把多行数据转换为一行数据,去除一些原来的列名,把一列数据变为字段

  13. 行转列

    行转列就是把数据字段名转换为一列,把数据行转换成数据列

  14. 行扁平化

    数据流必须进行排序,只有数据流的同类数据数据行记录一致的情况才可以使用