Kettle是一个开园ETL工具,做数据仓库用Spoon。
工具:下载Spoon,解压即可用
 
1、认识常用组件:
    表输入
    插入\更新
    数据同步
    文本文件输出
    更新
    自动文档输出
    表输出
 
    列转行
    增加常量
    增加序列
    排序记录
    行转列
    过滤记录
    数据库连接
 
    合并记录
    排序合并
    记录关联(笛卡尔输出)
    记录集连接
 
    分组
    在内存中分组
 
2、第一个例子
    生成 100 个随机数,随机数取值于[0,100)之间, 计算小于等于 50 的随机数个数和 大于50 的随机数个 数。 并把这两个统计数字放在数据库表的一行的两列中, 即输出的结果有一行,一行包括两列,每列是一个统 计值。
 
     
    1.生成随机数,0-1区间内
    2.定义常量,100
    3.计算,随机数乘以100,使得生成的数据在0~100区间内
这里后面有分支,默认是数据分发,这里要保证数据全部都流到两条支路去要选择复制分发模式,在计算器这个步骤上面右键,选择数据发送,复制发送模式
    4.条件判断有几种方法,这里用的是根据java代码过滤记录
    5.分组计算总条数,4步中结果为真进分组1,否则分组2,分组里面计算总条数
    6.关联记录
    7.输出
 
3、数据仓库
    目标:数据仓库就是把别的业务组的表查出来, 再转换, 保存到我们这边创建的新的业务表中。后续再开发接口(http、webservice、dubbo等)给别的组调用。
 
    3.1用户评价表中有各种评价得分,这里对经纪人的各种得分求平均分保存到bidb_brance中
                   
    0.建立数据库连接
        数据源1:mysql://172.16.2.187:33096/jjskfang
        数据源2:mysql://172.16.2.245:33096/bidb_branch
 
    1.表输入:
        使用数据源1,
        初始数据为:
        SELECT ID, WORKER_ID, WORKER_NAME, USER_ID, USER_NAME, GRADE, SCORE, PROFESS_SCORE,
        KNOW_SCORE, SERVICE_SCORE, TAGS, CONTENT, ORDER_ID, ORDER_TYPE, `STATUS`, MODIFY_TIME,
        CREATE_TIME FROM jjskfang.CUSTOMER_COMMENT
        WHERE `STATUS` = 1
 
    2.字段选择:
        选择必要的字段,这里也可以省略这一步
        选择:WORKER_ID, WORKER_NAME,SCORE, PROFESS_SCORE, KNOW_SCORE,SERVICE_SCORE
 
    3.排序:选择排序字段为WORKER_ID,分组前必须对分组字段进行排序,类似禹sql里面的group by
 
    4.分组:根据WORKER_ID分组,同时使用聚合函数(这里就完全类似sql里面的分组和聚合函数了),如下图:
                                        
 
    5.计算器:用计算器计算出各个指标的平均数,如图:
   
 
    6.插入|更新:这一步将数据保存到目标数据库中,准备工作为先在数据源2中创建需要的表:
        建表如图:
                         
        插入|更新如图:选择数据源2,表为刚刚创建的表
                                            
        这一步根据workerId查询判断执行更新或者插入操作,到这里这个简单的转换工作就完成了,可以去数据库里面查询一下,看到数据都出来了是不是满满的成就感呢
 
                           
 
    感悟:做到这里让我想到一个问题,以前做车辆管理系统高危用户五级风险预警,当时是用java算出来的,真是让人头大。先去查询用户驾驶行为,再查询用户行为报警等各种数据,然后拼命的循坏各种判断,得到分析后的数据再保存到另外一个表中,来来回回写了一堆代码,最后发现执行的时候,定时器一启动服务启内存就完全不够用了,因为我开始是一次性把所有数据查出来再分析的。然后又去想怎么改程序,最终终于拼凑出来了。
现在用kettle去做貌似就简单多了,现在感受到的是开发起来方便,干净利落。不知道放到定时器运行的时候性能效率怎么样?后续持续研究。
 
    4、java调用Kettle示例
        从网上复制的代码, 后续自己写示例验证
public class KettleTest {
    public static void main(String[] args) {
        String filename = "/wang/work/study/Kettle/sample/excel_trans.ktr";
        try {
            KettleEnvironment.init();
            EnvUtil.environmentInit();       
            TransMeta transMeta = new TransMeta(filename);
            Trans trans = new Trans(transMeta);
            trans.execute(null); // You can pass arguments instead of null.
            trans.waitUntilFinished();
            if ( trans.getErrors() > 0 ){
                throw new RuntimeException( "There were errors during transformation execution." );
            }
        }
        catch (KettleException e ) {
            // TODO Put your exception-handling code here.
            System.out.println(filename);
            System.out.println(e);
        }
    }
}
 
    5、java开发定时器执行ktr脚本
        这个步骤省略。
 
总结:工具的使用并不难,关键在于理解业务,还有写sql的能力!
 
仅供参考,不足之处还请见谅,欢迎指正!转载请标明出处。如有疑问,欢迎评论或者联系我邮箱1034570286@qq.com

数据仓库开发——Kettle使用示例的更多相关文章

  1. 开发一个Servlet示例

    Servlet响应请求步骤: Servlet是一个基于Java技术的Web组件,运行在服务器端,用户利用Servlet可以很轻松地扩展Web服务器的功能,使其满足特定的应用需要.Tomcat是一个常用 ...

  2. Lakeshore 中文开发界面,示例项目,飞机大战 等 Lakeshore Chinese development interface, sample project, aircraft war, etc

    Lakeshore 中文开发界面,示例项目,飞机大战 等 Lakeshore Chinese development interface, sample project, aircraft war, ...

  3. 微软官方的.net开发人员代码示例

    微软官方的.net开发人员代码示例,需要的同学到这里下载: https://code.msdn.microsoft.com/

  4. PIE SDK组件式开发综合运用示例

    1. 功能概述 关于PIE SDK的功能开发,在我们的博客上已经分门别类的进行了展示,点击PIESat博客就可以访问,为了初学者入门,本章节将对从PIE SDK组件式二次开发如何搭建界面.如何综合开发 ...

  5. Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

  6. iOS开发之仿射变换示例总结

    本篇博客比较简单,但还是比较实用的.其中的示例依然使用Swift3.0来实现,该博客算是下篇博客的一个引子,因为我们下篇博客要介绍使用Swift开发iOS应用中常用的一些Extension.而在这些E ...

  7. 大数据开发实战:Hadoop数据仓库开发实战

    1.Hadoop数据仓库架构设计 如上图. ODS(Operation Data Store)层:ODS层通常也被称为准备区(Staging area),它们是后续数据仓库层(即基于Kimball维度 ...

  8. [转]微信开发.Net 接入示例

    本文转自:http://my.oschina.net/lcak/blog/219618 微信公众平台接口开发官方仅提供了 PHP 接入示例代码, 网上找到的.Net代码多半需要积分下载, 所以自己写了 ...

  9. [DeviceOne开发]-手势动画示例分享

    一.简介 这是iOS下的效果,android下完全一致.通过do_GestureView组件和do_Animation组件,deviceone能很容易实现复杂的跨平台纯原生动画效果,这个示例就是通过手 ...

随机推荐

  1. Configure a bridged network interface for KVM using RHEL 5.4 or later?

    environment Red Hat Enterprise Linux 5.4 or later Red Hat Enterprise Linux 6.0 or later KVM virtual ...

  2. 为什么 Android Studio 工程文件夹占用空间这么大?我们来给它减减肥

    偶然中发现Android Studio的工程文件夹比ADT Bundle的大很多.用Android Studio新建一个空工程,工程文件夹大小为30M,运行一次后大小为40M.同样用ADT Bundl ...

  3. javascript运动学教程

    本文系笔者学习原生javascript动效的笔记.内容基于某非著名培训机构的视频教程.并重新做了归类整理.删除了一些过时的内容.并重做了GIF图,加上了自己的一些分析. 一. 运动学基础 引子:从左到 ...

  4. XSS 前端防火墙 —— 天衣无缝的防护

    上一篇讲解了钩子程序的攻防实战,并实现了一套对框架页的监控方案,将防护作用到所有子页面. 到目前为止,我们防护的深度已经差不多,但广度还有所欠缺. 例如,我们的属性钩子只考虑了 setAttribut ...

  5. 【腾讯优测干货分享】如何降低App的待机内存(三)——探索内存增长的原因

    本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/8BiKIt3frq9Yv9KV5FXlGw 1.3新问题的进一步挖 ...

  6. 使用Masstransit开发基于消息传递的分布式应用

    Masstransit作为.Net平台下的一款优秀的开源产品却没有得到应有的关注,这段时间有机会阅读了Masstransit的源码,我觉得我有必要普及一下这个框架的使用. 值得一提的是Masstran ...

  7. 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gulp专家

    系列目录 前端构建大法 Gulp 系列 (一):为什么需要前端构建 前端构建大法 Gulp 系列 (二):为什么选择gulp 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gul ...

  8. Chrome 控制台不完全指南

    Chrome的开发者工具已经强大到没朋友的地步了,特别是其功能丰富界面友好的console,使用得当可以有如下功效: 更高「逼格」更快「开发调试」更强「进阶级的Frontender」 Bug无处遁形「 ...

  9. 用java开发微信公众号:接收和被动回复普通消息(三)

    上篇说完了如何接入微信公众号,本文说一下微信公众号的最基本功能:普通消息的接收和回复.说到普通消息,那么什么是微信公众号所定义的普通消息呢,微信开发者文档中提到的接收的普通消息包括如下几类: 1.文本 ...

  10. direction和unicode-bidi

    在做多语言页面,接触过阿利伯语.希伯来语的同学肯定了解书写方向的重要性,包括我们五四运动前的书写顺序也是从右到左的.css中 unicode-bidi和direction属性决定了HTML或XML文字 ...