Kettle 创建 Transformation

标签: kettle transformation | 发表时间:2014-01-03 03:58 | 作者:philip502
出处:http://blog.csdn.net

1.第一步,先准备数据和工具

安装好mysql以及客户端工具

数据:


USE `test`;

CREATE TABLE `account` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `account_name` varchar(50) CHARACTER SET latin1 NOT NULL,
  `customer_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

CREATE TABLE `customer` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `customer_name` varchar(50) CHARACTER SET latin1 NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

CREATE TABLE `trade` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `customer_id` int(11) NOT NULL,
  `status` int(11) NOT NULL COMMENT '对内= 1 ,对外= 2',
  `amount` decimal(11,2) NOT NULL,
  `account_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

CREATE TABLE `trade_detail` (
  `customer_name` varchar(50) CHARACTER SET latin1 NOT NULL,
  `customer_id` int(11) NOT NULL,
  `account_name` varchar(50) CHARACTER SET latin1 NOT NULL,
  `account_id` int(11) NOT NULL,
  `amount` double DEFAULT NULL,
  `description` tinytext
) ENGINE=InnoDB DEFAULT CHARSET=gbk;

以上我们建了四个表,客户customer,账户account,交易记录trade,交易明细表trade_detail

现在插入数据

insert into test.`account` (account_name,customer_id) values("account1",1),("account2",1),("account3",1),("account4",1),("account5",1);

insert into test.`customer` (customer_name) values("customer1"),("customer2"),("customer3"),("customer4"),("customer5");

insert into test.`trade` (customer_id,status,amount,account_id) values(1,1,100,1),(1,1,200,2),(1,1,240,3),(1,2,320,4),(1,2,500,5);


用下面的sql查询一下得到每个客户下每个账户的交易明细

SELECT * FROM trade t
LEFT JOIN account a ON t.`account_id` = a.`id`
LEFT JOIN customer c ON c.`id` = t.`customer_id`;


2.我们要用kettle完成将这三个表中的数据汇总到trade_detial表中

看下面一步一步的操作:


2.1我们新建一个Transformation

点击保存按钮,保存到e:/test/etl/transfor.ktr  这个后缀是kettle专用的


2.2从左侧选择【输入】->【表输入】,拖拽到右侧的空白区域,双击【表输入】




新建一个mysql连接,并点击【获取sql查询语句】获得trade的select语句


2.3右侧选择【查询】-【数据库查询】拖拽到空白区域,双击选择数据库连接后,浏览选择account表




如图上,需要填写的部分已经标注出来,中间需要将account表通过account.id = trade.account_id关联起来




2.4再次添加一个【数据库查询】,将account表与customer表关联起来,如下图:



2.5添加【Flow】->【过滤记录】,双击打开,选择status字段,点击下面灰黑色框,弹出【输入一个值】的小界面,输入值:1

表示当status=1的时候为true



2.6 添加两个常量值【转换】->【增加常量】


一个输入false,一个输入true,变量的名称都是一样的“value”,值不一样,分别是:“这里是false值哦”,“这里是true值哦”。


2.7添加表输出【输出】->【表输出】






这里有一部需要注意的是Specify database fields 需要打上钩,刚才忘了打钩了哈

确定后


2.8最后的transform图如下:



大功告成,点击启动运行试试看有没有数据输出到trade_detail去,如下图





乱码用前面文章的方法可以解决哈





作者:philip502 发表于2014-1-2 19:58:14 原文链接
阅读:8 评论:0 查看评论

相关 [kettle transformation] 推荐:

Kettle 创建 Transformation

- - CSDN博客推荐文章
1.第一步,先准备数据和工具. 安装好mysql以及客户端工具.   `status` int(11) NOT NULL COMMENT '对内= 1 ,对外= 2',. 以上我们建了四个表,客户customer,账户account,交易记录trade,交易明细表trade_detail. 用下面的sql查询一下得到每个客户下每个账户的交易明细.

ETL工具Pentaho Kettle的transformation和job集成

- - CSDN博客推荐文章
Kettle是一款国外开源的etl工具,纯java编写,数据抽取高效稳定(数据迁移工具). Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制. 2.1.       transformation实现解析.

kettle执行job

- - 互联网 - ITeye博客
ETL高级教程kettle. 1,Kettle跨平台使用.     例如:在AIX下(AIX是IBM商用UNIX操作系统,此处在LINUX/UNIX同样适用),运行Kettle的相关步骤如下:.     1)进入到Kettle部署的路径.     2)执行 chmod *.sh,将所有shell文件添加可执行权限.

kettle 开发总结

- - CSDN博客推荐文章
2.在用file exists 控件的时候,当用到“文本文件输入”时,文本文件中需要一定的格式,类似下图:. ;当然也可以已经创建了相应的表,然后直接按“确定”按钮就行,如果相应的表和输入的列数及列属性不一样时,也可以在sql按钮的语句中取修改. 在使用file exists时,输入也可以用表输入.

Kettle运行日志记录

- - 开源软件 - ITeye博客
原创文章,转载请注明出处:http://qq85609655.iteye.com/blog/2173882. 在kettle.properties中,可以定义参数. 来全局设置,记录kettle的job和trans日志,. 记录日志,会进行锁表,在kettle作业非常多的情况下,容易造成表锁,以及队列等待job日志记录的情况严重影响效率.

Snow Transformation Pack – Windows 变身 Mac | 小众软件 > 美化主题

- SourBell - 小众软件
这个冬天来的很早,熊二狗已经有一个多礼拜没见过阳光了. 根据天气预报,北京这个月都见不到阳光了. 遂找一套适合冬天的主题给 Windows 换肤,一不小心就找到了 Mac OS X 10.6 雪豹风格主题包. Snow Transformation Pack 不仅是免费主题,它将 Windows 整个桌面布局和交互方式向 Mac OS X 10.6 靠近.

Java编程的动态特性, 从Reflection到Runtime Class Transformation

- - 编程语言 - ITeye博客
关于Java编程的动态特性,从认识的过程上要从 Reflection 到 instrumentation. 初步的开发者刚接触到Reflection会非常兴奋,因为反射可以在运行时完成很多之前不可能的任务,这件利器使人打破了很多束缚. Java Annotation出现后,更让Java变得更加有活力,更加友好.

kettle参数、变量详细讲解

- - CSDN博客数据库推荐文章
kettle参数、变量详细讲解. 1、     variable(变量). variables 也可以认为叫做environment variables , 就像它的名字一样,主要是用来设定环境变量的,比如最常见的:文件的存放地址,smtp的配置等等,你也可以把它认为是编程语言里面的全局变量,即使是不同的转换它们也拥有同样的值;.

基于spring-boot的kettle调度 - 简书

- -
大家好,我是帅气小伙,由于最近公司项目辗转大数据,需要做数据抽取的工作,kettle是目前比较成熟的ETL工具,而传统的kettle客户端在任务调度这方面没有实现,于是在网上寻找开源的kettle调度项目. 专门为kettle这款优秀的ETL工具开发的web端管理工具. 貌似源码跑起来比较费劲,各种缺包,于是我为大家专门整理了一下这个项目.

利用kettle组件导入excel文件到数据库

- - CSDN博客数据库推荐文章
利用kettle组件导入excel文件到数据库.        把excel文件内容导入到目标表中;然后用java调用kettle的转换. excel文件的内容只有两列,示例如下:.        数据库表的结构如下:. 使用oracle函数解决上图黄色行的字段:两个uuid和两个系统日期;. 需要生成uuid,这个在oracle中可以利用SYS_UUID()函数实现;.