数据仓库是一个很大的数据存储集合,出于企业的分析报告和决策支持目的而创建,对多样的业务数据进行筛选和整合,为企业提供一定的BI能力,指导业务流程改进,监视时间成本,质量以及控制。

本质:专门针对数据存储模型
实现:MySQL,Oracle
应用:专门用于实现将各种各样数据进行统一化规范化的数据存储
特点:
本身不产生数据
本身不使用数据
用于实现复杂数据的存储
与数据库的区别:
数据库:一般用于支撑业务数据的存储
网站后台:用户数据、商品数据、订单数据
数据仓库:专门为数据处理提供数据的
业务数据
用户行为
第三方数据
日志数据
问题:
数据的种类非常多,每一种数据的内容或者格式都不一样
有结构化,有非结构化
有合法的,有非法的
有需要的,有不需要的
MySQL是一个专门用于存储结构化数据的数据存储工具
结构化
需要
合法
如何将各种各样的数据存储在MySQL中?
解决:
数据产生以后,不能直接放入数据仓库(MySQL)中存储
原始数据进行一步预处理,将需要的、合法的数据放进去
这个过程就叫:ETL 抽取,转换,装载

ETL:
功能:实现数据的预处理,数据清洗过程,将原始数据经过ETL处理变成想要的数据,进行下一步的应用。
实现:
抽取:读取需要处理的原始数据
转换:将原始数据转换为目标数据
1.过滤:将不需要的数据过滤掉
2.补全:将需要用到的数据补全
3.转换:原始数据的格式不是我们想要的格式,转换为想要的格式
加载:将处理好的目标数据放入数据仓库中

Kettle
实现可视化的ETL
可视化:不用写复杂的代码程序,可以通过图形化的界面来实现数据处理
特点:
学习以及使用的成本比较低
功能非常强大

Kettle
一、转换:
功能:实现一个转换的程序
输入:要读取什么数据进行转换
转换:要对数据怎么进行处理
输出:要将处理好的数据保存到什么地方去

二、作业
功能:将多个转换根据需求构建任务流
任务流:很多个任务(每一个转换程序)根据自动运行的条件来运行就是任务流
实际工作中,一次要执行很多个转换任务,如何
实现这些任务的自动化执行
自动运行:
第一种:定时运行
第二种:依赖关系:
A先运行,A运行成功,B就自动运行

常用组件:
1.共享数据连接
新建的数据库连接都只属于某一个转换程序
如果你想让所有的转换陈鼓型都能使用这个连接,需要开启共享
2.表输入组件

3.插入更新组件
工作需求:将A表的数据同步到B表中,保证B表的数据与A表的数据一致,实现不断更新的操作
A表发生了更新,更新的数据也会同步到B表中
A表没有发生更新,即使程序运行,B表也不发生改变
数据同步的过程:
每次只同步更新的数据
已经同步过的数据,就不会再进行同步
工作中一天同步一次,同步过了之后当天不同步
解决:
插入更新的输出组件
只会同步发生更新的数据,已经同步过的数据不会再次同步
实现:
开发转化 任务流程图
定义输入
定义输出
测试运行
一般找ID做为关键字
更新的时候选择全部更新

同步业务:

全量:每次所有的数据都同步一份
保证A和B是一致的
每次先删除B的所有内容,然后再同步
程序的性能比较差,数据量大了以后,非常慢,不建议使用

增量:每次将发生更新的数据同步,没有发生更新就是已经同步过的数据不再同步
保证A和B是一致的
工作中都使用增量的方式
插入更新:增量的组件

kettle job

1.job的功能:
转换:实现一种数据的转换处理,是一个转换任务

作业:实现多个转换任务按照一定的规则运行,就是一个任务流

时间规则:从00:10分开始,每5分钟运行一次
依赖规则:A成功了就执行B

功能:将多个转换根据彼此之间的关系实现任务流运行

2.job的开发:

需求:每5秒就运行一次
先开一个作业
双击start:设置循环时间