Kettle-Transformation操作

上一篇:etl bigdata
更多信息查看:https://blue-shadow.top

本篇将进行详细的说明Transformation的操作,涉及各方面。但不要纠结使用各种Step,这里只是作为解释数据流、预览、调试方法、熟悉各操作界面。
而在后续的说明将会涉及到具体的数据库、不同的文件格式的操作。
在本例中将构造一个时间计算的例子进行说明,模拟公司的员工的上班的打卡记录,并通过和上班时间对比进行绩效的判定。

构造时间计算的Transformation

  • 使用Data Grid构建时间数据用于测试: Design --> Input -- > Data Grid .

    将鼠标悬停在Data Grid上,就会有Step的说明 : 输入静态的行数据,用于数据的测试、引用或demo 。

  • 在Data Grid中构建数据 : 左键双击或右键点击选Edit;在元数据(Meta)标签下输入列名类型和格式,在数据(Data)标签下输入数据。

    数据的原型为: 员工编号 、 打卡时间 、 上班时间 ;并向其中插入3条数据 。

创建Data Grid并使用测试数据
  • 创建Calculate,用于计算员工是否有迟到: Design --> Transform -- > Calculator

将鼠标悬停在Calculator上查看其说明: 通过简单的计算,创建新的列,新列的类型为 整型

  • 通过Hop将Data Grid和Calculator连接,并在Calculator中用work_in - clock_in,以分钟计算。
创建Calculator计算时间差
  • 使用Number Ranger对计算打卡时间差评定绩效:如果不确定 Number Ranger在哪个标签下,可以在Steps搜索框中进行搜索

评定的标准为: 提前10分钟到为优 ; 提前10分钟以内为良 ; 迟到大于10分钟为差

  • 通过Hop将Calculator和Number ranger连接
使用Number Ranger进行评级
  • 最后用User Defined Java Expression整合信息

    对于User Defined Java Expression是使用Janino作为编译器,实现动态的编译Java代码。
    使用Java代码功能添加两列:一列使用3目运算符,输出打卡情况;另一列简单的字符串拼接

User Defined Java Expression

构造的例子后,在这个例子的基础上开始说明各部分的内容。

流的概念

Input列和Output列,构成输入流和输出流。通过Input和Output是两个Step间的直接联系,可以将Input和Output看具体数据流的具体细节。
查看每个Step的Input和Output的方法,右键单击Step,在出现的界面中选择 Input Fields或Output Fields,然后就能看到对应这个Step的输入列和输出列。

Input&Output

可以发现通过Input和Output可以对数据进行溯源和过滤列。

调试方法

  • 在第一步Data Grid中在日期数据中输入字符串,看执行过程中是否发生错误。
data grid error1

具体的错误的信息,由于类型不匹配,无法将字符串转换为时间类型。将对应的类型修正后即可。

2020/06/10 16:51:18 - Data Grid.0 - ERROR (version 7.1.0.0-12, build 1 from 2017-05-16 17.18.02 by buildguy) : Unexpected error
2020/06/10 16:51:18 - Data Grid.0 - ERROR (version 7.1.0.0-12, build 1 from 2017-05-16 17.18.02 by buildguy) : org.pentaho.di.core.exception.KettleValueException: 
2020/06/10 16:51:18 - Data Grid.0 - work_in String : couldn't convert string [qazwsx] to a date using format [yyyy-MM-dd HH:mm:ss] on offset location 0
2020/06/10 16:51:18 - Data Grid.0 - qazwsx
.......
  • 对Calculator中输入为在data grid中出现的列名,看执行过程是否发生何种错误。
data gird error2

具体的错误信息如下,由于在找到对应的列

2020/06/10 17:06:58 - Calculator.0 - ERROR (version 7.1.0.0-12, build 1 from 2017-05-16 17.18.02 by buildguy) : Unexpected error
2020/06/10 17:06:58 - Calculator.0 - ERROR (version 7.1.0.0-12, build 1 from 2017-05-16 17.18.02 by buildguy) : org.pentaho.di.core.exception.KettleStepException: 
2020/06/10 17:06:58 - Calculator.0 - Unable to find the second argument field 'clock_diff for calculation #1
2020/06/10 17:06:58 - Calculator.0 - 
......
  • 对User Defined Java Expression中的列不指定类型,看执行过程是否会发生错误。
2-transformation-error3

具体的错误信息如下,未指定相关的类型

2020/06/10 17:15:37 - Row Preview - ERROR (version 7.1.0.0-12, build 1 from 2017-05-16 17.18.02 by buildguy) : org.pentaho.di.core.exception.KettleValueException: 
2020/06/10 17:15:37 - Row Preview - 打卡情况 None : Unknown type 0 specified.
.......

通过上面的构造的3个错误,可以在Execution Results窗口中进行查看执行结果和相关信息。Execution Results窗口被分为6个标签,分别对应的功能如下。

  • Execution History : 记录了详细的历史执行情况。
  • logging :记录查看执行的日志,默认情况下日志详细信息的级别是基本日志,但可以选择日志级别。
logging level
  • Step Metrics :显示了transformaton的每个步骤所执行的操作数、状态、信息
step-metrics
标签列 说明
Read 包含来自前面步骤的行数
write 包含从这个步骤到下一个步骤剩下的行数
Input 从文件或表中读取的行数
Output 写入文件或表的行数
Error 执行中出现的错误。如果有错误,整个行将变成红色
Active 给出执行的当前状态
  • performance Graph : 执行性能图,可为优化提供信息依据。
  • Metrics : 执行步骤信息
  • Preview Data : 预览数据

Step的配置界面

  • Step辅助窗口

将鼠标在Step上悬停后,将出现辅助窗口,相关的说明如下图所示。


最边上的两个 :用于连接两个Step间的Hop。
从左到右的第二个:用于对Step进行编辑,对数据处理中的行为的配置。
从左到有的第三个:Step的功能菜单,通过这里对Step各方面的修改和查看。

  • 执行调试工具栏

通过执行调试工具栏,进行对Transformation进行调试,验证,预览等操作。

run-tool

其中将预览也可以视为是调试的一种方式。

  • Design中的结构

在Design窗口中,可以发现不同的功能的Step分组存放在不同的目录下。逐渐熟悉,灵活运用。

design
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342