Kettle 转换组件
Add XML
组件说明
将数据流按照指定的配置转换为 XML 结构的数据
组件预览

组件详解
内容
| 选项 | 描述 |
|---|---|
| 编码 | XML 使用的编码,会在 XML 头文件中指定 |
| Output Value | 数据流内容生成到 XML 的节点名称 |
| 根 XML 元素 | 根节点元素名称 |
| omit xml header | 省略 XML头 |
| omit null value from xml result | 从 XML 结果中省略空值 |
字段
| 选项 | 描述 |
|---|---|
| 字段名 | XML 字段名称 |
| Element name | 生成的 XML 中原始标签名称 |
| 类型 | 数据类型 |
| 格式 | 数据格式 |
| 长度 | 数据长度 |
| 精度 | 设置格式为 Number 类型的数据精度 |
| Currency | 用来解释如 $10,000.00 的数字。 |
| Decimal | 进制 |
| 数字分组符号 | 数字分组符号 |
| 空 | 空 |
| 属性 | 属性 (否:字段设置为标签 element ;否:字段设置为属性 attribute ) |
| Attribute parent name | 父级属性名 |
组件示例
- 转换

- 预览

Add a checksum
组件说明
计算输入流中一个或多个字段的校验和(根据配置生成校验码),并将其作为新字段添加到输出中
组件预览

组件详解
| 选项 | 描述 |
|---|---|
| 步骤名称 | 名称 |
| 类型 | 生成校验码的算法类型 |
| 结果类型 | 校验码结果类型 |
| 结果字段 | 结果存储的字段名称 |
| Field separator string | 字段分隔符字符串 |
| Evaluation method | 评估方法 |
组件示例
- 转换

- 预览
- Add a checksum

- Add a checksum2

Closure generator
组件说明
Closure generator(闭包组件),实现对树形结构数据的深度(层次)的统计(统计树形数据从根节点到每一个下级节点有多少层,即深度)
组将预览

组件详解
| 选项 | 描述 |
|---|---|
| Step Name | 步骤名称 |
| Parent ID field | 父节点 id 字段 |
| Child ID field | 子节点 id 字段 |
| Distance field name | 深度(层级)字段名称 |
| Root is zero(integer)? | 根节点是不是数字 0 |
组件示例
- 转换

- 预览

Concat fields
组件说明
将数据流中任意字段按照指定拼接符拼接到一个新的目标字段
组件预览

组件详解
| Target Fidld Name | 目标字段,可以自定义,即拼接后的字段 |
| Length of Target Field | 目标属性长度,0为不限制 |
| Separator | 字段拼接的连接符 |
组件示例
- 转换

- 预览

值映射
组件说明
将数据流中指定字段值映射为其他值(可以覆盖、也可以单独设置一个其他值)
组件预览

组件详解
| 使用的字段名 | 要转换的字段 |
| 目标字段名(空=覆盖) | 用于存储转换后值的目标字段,不设置时覆盖“使用的字段名”设置的字段值 |
| 不匹配时的默认值 | 不符合映射关系时的值(相当于默认值) |
组件示例
- 转换

- 预览

列拆分为多行
组件说明
将某一列按照“分隔符”或正则表达式,拆分成多个字段,并把改行数据拆分成多列数据
组件预览

组件详解
| 要拆分的字段 | 要拆分的字段 |
| 分隔符 | 用什么符号分割 |
| 分隔符时一个正则表达式 | 激活时,分隔符可以使用正则表达式 |
| 新字段名 | 拆分后字段值存放的字段 |
组件示例
- 转换

- 预览

列转行
组件说明
将列数据按照关键字+分组+转换条件的方式,转换为行数据,有点像 SQL 的 case when
组件预览

组件详解

| 关键字段 | 要用哪个字段的值转为一行数据 |
| 分组字段 | 用哪个字段区分每一行数据 |
| 目标字段 | 转换出来的行数据字段(新的字段名) |
| 数据字段 | 通过哪个字段的值生成行目标字段 |
| 关键字段值 | 通过“关键字段值”与“数据字段”的值匹配,匹配(相等)时,该值赋值给目标字段作为行数据显示的目标值 |
组件示例
- 转换

- 预览
- excel 原始值

- 转换结果

剪切字符串
组件说明
裁剪字符串,类似 java 的 substring
组件预览

组件详解
| 输入流字段 | 输入流里面要截取的字段(原始字段) |
| 输出流字段 | 截取后输出流中的字段(目标字段) |
| 起始位置 | 从哪个位置开始截取 |
| 结束位置 | 截取到哪个位置 |
注意: 起始位置是从0开始计算的
组件示例

去除重复记录
组件说明
根据设置的字段对数据流中数据去重
注意:需要先对数据流中去重数据排序,否则结果不准
组件预览

组件详解
| 增加计数器到输出? | 统计重复个数 |
| 计数器字段 | 存放重复值个数的字段 |
| 字段名称 | 去除重复使用的字段 |
| 忽略大小写 | 去除重复使用的字段是否忽略大小写 |
组件示例
- 转换

- 预览
- excel 原始数据

- 按照 id+name 去重

- 按照 id 去重

- 按照 name 去重

唯一行 (哈希值)
组件说明
通过哈希值去重数据,和“排序记录”+“去除重复记录”效果一样,区别在于实现原理
组件预览

组件示例
- 转换

- 预览
- id + name

- id

- name

增加常量
没啥可说的,见名知意
增加序列
没啥可说的
注意:它不能单独使用,也不能作为转换的起点
字段选择
组件说明
对数据流中的字段进行处理,包括改名、删除字段、修改字段类型等
组件预览

组件详解
选择和修改
用来设置要保留字段的配置
| 字段名称 | 要选择和修改的字段名称 |
| 改名成 | 字段改名后的目标名称,如果不希望改名,那么为空。默认值为空 |
| 长度 | 字段的长度。默认值为空 |
| 精度 | 数字类型字段的浮点数的精确位数。默认值为空 |
移除
用来设置移除字段的配置
- 字段名称:要从数据流中移除的字段名
元数据
用于设置字段属性
| 字段名称 | 改变元数据的字段的名称 |
| 改名成 | 字段改名后的目标名称 |
| 类型 | 字段类型 |
| 长度 | 字段长度 |
| 精度 | 数字类型字段的浮点数的精确位数 |
| Binary to Normal? | 是否将字符串转换为数字数据类型 |
| 格式 | 数字或日期格式 |
| Date Format Lenient? | 表示日期格式解析器是否是严格还是宽松的。选项有是、否。设置为“是”时,只接受严格有效的日期值;设置为“否”时,解析器会尝试把错误日期纠正为正确的日期。默认值为空 |
| Date Locale | 表示日期地区区域。为空时,以系统上默认日期区域编码设置。默认值为空 |
| Date Time Zone | 表示日期时区。为空时,以系统上默认日期日期编码设置。默认值为空 |
| Lenient number conversion? | 表示数字转换是否是宽松的。选项有是、否。设置为“是”时,将解析数字,直到找到一个非数字值,如破折号或斜杠,解析然后停止,不报告错误。当设置为“否”时,如果输入的数字无效,解析器将报告错误。默认值为空 |
| Encoding | 表示文本文件编码。为空时,以在系统上使用默认编码。从系统上提供的编码列表中选择。默认值为空 |
| 分组 | 表示数值分组符号,一般使用“,”英文逗号。默认值为空 |
| 货币符号 | 表示货币符号,例如“¥”、“$”、“€”等货币符号。默认值为空 |
