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. Effective java笔记(二),所有对象的通用方法

    Object类的所有非final方法(equals.hashCode.toString.clone.finalize)都要遵守通用约定(general contract),否则其它依赖于这些约定的类( ...

  2. C# 序列化与反序列化几种格式的转换

    这里介绍了几种方式之间的序列化与反序列化之间的转换 首先介绍的如何序列化,将object对象序列化常见的两种方式即string和xml对象; 第一种将object转换为string对象,这种比较简单没 ...

  3. 5.0 JS中引用类型介绍

    其实,在前面的"js的六大数据类型"文章中稍微说了一下引用类型.前面我们说到js中有六大数据类型(五种基本数据类型 + 一种引用类型).下面的章节中,我们将详细讲解引用类型. 1. ...

  4. Oracle补全日志(Supplemental logging)

    Oracle补全日志(Supplemental logging)特性因其作用的不同可分为以下几种:最小(Minimal),支持所有字段(all),支持主键(primary key),支持唯一键(uni ...

  5. Windows下MySQL无法启动

    问题描述: 从网上下了5.7 的MySQL,在bin目录下执行 start mysqld ,弹出个cmd窗口一闪就没了,也看不清是什么报错.mysqld --install安装了服务,也启动不了.   ...

  6. 【腾讯Bugly干货分享】微信终端跨平台组件 Mars 系列 - 我们如约而至

    导语 昨天上午,微信在广州举办了微信公开课Pro.于是,精神哥这两天的朋友圈被小龙的"八不做"刷屏了.小伙伴们可能不知道,下午,微信公开课专门开设了技术分论坛.在分论坛中,微信开源 ...

  7. CSharpGL(25)一个用raycast实现体渲染VolumeRender的例子

    CSharpGL(25)一个用raycast实现体渲染VolumeRender的例子 本文涉及的VolumeRendering相关的C#代码是从(https://github.com/toolchai ...

  8. python处理命令行参数

    直接从命令行执行py文件的时候如果带有参数,如何获取这些参数,如何解析? http://blog.chinaunix.net/uid-20786165-id-3182268.html sys.argv ...

  9. Oozie分布式任务的工作流——邮件篇

    在大数据的当下,各种spark和hadoop的框架层出不穷.各种高端的计算框架,分布式任务如乱花般迷眼.你是否有这种困惑!--有了许多的分布式任务,但是每天需要固定时间跑任务,自己写个调度,既不稳定, ...

  10. IL指令详细表

    名称 说明 Add 将两个值相加并将结果推送到计算堆栈上. Add.Ovf 将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上. Add.Ovf.Un 将两个无符号整数值相加,执行溢出检查,并且 ...