博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
构建事实表
阅读量:3957 次
发布时间:2019-05-24

本文共 2788 字,大约阅读时间需要 9 分钟。

实验名称

构建事实表

实验目的

1、了解事实表的几种类型

2、掌握使用kettle构建事实表

实验背景

维度建模中的在行业广泛被使用,它针对各个维作了大量的预处理。比如,按照维进行预先的统计、分类、排序等。通过这些预处理,能够极大的提升数据仓库的处理能力。事实表作为维度建模的总要组成之一,掌握事实表构建非常重要。

实验原理

Kimball 最先提出维度建模这一概念,它是建设中的一种方法。对于维度建模,最简单的描述就是,按照事实表、维度表来构建数据仓库和。

维度建模中有一些比较重要的概念,最常见的两个概念包括维度表和事实表。如图:

在这里插入图片描述

图1: 维度建模:–星型模型

维度建模法,其最简单的描述就是,按照事实表,维度表来构建数据仓库,数据集市。

常见的事实表主要有如下3种类型。

(1)事务型事实表即“Transaction fact table”:是事务粒度的,以单个事务、单个事件为单位,每次事务作为事实表的1行数据,如刷卡一次,会有一条刷卡记录。

(2)周期快照事实表即“Periodic snapshot fact table”:是时间周期粒度的,以固定时间周期为单位,每个时间周期对应一行数据,如每一天、每一个月的话费支出。

(3)累积快照事实表即“Accumulating snapshot fact table”:当新的事实到达后,更新事实表的记录。例如,订单处理过程有多个日期:下单日期、发货日期、签收日期、退款日期等。在这个订单的处理过程中,随着订单的状态改变,事实表的相应日期也在改变

本实验使用kettle实现做为ETL工具,构建第一种事实表。

实验环境

Ubuntu 16.04

kettle 8.2

建议课时

2课时

实验步骤

一、数据准备

(1)下载建表语句dim-1.sql,放在 /home/ubuntu/目录下。

wget http://i9000.net:8888/sgn/HUP/ETL/2106/fact-1.sql

(2)先登陆mysql数据库。数据库服务器地址和端口号信息隐藏在实验机右侧。

在这里插入图片描述

用户名为root,密码为123456;登陆命令如下:(主机IP和端口号要根据“实验机信息”修改)

mysql -h10.90.44.1 -P35223 -uroot -p

输入以上命令,回车,接着输入密码即可登陆。

登陆成功界面如下:

在这里插入图片描述

(3)创建test数据库实例并选择该实例。

create databases test ;use  test;

(4)在mysql命令行执行fat-1.sql脚本

source  /home/ubuntu/fact-1.sql

(5)执行完毕用以下命令看到创建的表

show tables ;

在这里插入图片描述

二、环境准备

1、修改insight的界面显示,设置为中文。

步骤1:选择tools菜单,选择"options…"菜单项目

在这里插入图片描述

步骤2:打开options…菜单后,切换到"look&Feel"选项,并设置"Preferred Language "项 为“Simplified Chinese” 如图:

在这里插入图片描述

步骤3:单击“OK”按钮保存

2、创建转换,并保存。

步骤1:选择文件菜单,选择“新建”,选择“转换”

在这里插入图片描述

步骤2:单击“保存”按钮,输入转换名称(根据自己需要取),选择合适的保存路径,单击“OK"按钮。

在这里插入图片描述

3、创建数据库连接

步骤1:选择文件菜单,选择“新建”,选择“数据库连接”,打开数据连接设置页面

在这里插入图片描述

在这里插入图片描述

步骤2:配置数据库各项参数,如图

在这里插入图片描述

步骤3:单击“测试”按钮,测试数据库连接是否正常。如出现如下提示,则说明连接成功,如图。

在这里插入图片描述

三、事务型事实表样式

事务型事实表记录的是事务层面的事实,保存的是最原始的数据,也称“原子事实表”。事务型事实表中的数据在事务型事件发生后产生,数据的粒度通常是每个事务一条记录。一旦事务被提交,事实表数据被插入,数据就不再进行更改,其更新方式为增量更新。

事务型事实表的日期维度记录的是事务发生的日期,它记录的事实是事务活动的内容。用户可以通过事务型事实表对事务行为进行特别详细的分析。

事务型事实表示例如下图所示。

在这里插入图片描述

​ 事务型事实表示例

四、事务型事实表构建步骤

1、选取各所需“步骤”,包括“表输入”、“字段选择”、“数据库查询”、“表输出”,并用“跳”–即连线连接,如图。

在这里插入图片描述

说明:备注部分(即底色为橙黄色的),可做可不做。

​ 加载事务型事实表流程示例

2、取最大更新时间。双击名称为“取最大更新时间”的步骤,打开后设置【数据连接】、【SQL】,设置如下图所示。

具体SQL:

SELECT coalesce( 	max(update_date), 	'1970-01-01' )  FROM fat_borrow_info

在这里插入图片描述

​ 图 “取最大更新时间”的设置

3、取源表增量数据。双击名称为“取borrow_info新记录”的步骤,打开后设置【数据连接】、【SQL】,设置如下图所示。

具体SQL:

SELECT  work_ID , operable_time , student_code , ISBN , stack_room , operator , operator_type , date_format(operable_time,'%Y%m%d') FROM borrow_info where date_format(operable_time,'%Y%m%d') > ?

在这里插入图片描述

​ 图 “取borrow_info新记录”的设置

4、对字段进行重新设置。双击名称为“字段选择”的步骤,“选择和修改”、“元数据”选项卡的设置如下图所示。

步骤1:在“选择和修改”选项卡中设置字段信息,如图

在这里插入图片描述

​ 选择和修改”选项卡设置

步骤2:在“元数据”选项卡中设置长度、类型的信息,如图

在这里插入图片描述

​ 图 “元数据”选项卡的设置

5、查询维度表,获取代理键。步骤名称为“数据库查询key”,设置如下图所示。

在这里插入图片描述

图“数据库查询”的设置

6、写入事实表。双击名称为“写入fat_borrow_info”的步骤,打开页面后,设置如下图所示。

步骤1:在【数据连接】中,选择合适的数据连接。接着单击【目标表】输入框右侧的“浏览(B)…”按钮,在弹出的选择表中,选择fat_borrow_info .

在这里插入图片描述

步骤2:勾选【指定数据字段】选线。接着选择“数据字段”选项卡,单击“获取字段”按钮,设置字段映射关系,如图

在这里插入图片描述

7、单击“执行”按钮,如无错误,则说明运行成功。

在这里插入图片描述

8、改变数据情况,再执行程序,观察数据变化。

修改、增加 表borrow_info中的数据,观察表fat_borrow_info变化情况。

实验总结

本实验主要是使用kettle构建维度表类型1(类型1:业务主体数据发生变化时,用当前最新数据覆盖旧数据,只保留最新版本数据)。

转载地址:http://mvxzi.baihongyu.com/

你可能感兴趣的文章
Does your mother know
查看>>
《写出质量好软件的75条体会》暨答案ZT [转自monkyy的blog]
查看>>
关于详细设计
查看>>
POJ2838,Sliding Window(单调队列)
查看>>
牛客练习赛50,B tokitsukaze and Hash Table(STL+输入输出挂)
查看>>
POJ3728,The merchant(倍增LCA+分治)
查看>>
2019 ICPC Malaysia National,E. Optimal Slots(01背包变形)
查看>>
洛谷P1638 逛画展(双向队列)
查看>>
牛客练习赛51,D(二分图匹配)
查看>>
POJ2892,Tunnel Warfare(线段树维护连续区间)
查看>>
POJ3468,A Simple Problem with Integers(线段树-区间查询-区间更新)
查看>>
快速幂(递归)
查看>>
CodeForces 1101A Minimum Integer(思维)
查看>>
CodeForces 1102A Integer Sequence Dividing(思维)
查看>>
CodeForces 1087B Div Times Mod(思维)
查看>>
杭电ACM——4310,Hero(贪心)
查看>>
杭电ACM——1789,Doing Homework Again(贪心)
查看>>
北大ACM——2782,Bin Packing(贪心)
查看>>
北大ACM——4014,Dice(贪心)
查看>>
杭电ACM——4864,Task(贪心)
查看>>