Kettle 创建 Transformation
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去,如下图
乱码用前面文章的方法可以解决哈
Kettle 创建 Transformation的更多相关文章
- kettle创建资源库
手动修改一下这个表 R_VERSION INSERT INTO R_VERSION(ID_VERSION, MAJOR_VERSION, MINOR_VERSION, UPGRADE_DATE, IS ...
- kettle 创建任务定时执行数据抽取
定时执行脚本 使用SPOON 工具建立好转换文件 .ktr,创建下面的.BAT文件,用操作系统的任务调用批处理. G:\soft\data-integration\pan.bat /norep -fi ...
- kettle 创建作业发送邮件
1.创建作业 . 2. 发送邮件配置,测试邮件 发件地址可以使用的QQ.126.163等邮箱 smtp server的填写smtp.qq.com或者smtp.126.com等等都可以这里我用Q163邮 ...
- Kettle使用介绍
本文主要阅读目录如下: 1.Kettle概念 2.下载和部署 3.Kettle环境配置 4.Kettle使用及组件介绍 ETL(Extract-Transform-Load的缩写,即数据抽取.转换.装 ...
- ETL利器Kettle
ETL利器Kettle实战应用解析系列一[Kettle使用介绍] 本系列文章主要索引如下: 一.ETL利器Kettle实战应用解析系列一[Kettle使用介绍] 二.ETL利器Kettle实战应用解析 ...
- ETL利器Kettle实战应用解析系列一【Kettle使用介绍】
本系列文章主要索引如下: 一.ETL利器Kettle实战应用解析系列一[Kettle使用介绍] 二.ETL利器Kettle实战应用解析系列二 [应用场景和实战DEMO下载] 三.ETL利器Kettle ...
- kettle常见问题解决
开源ETL工具kettle系列之常见问题 摘要:本文主要介绍使用kettle设计一些ETL任务时一些常见问题,这些问题大部分都不在官方FAQ上,你可以在kettle的论坛上找到一些问题的答案 1. J ...
- kettle教程一
转载:http://www.cnblogs.com/limengqiang/archive/2013/01/16/KettleApply1.html ETL(Extract-Transform-Loa ...
- 【Kettle】2、文件夹与界面介绍
1.文件夹介绍 下载Kettle6.1解压后出现下图相关文件夹以及文件夹介绍说明: Lib:存放Kettle的核心(core)jar包.工作引擎(engine)jar包.数据库(DB) jar包.图形 ...
随机推荐
- Xdebug的安装与使用
php下搭配使用xdebug是十分好的组合,用于php的调试工作,下面分别介绍之: 1 WINDOWS下的安装 下载站点http://www.xdebug.org/ 要确定使用一个跟你的PHP配合 ...
- Btn要记得对状态进行设置
self.catBtn = [UIButtonbuttonWithType:UIButtonTypeSystem]; self.catBtn.backgroundColor = [UIColorred ...
- Jquery实现文本框输入提示
一些用户体验好的表单都会在文本框里设置输入提示,文本框获取焦点时,提示内容消息,如果未输入,失去焦点时又会出现提示. 网上找到一个比较好用的控件jquery.inputDefault.js 使用方法: ...
- org.hibernate.MappingException: duplicate import异常
在开发hibernate时,一起多谢ORM类和映射文件时,报出:org.hibernate.MappingException: duplicate import com.XXX异常 解决方案: 检查你 ...
- Thread .join 的用法一例
在使用身份证读卡器时,要求 1. 身份证读到身份证 就 停止线程. 2. 关闭界面时会 自动停止调用读身份证的线程.这时候就需要用到 Thead.join 例子如下: Thread thread; p ...
- 【Java多线程】两种基本实现框架
Java多线程学习1——两种基本实现框架 一.前言 当一个Java程序启动的时候,一个线程就立刻启动,改程序通常也被我们称作程序的主线程.其他所有的子线程都是由主线程产生的.主线程是程序开始就执行的, ...
- 用Python组合Celery Redis RabbitMQ进行分布式数据抓取
首先,记录下遇到的问题吧,在抓取的过程中为了避免IO操作,主要用Redis做插入缓存,当内存占用率很大时,会周期性的持续到Mysql里 虽然是拆东墙补西墙,但把数据抓取完毕后持续化可以慢慢进行,毕竟数 ...
- TIME_WAIT是什么?http连接
http连接分为:建立连接,即tcp三次握手 发送请求信息 发送响应信息 关闭连接(tcp四次握手):下面讲此过程: 在TCP断开的过程中会有四个状态变化过程,如下图所示: 在连接撤销过程中,有如下过 ...
- Linux学习--第二波
虽然安装的centos感觉不能上网,权限也不知道怎么设置. 偶然的机会发现了一个好东西,博客:http://www.cnblogs.com/xiaoluo501395377/tag/CentOS/.有 ...
- BITED数学建模七日谈之五:怎样问数学模型问题
下面进入数学建模经验谈第五天:怎样问数学模型问题 写这一篇的目的主要在于帮助大家能更快地发现问题和解决问题,让自己的模型思路有一个比较好的形成过程. 在我们学习数学模型.准备比赛的时候,经常会遇到各种 ...