目录
一、Kettle介绍
Kettle 是一个开源的 ETL(Extract, Transform, Load,提取、转换、加载)工具,全称为KDE Extraction, Transportation, Transformation and Loading Environment,广泛应用于数据集成、数据清洗、数据迁移等领域。它的名字“Kettle”源自其“装置”功能的含义,即“把各种数据源像水一样提取出来并进行处理”。在2006年被Pentaho公式收购后,重命名为 Pentaho Data Integration(PDI),这个工具能够帮助用户在不同的数据源和目标系统之间进行数据转换、清洗和加载。Kettle 被广泛用于构建数据仓库、数据集成平台等。
二、作业
作业是Kettle中用于组织和调度多个数据处理任务的高级组件。一个作业可以包含多个作业项(Job Entry),每个作业项代表了一项具体的工作。这些作业项可以是数据转换(Transformation)、发送邮件通知、执行脚本等其他任务。作业能够定义这些任务之间的顺序和依赖关系,从而确保数据处理流程的有序执行。
1、作业项
作业项是Kettle作业中的基本元素,每个作业项都对应了一个具体的操作或任务。这些操作可以是数据转换、发送邮件、执行脚本、验证表是否存在等。作业项通过作业设计器中的图形化界面进行配置和管理,用户可以根据需要添加、删除或修改作业项。
2、作业跳
作业跳是Kettle作业设计器中的一种图形化元素,用于连接作业中的不同作业项。每个作业跳都表示了一个单向的数据或控制流通道,允许作业项之间传递结果对象或执行控制信号,包括:
- 无条件执行:这种类型的作业跳无论上一个作业项是否执行成功,都会执行下一个作业项。它通常用于那些不依赖于前一个作业项执行结果的任务。
- 当运行结果为真时执行:这种类型的作业跳只有在上一个作业项执行成功(即返回结果为真)时,才会执行下一个作业项。它通常用于需要确保前一个任务成功完成才能继续执行下一个任务的情况。
- 当运行结果为假时执行:这种类型的作业跳在上一个作业项执行失败(即返回结果为假)时,才会执行下一个作业项。它通常用于处理错误或异常情况的任务。
三、作业控件详解
1、通用
1.1 Start
参数名称 | 作用描述 | 默认值/备注 |
---|---|---|
Job entry name | 表示任务入口名称,一个任务只有一个入口。 | 默认值为 Start 。 |
重复 | 表示是否重复执行任务,当需要定时调度时,就是需要重复。 | 缺省值为空(不重复)。 |
类型 | 表示定时的类型。 | 缺省值为“不需要定时”。可选值: 1. 不需要定时 2. 时间间隔 3. 天 4. 周 5. 月 |
以秒计算的间隔 | 表示以秒计算时,时间间隔的秒数。 | 只有当类型选择为“时间间隔”时有效,缺省值为 0 。 |
以分钟计算的间隔 | 表示以分钟计算时,时间间隔的分钟数。 | 只有当类型选择为“时间间隔”时有效,缺省值为 60 。 |
每天 | 表示定时类型为天、周、月时,所在天的开始执行任务的时刻为第几小时、第几分钟。 | 小时数缺省值为 12 ,分钟数缺省值为 0 。 |
每周 | 表示定时类型为周时,开始执行任务的时间为星期几。 | 缺省值为 星期一 。 |
每月 | 表示定时类型为月时,开始执行任务的时间为每月的第几日。 | 缺省值为 1 。 |
1.2 转换
【Options】选项卡
参数名称 | 作用描述 | 默认值/备注 |
---|---|---|
Run configuration | 表示运行环境配置,指定转换的运行环境(如本地Pentaho引擎、Spark客户端等)。 | 默认值为 Pentaho local 。 |
执行每一个输入行? | 表示是否对每个输入行运行一次转换。 | 默认值为空(不执行)。 |
在执行前清除结果行列表? | 表示是否在转换开始之前清除结果行列表。 | 默认值为空(不清除)。 |
执行前清除结果文件列表? | 表示是否在转换开始之前清除结果文件列表。 | 默认值为空(不清除)。 |
等待远程转换执行结束 | 如果选择Server运行环境类型,是否等待转换在服务器上运行结束。 | 默认值为 √ (等待)。 |
本地转换终止时远程转换也通知终止 | 如果选择Server作为环境类型,是否向远程发送本地中止信号。 | 默认值为空(不通知)。 |
【设置日志】选项卡
参数名称 | 作用描述 | 默认值/备注 |
---|---|---|
指定日志文件? | 表示是否指定日志文件的相关设置。 | 默认值为空(不指定)。 |
日志文件名 | 表示日志文件名称,可通过【浏览…】按钮选择文件路径。 | 缺省值为空。 |
日志文件后缀名 | 表示日志文件的后缀名称。 | 缺省值为空。 |
日志级别 | 表示记录的日志级别,选项包括: 1. 没有日志 2. 错误日志 3. 最小日志 4. 基本日志 5. 详细日志 6. 调试 7. 行级日志 | 默认值为 基本日志 。 |
添加到日志文件尾 | 表示日志信息是否追加到日志文件末尾。 | 默认值为空(不追加)。 |
创建父文件夹 | 表示是否创建日志文件的父文件夹。 | 默认值为空(不创建)。 |
日志文件包括日期? | 表示日志文件名称是否包含日期。 | 默认值为空(不包含)。 |
日志文件包括时间? | 表示日志文件名称是否包含时间。 | 默认值为空(不包含)。 |
【Arguments】选项卡
参数名称 | 作用描述 | 默认值/备注 |
---|---|---|
复制上一步结果到位置参数 | 表示是否将上一步结果复制到位置参数。如果选择了【执行每一个输入行?】,则每行生成一组命令行参数。 | 缺省值为空(不复制)。 |
Argument | 表示传递给转换的命令行参数。 | 缺省值为空。 |
【命名参数】选项卡
参数名称 | 作用描述 | 默认值/备注 |
---|---|---|
复制上一步结果到命名参数 | 表示是否将前一个转换的结果复制为转换的参数。 | 默认值为空(不复制)。 |
将所有参数值都传递到子转换 | 表示是否将任务的所有参数传递给子转换。 | 默认值为 √ (传递)。 |
命名参数 | 表示传递给转换的参数名称。 | 默认值为空。 |
流列名 | 表示将来自前一个转换传入记录的字段指定为参数。 | 默认值为空。 |
值 | 表示转换参数的值,可通过以下方式设置: 1. 手动输入值 2. 使用参数设置值(如 ${Internal.Job.name} ) 3. 组合手动值和参数值(如 ${FILEPREFIX}${FILE DATE}.txt ) | 默认值为空。 |
1.3 成功
在任务中,使用成功组件,是为了让任务中的组件都能够执行,清除任务中遇到的任何错误状态,并强制任务进入成功状态。
2、邮件
2.1 发送邮件
地址选项卡
参数名称 | 作用描述 | 默认值/备注 |
---|---|---|
收件人地址 | 指定邮件的接收者地址,可以输入一个或多个地址,用逗号分隔。 | 缺省值为空。 |
抄送 | 指定抄送地址,邮件会发送给这些地址的收件人,同时主收件人也会收到邮件。 | 缺省值为空。 |
暗送 | 指定密送地址,邮件会发送给这些地址的收件人,但主收件人和抄送人不会知道这些密送地址。 | 缺省值为空。 |
回复名称 | 指定邮件回复时显示的名称。 | 缺省值为空,一般使用发件人名称。 |
发件人地址 | 指定邮件的发件人地址。 | 缺省值为空。 |
回复地址 | 指定收件人回复邮件时的接收地址。 | 缺省值为发件人地址。 |
联系人 | 指定邮件发送者的联系人信息,一般用于邮件签名或联系详情。 | 缺省值为空。 |
联系电话 | 指定邮件发送者的联系电话,一般用于邮件签名或联系详情。 | 缺省值为空。 |
服务器选项卡
参数名称 | 作用描述 | 默认值/备注 |
---|---|---|
STMP服务器 | 指定SMTP服务器地址,用于发送邮件。 | 缺省值为空。 |
端口号 | 指定SMTP服务器的端口号,一般为25、465或587。 | 缺省值为空。 |
用户验证? | 指定是否需要用户验证来登录SMTP服务器。 | 缺省值为空。 |
用户名 | 指定登录SMTP服务器的用户名。 | 缺省值为空。 |
密码 | 指定登录SMTP服务器的密码。 | 缺省值为空。 |
使用安全验证? | 指定是否使用安全验证(如SSL/TLS)来加密邮件发送过程。 | 缺省值为不使用。 |
安全连接类型 | 指定使用的安全连接类型,如SSL、TLS。 | 缺省值为SSL。 |
邮件消息选项卡
参数名称 | 作用描述 | 默认值/备注 |
---|---|---|
信息里带日期? | 指定邮件内容中是否包含发送日期。 | 缺省值为不包含。 |
只发送邮件注释? | 指定是否只发送邮件注释部分,而不包含其他邮件内容。 | 缺省值为否。 |
使用HTML邮件格式? | 指定邮件内容是否使用HTML格式。 | 缺省值为否。 |
编码 | 指定邮件内容的编码格式,如UTF-8、GBK等。 | 缺省值为UTF-8。 |
管理优先级 | 指定邮件的管理优先级(如高、中、低)。 | 缺省值为不勾选。 |
优先级 | 指定邮件的优先级(如高、普通、低)。 | 缺省值为普通。 |
重要 | 指定邮件的重要性(如高、普通、低)。 | 缺省值为普通。 |
Sensitivity | 指定邮件的敏感级别(如Normal、Personal、Private、Confidential)。 | 缺省值为Normal。 |
主题 | 指定邮件的主题内容。 | 缺省值为空。 |
注释 | 指定邮件的注释内容,即邮件正文。 | 缺省值为空。 |
附件选项卡
参数名称 | 作用描述 | 默认值/备注 |
---|---|---|
带附件? | 指定邮件是否包含附件。 | 缺省值为不勾选。 |
文件类型 | 指定附件的文件类型(一般、日志、错误行、错误、告警)。 | 缺省值为不勾选。 |
压缩成统一文件格式? | 指定是否将多个附件压缩成一个统一格式的文件(如ZIP)。 | 缺省值为不勾选。 |
压缩文件名称 | 指定压缩文件的名称。 | 缺省值为空(自动生成)。 |
文件名 | 指定附件的文件名,可以输入一个或多个文件名。 | 缺省值为空。 |
内容ID | 指定附件在邮件中的唯一标识符。 | 缺省值为空。 |
3、文件管理
3.1 添加文件到结果文件中
基础参数
参数名称 | 作用描述 | 默认值/备注 |
---|---|---|
作业项名称 | 表示添加文件到结果文件中的组件名称,该名称在单个任务中必须唯一。 | 默认值为 添加文件到结果文件中 。 |
文件/目录 | 表示要添加的文件或目录名称。可通过【文件…】按钮添加文件,或通过【目录…】按钮添加目录。 | 缺省值为空。 |
通配符 | 表示使用通配符(正则表达式)添加多个文件。 | 缺省值为空。 |
设置
参数名称 | 作用描述 | 默认值/备注 |
---|---|---|
包含子文件夹? | 表示是否包含子文件夹中的文件。 | 缺省值为空(不包含)。 |
将上一个作业项的结果作为参数 | 表示是否将上一个任务的结果作为此项的参数。 | 缺省值为空(不作为参数)。 |
清除结果文件名 | 表示在创建新列表之前是否清除以前的结果文件列表。 | 缺省值为空(不清除)。 |
多个文件/多个目录
参数名称 | 作用描述 | 默认值/备注 |
---|---|---|
文件/目录 | 表示在此表格中要添加的多个文件或多个目录名称。 | 缺省值为空。 |
通配符 | 表示在此表格中使用通配符(正则表达式)添加多个文件。 | 缺省值为空。 |
4、条件
4.1 检查表是否存在
检查表是否存在是验证数据库中是否存在指定的表,根据验证结果,返回成功或失败值。
参数名称 | 作用描述 | 默认值/备注 |
---|---|---|
作业项名称 | 表示此条件控件的名称,用于在作业中唯一标识此组件。 | 自动生成或手动设置,需保证唯一性。 |
数据库连接 | 指定用于检查表是否存在的数据库连接。 | - 下拉选择框:列出已配置的数据库连接。 |
- 编辑:修改已选中的数据库连接详情。 | ||
- 新建:创建一个新的数据库连接。 | ||
- Wizard:通过向导创建数据库连接。 | ||
模式名称 | 指定数据库中的模式(Schema),用于限定表名的搜索范围。 | 缺省值为空 |
表名 | 指定要检查的表名称。 | 缺省值为空,可以点击浏览选择表和模式 |
4.2 检查列是否存在
检查列是否存在是验证数据库表中的一个或多个字段中是否存在,根据验证结果,返回成功或失败值
参数名称 | 作用描述 | 默认值/备注 |
---|---|---|
作业项名称 | 表示此条件控件的名称,用于在作业中唯一标识此组件。 | 自动生成或手动设置,需保证唯一性。 |
数据库连接 | 指定用于检查表是否存在的数据库连接。 | - 下拉选择框:列出已配置的数据库连接。 |
- 编辑:修改已选中的数据库连接详情。 | ||
- 新建:创建一个新的数据库连接。 | ||
- Wizard:通过向导创建数据库连接。 | ||
模式名称 | 指定数据库中的模式(Schema),用于限定表名的搜索范围。 | 缺省值为空 |
表名 | 指定要检查的表名称。 | 缺省值为空,可以点击浏览选择表和模式 |
列 | 点击获得列名可以获取表中所有的字段,并可以按需删除 | 缺省值为空 |
4.3 检查一个文件是否存在
检查一个文件是否存在即验证指定的文件是否存在,根据验证结果,返回成功或失败的值。
4.4 检查多个文件是否存在
与检查一个文件是否存在组件类似,检查多个文件是否存在即验证指定的多个文件是否存在,根据验证结
果,返回成功或失败的值。
5、脚本
5.1 脚本
使用SQL任务执行SQL脚本,多个SQL语句使用分号分隔。
参数名称 | 作用描述 | 默认值/备注 |
---|---|---|
作业项名称 | 表示脚本组件在作业中的唯一标识符。 | 用户自定义,需保证在作业中唯一。 |
数据库连接 | 指定用于执行SQL脚本的数据库连接。 | - 下拉框:列出已配置的数据库连接。 |
- 编辑:修改选中连接的详情。 | ||
- 新建:创建一个新的数据库连接。 | ||
- Wizard:通过向导创建连接。 | ||
从文件中得到的SQL | 指示SQL脚本是否从外部文件读取。 | 勾选则从文件读取,否则使用内嵌SQL。 |
SQL文件名 | 当“从文件中得到的SQL”被勾选时,指定SQL脚本文件的路径和名称。 | 缺省值为空,需手动指定文件路径。 |
将SQL脚本作为一条语句发送 | 指定是否将整个SQL脚本视为一条语句执行。勾选:整个脚本作为一条语句执行。不勾选:按语句分隔符分割执行。 | 默认不勾选。 |
使用变量替换 | 指示在SQL脚本中是否进行变量替换。 | 勾选则在执行前替换脚本中的变量。 |
SQL脚本 | 当“从文件中得到的SQL”未勾选时,直接在此处输入SQL脚本内容。 | 缺省值为空,需手动输入SQL脚本。 |
6、应用
6.1 写日志
参数名称 | 作用描述 | 默认值/备注 |
---|---|---|
作业项名称 | 写日志组件在作业中的唯一标识符,用于区分和管理不同的日志记录组件。 | 用户自定义,需保证在作业中唯一。 |
日志级别 | 指定日志记录的详细程度。 | 缺省值为空。 |
- 没有日志:不记录任何日志。 | ||
- 错误日志:仅记录错误级别的日志。 | ||
- 最小日志:记录最低级别的日志信息。 | ||
- 基本日志:记录基本的操作和信息。 | ||
- 详细日志:记录更详细的操作和信息。 | ||
- 调试:记录调试信息,用于开发和测试。 | ||
- 行级日志(非常详细):记录每一行的处理信息,非常详细。 | ||
日志主题 | 为日志记录指定一个主题或分类,便于日志管理和筛选。 | 缺省值为空,用户可自定义。 |
日志消息 | 要记录的日志信息内容。可以是静态文本,也可以是变量或表达式。 | 缺省值为空,用户需根据实际情况填写。 |