关于kettle的安装、数据库连接等前置工作准备妥当了,从产品角度来说,会主要从业务核心的应用场景来进行实操。
ETL有2个重要的概念,一是转换、一是调度。在接下来的系列文章中,将分别从转换和调度的场景进行分享。
转换场景很多,处理源表到目标表的ETL场景转化场景主要有:
1、单表间直接转换
2、字段合并与字段拆分
3、行转列与列转行
4、字段的规格化清洗
5、字段的衍生计算
6、多表关联同步至单表与单表同步到多表
在数据处理之初,业务需要将源数据库A表中的数据推送到目标数据库B表中,属于单表间的直接转化。
本节主要介绍使用kettle工具将源表和目标表的数据进行直接同步的应用场景,由于一些众所众知的原因,仅通过Kettle工具操作示例。
业务目标:
将来源库A中的【TQ_COMP_INFOCHG(机构信息变动表)】的数据推送到目标数据库B【org_basic_info_chg(机构信息变动表)】。
业务流程分析:
抽取数据:抽取来源库A的数据表TQ_COMP_INFOCHG(机构信息变动表)的数据,可以定义抽取数据范围;
转换数据:字段值进行直接映射,不需要转化;
加载数据:数据加载到目标库B的数据表org_basic_info_chg(机构信息变动表)中,目标表已有数据,进行更新;否则,新增数据。
操作步骤:
1、启动Spoon,进入主界面。点击左上角的 文件 → 新建 → 转换, 新建一个转换;或者在欢迎页tab,主对象树窗口双击转换快速新建。
新建转换入口1 新建转换入口22、点击左侧的 核心对象 ,选择 表输入 并把它拖到右侧的编辑区中进行配置。
由于抽取的数据来源某个数据库的数据表,因此拖选【表输入】插件,为了方便业务理解,可以将插件重命名。
数据抽取【表输入】插件拖选表输入插件是为了查询来源数据,也就是抽取的数据,因此需要将来源库表信息进行填写或选择后,进行抽取SQL的定义。
关于数据库连接的方式,此处不做赘述,可参考 kettle数据库连接。
数据抽取【表输入】插件配置表输入配置完成后,保存转换文件,可点击【运行这个转换】按钮进行本地运行。
数据抽取【表输入】插件运行3、点击左侧的 核心对象 ,选择 插入/更新 并把它拖到右侧的编辑区中,按住 shift键连接 “表输入”。
由于抽取的数据需要同步加载到目标数据表,因此拖选【表输出】插件,为了方便业务理解,可以将插件重命名。
数据加载【插入/更新】插件拖选表输出插件是为了将抽取数据输出到目标表,因此主要做三件事:
(1)目标数据库表信息进行填写或选择;
(2)进行目标表字段唯一索引字段的配置,根据唯一索引,查看数据是否存在,当数据存在,更新数据;若不存在,则插入数据;
(3)目标表字段与来源表字段的映射关系配置。
数据加载【插入/更新】插件配置如截图中的配置,选择完目标数据库和目标数据表之后,用来查询的关键字,选择id,表示这里按照id查询,如果此id存在,则更新数据,若不存在则插入数据;将目标表字段和来源表的流字段的映射关系进行匹配后,点击保存即可。
插入/更新配置完成后,保存转换文件,可点击【运行这个转换】按钮进行本地运行。
数据加载【插入/更新】插件运行4、转换成功后,也可以检查本地数据库,查看数据是否推送成功。
来源表抽取数据截图 推送目标表后的数据截图到这里,一个单表间的转换流程就配置成功了,后续打开.ktr后缀的文件即可。
打开.ktr后缀的转换文件从上述这个简单的单表间直转的应用场景操作过程中,我们可以从kettle工具获得哪些启发?如何更好地将ETL工具产品化?
从kettle工具获得的启发:
1.kettle作为强大且成熟的ETL工具,已经形成了一套通用化和标准化的设计规范和开发规范,对于产品经理而言,Kettle是个相当重要的竞品,如果你想超过它,请驾驭它,而在竞品实操和分析的过程中可以知不足,知已有产品功能不足和自身产品能力不足;
2.工具服务于业务,一切脱离业务的工具开发都是耍流氓,只有经过业务场景的归纳和业务流程的梳理,才能得出工具所需要提供的能力是什么;
3.业务场景多种多样,一般的实现路径是经历从简单到复杂,从基础到高阶的过程,单表间直转的转换场景,是第一个基础应用场景,在基础场景的应用过程中,不断去定义基础概念、去挖掘共性模块、去抽象业务流程,这样会让产品研发迭代处于一个稳健的状态。
如何更好地将ETL工具产品化:
1、Kettle工具本身的通用性也决定了其产品设计上有很多应对不同场景下的特殊配置,而某一类业务场景抽象后,是可以有一套相对简单的流程的,让业务人员人员更方便地去配置,提高配置效率,降低学习成本;
2、产品是人来使用,需要准确地表达概念,提高易用性。中文版的Kettle工具一些关键信息的语言表达不够准确,需要从业务关心的角度,展示一些运行结果的指标,比如在步骤日志中,读、写、输入、输出、更新、拒绝等数据指标,有意义,但不完全是面向业务的语言,业务关心的是总共有多少数据量、成功了多少、失败了多少等等。
当然,每个公司、每个行业所需要处理的数据对象各有不同,需要吸收kettle工具的养分侧重点也不同,还得具体问题具体分析。
网友评论