Kettle(Pentaho Data Integration) 下载安装&使用介绍/功能汇总

0 写在前面

暑假测了kettle写了总结文档,现在发到博客,上一篇Plotly.js也是类似的,有需要可以查看我上一篇博客。

1 产品介绍

Kettle(现也被称为Pentaho Data Integration)是一款开源的ETL工具,纯java编写,可以在Windows、Linux、Unix上运行,数据抽取高效稳定。ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过萃取(extract)、转置(transform)、加载(load)至目的端的过程。Kettle中文名称叫水壶,该产品主要目的是希望把各种数据放到一个壶里,然后以某一种指定的格式流出,它在做一些简单或复杂的数据抽取、质量检测、数据清洗、数据转换、数据过滤等方面有着比较稳定的表现。

2 产品安装

使用kettle需要安装:jdk1.8或以上版本,kettle开源库,数据库(MySql/Oracle…)。

2.1 kettle安装

本文基于windows 10环境下载安装kettle开源库,该产品依赖jdk,请自行安装jdk以及相关环境的配置。在安装kettle过程中发现,kettle的github网址中给出的release和RC版本的库中在运行时都会出现以下错误:
在这里插入图片描述
在检查jdk版本、安装以及环境配置之后都确定无误的情况下,通过查找该开源库中的launcher文件夹,发现缺少launcher.jar文件,因此从其他网址获取launcher.jar文件放入launcher文件夹后运行,但仍旧报错,没有找到解决办法,故放弃该github-kettle开源库。

为了测试继续进行,从网站kettle下载地址下载另一个kettle开源库‘data-integration’,通过对比该库和github中的kettle库发现它们拥有的文件都一致,只是在文件布局上有一些区别(文件夹结构不同,github-kettle库文件目录复杂且结构较深,data-integration文件目录较为简单,结构较浅),该库能够正常运行,因此选用此库进行测试。

2.2 数据库以及连接驱动安装

由于kettle需要和数据库进行连接,所以需要在本机(或服务器)上安装数据库,本文选用MySql,MySql下载安装请参考Mysql安装教程,如选用其他数据库请自行安装。

要连接MySql数据库,要先下载MySql的JDBC连接驱动包,可在MySql-connector/J.jar文件下载地址下载,下载解压后,将该文件夹中的“MySql-connector-java-8.0.26.jar”文件复制到kettle安装目录下的“data-integration\lib”文件夹即可。

3 功能测试

3.1 数据库连接

由于使用kettle的第一步就是连接数据库,所以首先我们需要在MySql中开启数据库服务并登陆,然后创建一个数据库testdb,根据这个创建的数据库来与kettle连接:
在这里插入图片描述
点击kettle安装目录下的spoon.bat文件,界面如下:
在这里插入图片描述
选择首界面左侧的‘转换’>‘转换1’>‘DB连接’,选择MySql连接类型以及JDBC连接方式,然后根据我们在MySql中设置的相关信息填写如下:
在这里插入图片描述
然后可以点击测试查看是否连接成功,成功会弹出如下对话框:
在这里插入图片描述
在kettle中可以同时连接多个数据库服务,每个服务对应一个端口号,当一个数据库服务被连接,那么它包含的所有数据库中的表都被连接,(并不是数据库服务中的一个数据库被连接),因此该服务下的所有数据库表都能被看到(连接时数据库名称只要填的是端口对应的服务下创建的数据库名称即可)。一般在操作编辑时,模式一栏就是该服务下数据库名称,表就是确定的一个表名(3.3.1.1节会提到)。

3.2 两大功能

从整体上来说,kettle有两大基本功能:转换和作业。可以通过最上方一栏的按钮新建一个转换或作业,每个转换或作业都会有一个自己独立的视图窗口以及主对象数和核心对象。

3.2.1 转换

首先以表输入/输出这一转换过程为例简单介绍spoon支持的转换功能,其他类型的输入输出类似该过程。每次新建一个转换都需要建立一次DB连接。
首先在testdb数据库中创建一张表test_user如下:
在这里插入图片描述
如果我们想要将这张表中的部分内容以一定格式输出,需要在spoon界面中‘核心对象’>‘输入’将‘表输入’拉到旁边的视图页面中。
双击表输入图标,出现数据选择框,下拉选项选择我们需要导入的表,然后确定:
在这里插入图片描述
可以通过‘获取SQL查询语句’首先筛选一部分数据(也可以全选),通过SQL语句筛选出来的数据就是输入数据。
在这里插入图片描述
可以通过预览查看我们筛选出作为输入的数据:
在这里插入图片描述
从‘核心对象’>‘输出’将‘Excel输出’(或其他类型的输出,本文以Excel输出为例)拉到视图中,然后按住Shift键,用鼠标从输入到输出拉出一条线,这样一个最基本的转换就构建了。
在这里插入图片描述
双击‘Excel输出’,出现选择框,四个界面如下:

  • 文件:设置相关文件属性,主要注意选择生成的文件储存的地址;
  • 内容:可以编辑excel表的名称等其他选项;
  • 格式:可以编辑表内容字体属性;
  • 字段:选择输出的字段,可以点击‘获取字段’获取数据库表中全部属性,然后根据需要进行删改行(属性值)。

点击确定后,点击视图上方工具栏中运行按钮即可运行这个转换:

在这里插入图片描述
运行结果或错误可在视图下方的‘执行结果’中查看。运行成功后可以点击生成的file.xls文件查看转换内容:
在这里插入图片描述

3.2.2 作业

如果想要定时运行某个转换,或者顺序执行多个转换,就需要用到作业功能。
首先新建一个作业,然后从‘核心对象’>‘通用’依次拉取‘Start’,‘转换’,‘成功’到视图中,然后建立连接如下:
在这里插入图片描述
双击Start可以设置定时调度,选择需要进行转换的时间(间隔):
在这里插入图片描述
双击转换选择我们在上一节中创建的转换:
在这里插入图片描述
然后就可以点击上面工具栏的左侧的三角运行这个作业,由于作业可以间断进行,所以可以点击右边的正方形停止作业。

3.3 输入

Kettle中除了连接数据库表之外还有多种输入方式,可以满足多种不同文件格式的输入。

数据通过输入之后存入内存,成为流。在本文档中,我们主要采取表输入获取数据。

3.4 输出

Kettle的输出方式也有多种,可以将数据以不同格式输出,也可以直接操作连接的数据库内的表数据,具体如下:

本节我们将主要介绍表输出、插入/更新、更新、删除组件。

3.4.1 表输出

在本小节中,由于表的束缚可能导致表输出失败,因此我们还会介绍‘增加序列’,‘替换NULL值’组件来解决此类问题。
表输出是以追加的方式将表1内容插入到表2中。假设此时某数据库服务下数据库testdb中有表test_user如下,同时数据库testdb2中有空表copy2,表结构与test_user相同,id为主键,唯一的差别在最后一个属性字段:test_user是‘home_address’,类型char(35);copy2是‘address’,类型char(30)。
在这里插入图片描述

3.4.1.1 字段映射

此时如果我们要将test_user中的内容复制到copy2中,首先将‘表输入’和‘表输出’拉到视图中并建立连接,表输入按照3.2.1编辑,表输出编辑如下:
在这里插入图片描述
如果要输出到其他数据库服务下的表,可以通过‘编辑’建立新连接,如果是当前数据库服务下的表,那么就可以直接点击目标表旁的‘浏览’,选中之后自动填充数据库名称和表名称,数据库对应目标模式,表对应目标表。
当两张表有字段不同时,需要自己定义映射关系,否则会因为找不到字段报错。首先勾选指定数据库字段,否则默认自动匹配,然后点击‘输入字段映射’,根据需求添加字段映射如下,表字段是目标表中的字段,流字段是在表输入流程中存入内存中的源表数据字段。
在这里插入图片描述
最初已经说明源表和目标表的最后一个字段不同,前者是char(35),后者是char(30),当表结构不同的时候,可以点击‘表输出’>‘SQL’,会自动出现修改表结构的语句,点击执行即可修改表结构。
在这里插入图片描述
视图如下:
在这里插入图片描述
点击执行之后到数据库查看可以发现test_user的内容已经插入到copy2中:
在这里插入图片描述

3.4.1.2 增加序列

当想再次运行上一节中的转换时,会提示主键重复错误并终止转换,因此如果恰好主键是自增的且有多次运行的需求,可以通过添加‘转换’>‘增加序列’结点来实现。
在该节点中会创建一个自增字段到流中,如下图编辑将该字段命名为‘valuename’,然后根据需要设置起始值和增长根据:
在这里插入图片描述
在表输出的数据库字段下,只要将新表id替换成刚刚定义的valuename即可:
在这里插入图片描述
如果需要多次运行这个转换,只要每次修改valuename的起始值即可,以防主键冲突。

3.4.1.3 替换NULL值

如果将copy2的address字段添加not null约束,那么此时进行转换会报值为空的错误,因为test_user中部分home_address值为空,所以此时要对空值进行替换才能正常转换。
将‘替换’>‘NULL值’拉到视图中,结合3.3.1.2视图如下:
在这里插入图片描述
设置空值的窗口如下,可以选择全部替换,也可以选择按字段或者值类型替换,此处我们选择按字段替换,将home_address中的控制替换为“待定”:
在这里插入图片描述
该转换运行两次之后数据库结果:
在这里插入图片描述
可以看到表输出是以追加的方式插入数据。

3.4.2 更新/插入

假如主键不是自增的,而是确定独立的值,此时再使用表输出作为插入数据就会报重复主键错,且无法使用增加序列解决,此时可以选择‘输出’>‘插入/更新’来正确操作。
视图如下:
在这里插入图片描述
需求仍旧是将test_user中的内容放入copy2中,但是此时copy2中有两行数据,且主键是id。
在这里插入图片描述
插入/更新编辑界面如下:
在这里插入图片描述
‘用来查询的关键字’中设置两张表进行对比的关键字,一般选择主键。以本次测试为例,如果源表中的某一行的id在目标表中已经存在,那么就更新目标表中的这一行数据,具体更新的字段可以通过‘更新字段’选择。如果源表id在目标表中不存在,那么就直接插入这一行数据。
根据我们在上图中设置的‘插入/更新’操作,执行之后copy2内容和test_user一致。
对于相同主键,如果不想更新值,仅仅只需要插入新的行,那么只要勾选‘不执行任何更新’即可。

3.4.3 更新

单纯的数据更新编辑(输出>更新)和上一节基本类似,故不再赘述。区别是更新操作仅仅更新已有的数据,不插入新数据。

3.4.4 删除&增加常量

如果我们要删除copy2中id<3的数据,可以利用‘输出’>‘删除’和‘转换’>‘增加常量’来实现。增加常量是指定义一个常量名和它的值,然后自动存入流中,可在后续流程使用。
视图中的流程如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
设置常量的原因是如果仅仅是表输入和删除操作,那么在流字段里面无法获取‘3’,因此要得到‘3’这个常量,就必须自己设置一个放入流中。
增加常量和删除操作如上截图,设置一个常量id_num=3,然后在删除编辑里将流字段选择为id_num,比较符为‘<’,就可实现我们的需求,结果如下,可以看到id<3的行已经被删除:
在这里插入图片描述

3.5 转换例子

由于一些组件需要组合才能更好地使用,因此接下来本文不按照kettle的组件顺序,而是通过一些例子来介绍kettle支持的相关转换操作。

3.5.1 排序&去重

3.5.1.1 去除重复记录(并计数)

如果我们要删除表中重复数据,可以将‘转换’>‘去除重复记录’拉到视图中并编辑如下:
在这里插入图片描述
在这一操作中,可以选择是否对去重的行进行计数并定义新的字段,在该例中定义为‘cnt’,如果要在输出中体现这一字段,需要为目标表添加一个计数字段,然后在输出映射中定义为cnt。下方红框选择用来比较的字段,当点击确认后出现提示如下:
在这里插入图片描述
这说明kettle的去重操作仅仅是对挨在一块的有相同比较字段的行去重,因此为了正确对表进行去重,需要在其前面添加‘转换’>‘排序’操作。

3.5.1.2 排序

将排序拉入视图中后,整个流程如下(由于排序记录和去除重复记录都是转化过程,因此要查看结果最后要添加一个表输出):
在这里插入图片描述
排序记录设置如下,通过‘字段’选择参与排序的字段,字段按设定顺序比较,当流中数据通过排序记录之后会生成一个临时文件参与下一个流程。
在这里插入图片描述
排序本身就可以进行数据去重,只要将上图中蓝色方框进行勾选,就自动将排序后具有相同字段的行去重。上一节中的去重操作的优势是可以进行计数。

3.5.2 执行自定义SQL语句

本小节中,我们通过执行SQL脚本转换来联合介绍‘执行SQL语句’,‘字段选择’,‘设置变量’组件。

3.5.2.1 执行SQL语句

Tableau中在数据源界面可以使用‘自定义SQL’来对数据源进行操作,在kettle中也有该组件,位于‘脚本’>‘执行SQL脚本’。
执行SQL脚本的编辑界面如下,通过数据库连接连接到要执行脚本的数据库,然后在下方SQL脚本框内写上对应数据库的SQL语句,在脚本代码框下方有:

  • 执行每一行(和左下方参数框配合使用)
  • 变量替换
  • Bind parameters
  • Quote String

这四个比较重要的选项,它们都有各自的作用,后面会介绍。
在这里插入图片描述
‘执行SQL语句’这一组件可以单独执行,不需要输入。但当要勾选上面四个选项的时候,就需要一定的输入了。下面我们介绍这四个选项的功能,在这一过程中,我们还会用到‘字段选择’和‘设置变量’组件。

3.5.2.2 字段选择

位于‘转换’>‘字段选择’。这一组件的功能是选择前面流程的输出字段集合中的部分。

  • 执行每一行
    如果在执行SQL语句的编辑框中选择‘执行每一行’,那么首先需要表输入。‘执行每一行’可以接收上一步骤中的批量输出,比如字段选择控件中的结果输出(但这一操作不是必选,可以直接从表输入获取),如果有n个结果(n条tuple),则sql会被执行n次。每一次将结果中的一组列对应的值(一行)替换到脚本的条件中。
    如下图,首先我们通过字段选择组件选择表输入(test_user表的全部列,包括id,age,sex,name,home_address)中的id,age,name列,通过这一流程之后流中只剩下id,age,name列(也可以在表输入直接通过SQL筛选,此处是为了方便介绍字段选择组件进行的冗余操作),可以根据需要对这些字段重新命名。
    在这里插入图片描述
    在执行SQL语句中,勾选“执行每一行”后,就可以在UPDATE语句中使用?来代替变量名。在参数表中可以选择从字段选择中选择的id,age,name,注意条件的顺序必须和传入的参数字段顺序一致,它们是一一对应的关系。如果条件中重复使用了条一个值,则必将该字段复制成额外的一个列,然后传入。参数字段一共有多少行,SQL脚本就会被执行多少次。
    在这里插入图片描述
    Bind parameters和Quote String这两个选项和执行每一行一起使用,只有勾选了执行每一行,才能选择这两个选项。
  • Bind parameters
    意为绑定变量,它和Quotes String只能二选一。
    不勾选‘Bind parameters’:如果参数中的某一字段为字符类型,那么需要在SQL脚本中问号两边加单引号,如果是数值类型则不需要。如上图,name为字符类型,没有勾选Bind parameters,脚本中使用“name=’?’”,否则会报错。
    勾选Bind parameters,字段为字符类型时,问号两端不能加单引号,加了单引号会报无效的列索引的错误。
  • Quote String
    勾选该选项的作用是在替换的变量前后两端加上单引号(脚本中问号两边不用自己写单引号),并且对于特殊字符进行转义,比如条件值中有单引号时,kettle会自动在单引号前再加一个单引号(在两端单引号的基础上),例如,条件值是’ABC,勾选Quote String之后“name=?”会被替换成“name=’’'ABC”。
3.5.2.3 设置变量

选项‘变量替换’勾选的前提是SQL脚本中存在一个变量。
通过‘作业’>‘获取变量’来创建变量,在取用的时候使用‘${变量名}’即可。

  • 变量替换
    打开设置变量组件,设置一个变量sex_value默认值为‘f’:
    在这里插入图片描述
    确定的时候会警告该转换中设置的变量不能在当前转换中使用,并提示可以将要使用的变量在作业的第一个转换中设置好。
    在这里插入图片描述
    因此可以了解,一般在作业的Start结点之后会专门放置一个‘设置变量’的转换流程,用来定义整个作业中会用到的一些变量。我们按照这一规则定义一个作业如下:
    在这里插入图片描述
    设置变量的转换内容如下,里面定义了变量sex_value:
    在这里插入图片描述
    执行SQL的转换为:
    在这里插入图片描述
    在执行SQL脚本中,我们勾选‘变量替换’,然后可以在脚本里面使用定义的变量“sex=‘${sex_value}’’’:
    在这里插入图片描述

3.5.3 合并数据并同步

本小节介绍如何合并数据(或如何合并两张表的数据)。数据来源为①表输入②Excel输入,合并数据要求两个数据源字段的格式、类型、顺序、名称都一致。

3.5.3.1 Excel输入

将‘输入’>‘Excel输入’拉入视图中,按照如下顺序操作:
在这里插入图片描述
在Excel输入编辑界面中首先单击‘文件’,选择Excel文件对应的表格类型(引擎),如果选择不当会无法读取数据。然后通过浏览文件目录选择Excel数据文件,点击右边的‘增加’,下方‘选中的文件’会增加刚刚选择的文件目录。‘增加’可支持多个Excel文件输入,数据以追加的方式存入,但要求表字段统一。
在这里插入图片描述
然后点击‘工作表’,通过‘获取工作表名称’>‘选定Sheet1’>‘>’>‘确定’选择需要从Excel文件中(可能包含多个表)导出的表。
在这里插入图片描述
最后点击字段,点击‘获取来自头部数据的字段’可以自动加载字段,这些字段的类型可能和表输入不同,需要手动纠正,否则会在运行时报错。
预览表输入和Excel输入的数据如下:

3.5.3.2 合并记录

将‘连接’>‘合并记录’拉入视图中如下:
在这里插入图片描述
该组件能对两个输入流中的数据进行合并。合并之后的数据会比原始的数据在结构上多一个标志字(默认为flagfield,通常‘合并记录’之后都会有‘字段选择’操作,原因就在此)。标志字段用来标记该条数据的状态,可取值‘identical’,‘new’,‘deleted’,‘changed’。使用该转换步骤时要注意,传入合并记录的两个输入数据流的字段名、位置、类型等必须完全一致,否则会报错。
编辑界面如下,指定新旧数据源,然后在‘匹配的关键字’中输入关键字段(一般是主键),这里我们定义旧数据源为表输入,新数据源为Excel输入。
在这里插入图片描述
然后运行该转换,可以通过执行结果的‘Preview data’查看合并结果,通过下方的输出可以看到两个表的数据被合并,而且最后多了一个‘flagfield’字段,值有‘deleted’、‘identical’,‘new’。
在这里插入图片描述
接着,我们加入数据字段,然后运行转换:
在这里插入图片描述
在结果中可以发现有一条数据的flagfield字段与上次运行不同,id=8的flagfield更改为‘changed’。
在这里插入图片描述
因此我们可以总结flagfield的取值规则:

  • 以关键字段为对比依据,当旧数据源中某记录的关键字不存在于新数据源中时,flagfield为deleted;
  • 以关键字段为对比依据,当新数据源中某记录的关键字不存在于旧数据源中时,flagfield为new;
  • 对于某一条记录,当它的关键字段在新旧数据源中都出现时,并且在“数据字段”中指定的字段的值完全相同(如id=7和id=9的记录,在表输入和Excel输入中完全相同)。则标记identical;
  • 对于某一条记录,当它的关键字段在新旧数据源中都出现时,但在“数据字段”中指定的字段的值已经发生了变化(如id=8的记录),则flagfield为changed(只有指定了数据字段,才会出现‘changed’这个值);
  • 当某条记录在新旧数据源中都出现时,无论是否设置数据字段,最后的结果都只保留新数据中的数据,这才是数据源新旧之分的真正含义。
3.5.3.3 数据同步

数据同步操作只能在合并记录操作之后使用,单独无法使用,因此可以理解为何合并记录操作会设置一个标志字段值‘flagfield’,它根据数据的来源及变化情况,对每条记录进行标记,从而能知晓旧表A与新表B的区别。
数据同步的基本视图如下:
在这里插入图片描述
例如现有旧表A和新表B,通过合并记录操作执行结果的flagfield字段,我们可以得知表A和表B的区别:如果A表有B表没有,标记为deleted;如果A表没有而B表有,标记为new;如果A表和B表都有相应关键字且值字段也相等则标记identical;如果A表和B表有相应关键字但是值字段不相等则标记changed。由此可以看出这几个字段在指示我们如果要让表A的数据和表B的数据变得一致需要对表A进行的操作。
所以如果我们想借助flagfield字段来同步两张表,只需要将同步的表设置为旧数据源,被同步的表设置为新数据源,将同步操作里的目标表设置为旧数据源,然后就可以通过合并之后所有记录的标记位来同步两表。
测试如下,现在我们需要让数据库里的表copy_test_user(左)同步于excel里的表(右),他们包含的数据如下:

在合并记录里选择: ![在这里插入图片描述](https://img-blog.csdnimg.cn/42862e0ee779421aa4cb5db0b39d9fe1.png#pic_center) 打开数据同步编辑页面如下,选择要进行同步的表copy_test_user,‘一般’选项卡和‘插入/更新’操作类似,故不再赘述,重点是高级选项卡中的参数选择。
如果该页面不填‘操作字段名’,则会报以下错误:

在这里插入图片描述
高级选项卡中的操作字段名就是合并记录里定义的标志字段名,接下来三个框里只有填‘identical’、‘changed’、‘new’,‘deleted’时才能发挥作用,但一般只使用后三个值,因为完全一致的时候不需要任何操作。下面具体介绍:
当值相等时插入:一般填‘new’。意为将数据流中flagfield的值=‘new’的记录插入到目标表中。
当值相等时更新:一般填‘changed’。意为将数据流中flagfield的值=‘changed’的记录更新到目标表中。flagfield=‘changed’时源表和目标表会存在相同的记录,判断两个记录是否相等,依据‘一般’选项卡中‘用来查询的关键字’中设置的判断条件。即使更新,也只会对‘一般’选项卡中‘更新字段’指定的字段进行更新。
当值相等时删除:一般填‘deleted’。意为将数据流中flagfield的值=‘deleted’的记录在目标表中删除。
执行查询:当执行更新和删除操作时,会比较数据流的每条记录是否已经在目标表中,如果没有出现,则抛出异常。

执行结果如下图,同步转换之后数据库表内容(右)已经更新为excel表内容(左)。

3.5.4 数据连接&计算

本小节介绍的转换是将两个字段进行连接生成一个字符串新字段,同时通过计算器计算表中用户的出生年份。流程如下,我们输入数据库中的表copy_test_user(上一节转换后的结果少一条id=9的记录),然后增加一个常量this_year=2021,接着使用‘concat fields’组件将表中id和name连接起来作为新字段mark的值,通过计算器计算this_year-age的值来确定用户出生年份birth_year,最后输出查看结果。
在这里插入图片描述

3.5.4.1 连接字段

连接字段编辑如下,在‘Target Field Name’填写连接后新字段的名称,本例为‘mark’。‘Separator’填写字段分隔符,本例选择‘-’。在下方的‘Fields’中填上要从流中进行连接的字段,本例选择‘id’和‘name’。
在这里插入图片描述

3.5.4.2 计算器

计算器编辑页面如下,在‘新字段’中填写计算结果存入的新字段名称,‘计算’选择要进行计算类型,根据计算类型填写字段A/B/C,本例计算出生年份,只需要两个字段A和B。
在这里插入图片描述
计算器中的计算类型有很多种,详情见附录。
在这里插入图片描述
执行转换后从excel表中查看结果,可以看到后两列增加字段mark以及birth_year,前者是连接字段,后者是出生年份:
在这里插入图片描述

3.5.5 数据过滤&字符串处理

本小节,我们通过数据过滤以及字符串相关操作来完成以下转换:去除home_address为空的记录,然后将下表数据的home_address字段规范化,将它的值转变为最后一个字母的小写(如‘Street WW’→‘w’,‘Street Z’→‘z’,‘ Street R ’→‘r’)。完成这个转换需要用到‘过滤记录’、‘字符串替换’、‘字符串操作’、‘剪切字符串’组件。
在这里插入图片描述
转换视图如下:
在这里插入图片描述

3.5.5.1 过滤记录

选择‘流程’>‘过滤记录’将组件拉入视图然后编辑如下:
在这里插入图片描述
该组件定义一个过滤条件,然后可以通过条件的布尔值将输出分两条流,本例只将条件为真的流流入下一个组件。
条件框定义过滤条件,根据需求我们将条件定义如上图,过滤掉home_address为空的记录。根据具体需要也可以具体选择:
在这里插入图片描述
在条件正下方可以选择空(不取反)或‘NOT’取反,在过滤记录的第二列框可以选择函数,当为比较符号(=,<,>…)时候可以填写第三排的框,第三排的框可以选择字段或者自己定义的值,二选一;当函数选择字段类型(IS NULL,IN LIST…)时候,第三排的框不可使用。通过右上角的‘+’可以定义多个条件:
在这里插入图片描述

3.5.5.2 字符串替换

过滤之后的数据流流入字符串替换组件,编辑界面如下(位于‘转换’>‘字符串替换’):
在这里插入图片描述
字符串替换指定搜索内容和替换内容,如果输入流的字段和‘搜索’内容能够匹配上,那么就会把它替换成‘使用…替换’里的字符串。本例将搜索定为‘WW’,替换定为‘W’。‘输出流字段’可以将替换后的结果放入一个新的字段里,如果只是想更新原来的字段,不用设置该项。本例为了清楚转换流程,将替换后的字符放入新的字段‘replace_address’。

3.5.5.3 字符串操作

位于‘转换’>‘字符串操作’。字符串操作主要用来去除字符串两端的空格(Trim type,可以选择left/right/both)、大小写切换(Lower/Upper)、以及删除字符串中的一些特殊字符(Remove Special character)。同样支持生成新的字段。本例将删除字符两端的空格,将字符都转为小写并生成新字段‘operate_address’。
在这里插入图片描述

3.5.5.4 剪切字符串

位于‘转换’>‘剪切字符串’。要满足最初的需求,只需要将字符开头的‘street’去除即可,编辑如下,将最后的结果放入新的字段‘cut_address’。需要注意的是该组件中的起始位置和结束位置定义的是留下来的字符串位置(左闭右开),而不是剪切掉的,因此下方的设置意为将字符串的[6,7)位置对应的字符留下。
在这里插入图片描述
执行结果如下,通过新的字段可以看到每次操作的字符结果:
在这里插入图片描述

  • 20
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值