Kettle的第二个实践--数据获取并转换
需求:
kettletest1数据库中有table_source数据表,结构如下:
Id 主键
t_id 数据时间
part_id 实例ID
yg 数据字段1
wg 数据字段2
该表中的数据对于不同的实例ID,一分钟一条数据,t_id字段表示数据的时间,精确到分钟。
kettletest2数据库中有table_target数据表,结构如下:
Id 主键
marketdate 数据日期,格式为 yyyy-MM-dd
pointtime 时间,格式为 HH:mm
pointnumber 时间的数字表示,00:01表示为1,00:00表示为1440
plantcode 实例Code
yg 数据字段1
wg 数据字段2
需定期将table_source表中的数据获取至table_target表中,并进行如下处理:
1、将t_id数据时间字段拆分为三个字段,分别为marketdate、pointtime、pointnumber。
a、marketdate取t_id的日期部分。
b、pointtime取t_id的时间部分。
c、pointnumber为时间的数字表示,等于hour*60+minute。
d、但当t_id的时间为某日的00:00时,需将其转化为24:00,并且marketdate需取日期的前一天。如t_id为2008-12-04 00:00,则marketdate为2008-12-03,pointtime为24:00,pointnumber为1440。
2、将part_id字段映射为plantcode字段,并根据如下规则进行转换:
part_id plantcode
3206 P01
3207 P02
3208 P03
测试中使用的数据库均为mysql数据库。
实战:
整个转换工作共分为三个步骤,如下图:
1、定义需获取的数据的日期
2、删除table_target表中已有数据,
注意一定要将“执行SQl语句”面板中的“变量替换”要选上 ,否则SQL语句中的变量不会被替换,我刚开始没注意到这个地方,找问题找了半天。
3、获取table_source中的数据,并将其插入table_target表
3-1、获取table_source表的数据
3-2、值映射
3-3、字段选择
3-4、对t_id字段进行处理,增加了pointnumber字段。
在这一步骤中发现kettle的一个bug,就是不能在JavaScript中使用str2date函数 ,错误的具体信息参见:http://jira.pentaho.com/browse/PDI-1827。这个问题也折腾了好长时间,刚开始怎么也想不通这个函数使用时怎么会报错呢,后来只好从字符串中截取年、月、日信息。
该步骤中还存在另外一个使人困惑的问题,就是点击“测试脚本”按钮,会报错,但是执行job和transformation时则不会报错。
3-5、增加pointnumber字段至输出结果中
3-6、插入数据至table_target表
3-4步骤中的JavaScript代码如下:
var pointTimeStr = pointtime.getString();
var pointnumber = 1;
if (pointTimeStr == "00:00") {
var marketDateStr = marketdate.getString();
var marketDateYear = substr(marketDateStr, 0, 4);
var marketDateMonth = str2num(substr(marketDateStr, 5, 2))-1;
var marketDateDay = substr(marketDateStr, 8, 2);
var date = new Date();
date.setYear(marketDateYear);
date.setMonth(marketDateMonth);
date.setDate(marketDateDay);
var temp1 = dateAdd(date, "d", -1);
marketdate.setValue(date2str(temp1, "yyyy-MM-dd"));
pointtime.setValue("24:00");
pointnumber = 1440;
} else {
var hourStr = pointTimeStr.substr(0, 2);
var hour = str2num(hourStr);
var minuteStr = pointTimeStr.substr(3, 5);
var minute = str2num(minuteStr);
pointnumber = hour * 60 + minute;
}
至此,整个转换工作完成,小结一下:
如果对kettle等etl工具比较熟悉的话,使用etl工具进行数据转换、抽取等事情还是比较方便的,比起写程序还是有优势的。但是这个转换过程中遇到的kettle的两个bug比较让人头疼,觉得kettle好像还不是很稳定。
reference:http://www.blogjava.net/robbie/archive/2008/12/14/246271.html
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0081/1511/96936da2-662f-3692-bcbc-0e8a407b5734-thumb.jpg)
- 大小: 18.5 KB
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0081/1515/61b03c9e-3258-3381-9ad8-778c43e2beb7-thumb.jpg)
- 大小: 99 KB
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0081/1519/9d8080b8-f1d5-310d-b1c3-4541f9bf6c51-thumb.jpg)
- 大小: 76.9 KB
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0081/1526/58202446-d346-3569-8c04-a5c0d2f9dd45-thumb.jpg)
- 大小: 27.4 KB
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0081/1528/6bd56eb2-929e-37ba-b93c-019db982a9ef-thumb.jpg)
- 大小: 48.4 KB
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0081/1537/4715176a-4dc0-3523-82c0-5e43db4e0db7-thumb.jpg)
- 大小: 33.1 KB
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0081/1541/c63882e9-ae3c-3ff3-8ee4-2dc6e3e461c1-thumb.jpg)
- 大小: 36.1 KB
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0081/1546/f906a4ed-66eb-3e1d-ac3c-ae190b4a3bd1-thumb.jpg)
- 大小: 54.8 KB
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0081/1548/42dbe693-d7e7-36c2-80d5-8817c4655775-thumb.jpg)
- 大小: 36.1 KB
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0081/1553/549ebe07-3256-3343-b5d9-02df0365b83e-thumb.jpg)
- 大小: 43.2 KB
分享到:
相关推荐
kettle-core-7.1.0.0-12.jar kettle-dbdialog-7.1.0.0-12.jar kettle-engine-7.1.0.0-12.jar pentaho-metadata-7.1.0.0-12.jar
而“kettle-neo4j-remix-8.2.0.7-719-REMIX.zip”这个压缩包,其名称暗示了Kettle与Neo4j之间的融合。Neo4j是一款高性能的图数据库,以图形结构存储和查询数据,特别适合处理复杂关系和网络数据。在数据仓库和分析...
kettle使用maxcompute相关插件,aliyun-kettle-odps-plugin-1.0.0.tar.gz
Kettle 数据抽取是数据集成和数据处理中非常重要的一步,它可以将数据从一个源系统中抽取出来,并将其转换成目标系统所需的格式,以便进行进一步的处理和分析。在本节中,我们将详细介绍 Kettle 数据抽取的全量抽取...
kettle-ui-swt-7.1.0.0-12.jar 可修改包中资源 核心jar包
Kettle,又称Pentaho Data ...总的来说,Kettle-7.0.0.0-25版本的免安装压缩包提供了全面的数据集成解决方案,用户可以快速上手,实现高效的数据处理。无论是数据分析师、数据科学家还是IT运维人员,都能从中受益。
"kettle-core.jar"作为核心库,其中包含了基本的数据类型、元数据、步骤、作业和转换的基础框架,以及各种数据库连接的支持。对于达梦数据库的适配,意味着在这个核心库中增加了针对达梦特定SQL语法、数据类型和连接...
pdi-ce-8.3.0.0-371.zip-kettle8.3版本插件SDK包,适用于大数据ETL开发人员进行大数据抽取转换(清洗)加载的一款开源ETL工具,Pentaho DataIntegration,官方可扩展自定义插件模板
标题 "kettle-scheduler-master_springmvc_kettlejava_kettleweb调度_kettle-" 指的是一个基于Kettle(Pentaho Data Integration)的Web自动化调度项目,它使用了Spring MVC框架来实现。这个项目的核心目标是将...
这个"Kettle_7.0.0.0-25源码.rar"文件包含的是Kettle 7.0.0.0-25版本的源代码,对于开发者来说,这是一个深入理解Kettle内部工作原理和进行二次开发的重要资源。 Kettle的核心特性包括: 1. **图形化工作流**:...
《ETL数据整合与处理(Kettle)》教学教案-02源数据获取.docx
Pentaho Data Integration(原名 kettle)是业界使用最广泛的企业级开源可视化ETL数据清洗系统。它非常适合企业数据研究人员、数据库管理员等使用,用于实现企业内部系统之间的数据集成和构建数据仓库。无论是处理...
Kettle,也称为Pentaho Data Integration(PDI),是一款强大的ETL(Extract, Transform, Load)工具,它允许用户从各种数据源提取数据,进行转换处理,并加载到目标数据库或系统中。Kettle以其直观的图形化界面和...
Pentaho Kettle 7.0.0.0-R 是一个数据集成工具的源代码版本,由 Pentaho 公司开发,通常称为 Kettle 或 Spoon。Kettle 是一款强大的ETL(提取、转换、加载)工具,它允许用户通过图形化界面设计数据处理流程,非常...
Kettle是一款流行的开源ETL工具,由Pentaho公司开发,它允许用户从多种数据源抽取数据,并进行处理后再加载到其他目标系统。Oracle 12c则是一款先进的企业级关系型数据库管理系统,广泛应用于大型企业的数据存储和...
在这个名为"Kettle-PDI-KTR - 采集数据示例脚本.zip"的压缩包中,包含了7-8个具体的Kettle转换(Kettle Transformation,KTR)文件,这些文件主要用于从Oracle数据库提取数据并将其导入到MySQL数据库中。这些示例...
它由社区驱动,是Pentaho BI Suite的重要组成部分,用于处理数据整合任务,从各种数据源抽取、转换并加载到目标系统。在提供的文件列表中,我们看到的是Pentaho Kettle的核心组件和依赖库的Java JAR文件。 1. **...
- **Transformation**:数据转换是Kettle的核心,它包含一系列的步骤(Steps),每个步骤负责特定的数据处理任务,如读取数据、转换数据、写入数据等。 - **Step**:数据处理的最小单位,每个Step都有特定的功能,...
`kettle-password-encoder-plugins.xml`可能是Kettle的一个插件配置文件,用于定义密码编码策略或者安全设置,这在处理敏感数据时非常关键。 **4. 执行 `main` 函数** 在Java项目中,`main`函数是程序的入口点。...
(3Kettle)-----关联字典表的三种方法