﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Pursuit-文章分类-kettle</title><link>http://www.blogjava.net/Pursuit/category/53158.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 25 Dec 2012 20:34:12 GMT</lastBuildDate><pubDate>Tue, 25 Dec 2012 20:34:12 GMT</pubDate><ttl>60</ttl><item><title>kettle—增量数据案例</title><link>http://www.blogjava.net/Pursuit/articles/393472.html</link><dc:creator>Pursuit</dc:creator><author>Pursuit</author><pubDate>Tue, 25 Dec 2012 09:54:00 GMT</pubDate><guid>http://www.blogjava.net/Pursuit/articles/393472.html</guid><wfw:comment>http://www.blogjava.net/Pursuit/comments/393472.html</wfw:comment><comments>http://www.blogjava.net/Pursuit/articles/393472.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Pursuit/comments/commentRss/393472.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Pursuit/services/trackbacks/393472.html</trackback:ping><description><![CDATA[<p>etl 增量数据方式，一般有2种，一是取当前表中时间字段的最大，或者直接取上一次增量后产生的sysdate，二是用触发器等工具把变化的数据捕获，然后进行插入更新。</p>
<p>本案例使用数据库表上次增量产生的sysdate的方式进行增量更新。</p>
<p>1 打开kettle，文件-&gt;新建-&gt;转换，然后在右侧面板中右键，转换设置，在这里可以修改转名称。如图：</p>
<p><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=4bda1bf301010z31&amp;url=http://s15.sinaimg.cn/orignal/4bda1bf3hb265d4b2630e" target="_blank"><img title="kettle鈥斣隽渴莅咐" name="image_operate_39501322050824071" alt="kettle鈥斣隽渴莅咐" src="http://s15.sinaimg.cn/middle/4bda1bf3hb265d4b2630e&amp;690" width="552" height="505" action-type="show-slide" action-data="http%3A%2F%2Fs15.sinaimg.cn%2Fmiddle%2F4bda1bf3hb265d4b2630e%26690" real_src="http://s15.sinaimg.cn/middle/4bda1bf3hb265d4b2630e&amp;690" /></a><br /><br /></p>
<p>2 在左侧面板的核心对象中的输入标签里选择表输入，托到右侧面板，重复操作一次，这样就有2个输入表了。然后在左侧面板输出里选择表输出，然后拖到右侧面板。然后在选择第一个表输入，然后按shift，托到第二个表输入，建立一个hop，同样为第二个表输入和表输出之间建立连接。</p>
<p>3接着开始我们的设计，在第一个表输入中设置如下图：</p>
<p><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=4bda1bf301010z31&amp;url=http://s10.sinaimg.cn/orignal/4bda1bf3hb265d6772189" target="_blank"><img title="kettle鈥斣隽渴莅咐" name="image_operate_2951322050818983" alt="kettle鈥斣隽渴莅咐" src="http://s10.sinaimg.cn/middle/4bda1bf3hb265d6772189&amp;690" width="683" height="534" action-type="show-slide" action-data="http%3A%2F%2Fs10.sinaimg.cn%2Fmiddle%2F4bda1bf3hb265d6772189%26690" real_src="http://s10.sinaimg.cn/middle/4bda1bf3hb265d6772189&amp;690" /></a><br /><br /></p>
<p>在上图的步骤名称，输入该步骤的名称，由于我们使用的是jdbc，已经建好，我就直接选择了其中一个。在sql中输入上次运行的sysdate，（也就是今天），这个用于后续的增量时间字段，此时预览可以看到就只有一列的时间字段。</p>
<p>然后在第二个表输入做如下图操作：</p>
<p><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=4bda1bf301010z31&amp;url=http://s14.sinaimg.cn/orignal/4bda1bf3hb265d8ea611d" target="_blank"><img title="kettle鈥斣隽渴莅咐" name="image_operate_1321322050818237" alt="kettle鈥斣隽渴莅咐" src="http://s14.sinaimg.cn/middle/4bda1bf3hb265d8ea611d&amp;690" width="683" height="534" action-type="show-slide" action-data="http%3A%2F%2Fs14.sinaimg.cn%2Fmiddle%2F4bda1bf3hb265d8ea611d%26690" real_src="http://s14.sinaimg.cn/middle/4bda1bf3hb265d8ea611d&amp;690" /></a><br /><br /></p>
<p>步骤名称和数据库连接如上一步操作，在sql中从点击获取sql查询语句中选择需要进行增量操作的表，然后确认需要显示列名，出现没有where条件的sql语句，然后自己在sql中增加where 条件用？代表从上一个步骤中传过来的变量，在下面替换sql语句里的变量，打勾，确保到时问号符号能用被替换，从步骤插入数据的下拉菜单中选择上一步操作，在执行每一行上打勾。</p>
<p>第三部对输出表进行设置：</p>
<p><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=4bda1bf301010z31&amp;url=http://s10.sinaimg.cn/orignal/4bda1bf3hb265dc72c389" target="_blank"><img title="kettle鈥斣隽渴莅咐" name="image_operate_26051322050804704" alt="kettle鈥斣隽渴莅咐" src="http://s10.sinaimg.cn/middle/4bda1bf3hb265dc72c389&amp;690" width="486" height="539" action-type="show-slide" action-data="http%3A%2F%2Fs10.sinaimg.cn%2Fmiddle%2F4bda1bf3hb265dc72c389%26690" real_src="http://s10.sinaimg.cn/middle/4bda1bf3hb265dc72c389&amp;690" /></a><br /><br /></p>
<p>在上图中步骤名称和数据库连接同上，目标模式选择数据仓库的用户，目标表选择需要把数据插入到什么表中，如果是增量更新，不是临时表的话，千万不要在裁剪表上打勾，这个用于删除表中的数据。在数据字段中，直接点击添加映射，然后选择需要映射的字段。这也就完成了映射操作。</p>
<p>最后执行结果如下图：</p>
<p><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=4bda1bf301010z31&amp;url=http://s12.sinaimg.cn/orignal/4bda1bf3hb265f1232f7b" target="_blank"><img title="kettle鈥斣隽渴莅咐" name="image_operate_94081322050814407" alt="kettle鈥斣隽渴莅咐" src="http://s12.sinaimg.cn/middle/4bda1bf3hb265f1232f7b&amp;690" action-type="show-slide" action-data="http%3A%2F%2Fs12.sinaimg.cn%2Fmiddle%2F4bda1bf3hb265f1232f7b%26690" real_src="http://s12.sinaimg.cn/middle/4bda1bf3hb265f1232f7b&amp;690" /></a><br /></p><img src ="http://www.blogjava.net/Pursuit/aggbug/393472.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Pursuit/" target="_blank">Pursuit</a> 2012-12-25 17:54 <a href="http://www.blogjava.net/Pursuit/articles/393472.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>