数据仓库专题(9)-基本概念和定义(整理自互联网)

1、星型模型的组成

一个星型模型对应一个分析主题,它由一个事实表和一组维表组成。其中事实表是星型模型的核心,由分析变量和分析维度代理键组成,分析变量存放分析事实数 据,分析维度代理键用于连接维表。维表是星型模型的外围,存放分析维度数据,由维的代理键、维的层次属性、维的描述信息组成。

2、星型维度模型设计的依据和步骤

星型维度模型设计的依据是《业务需求》、《数据源分析报告》、《需求分析报告》、《功能设计》,星型维度模型设计的步骤是从逻辑模型到物理模型。

3、星型维度模型设计方法

(1)星型维度逻辑模型设计过程

①根据业务分析主题,确定模型主题(如根据贷款收息分析主题,确定贷款收息模型;根据贷款欠息分析主题,确定贷款欠息模型等)。

②列出每个模型主题的分析量和分类量。

③设计事实表。事实表可以由分析量+分析维度代理键得到。

④设计维表。维表可以由维SK+层次DK+其他属性信息得到,其中维SK、层次DK和其他属性信息可以从各个业务分析主题中总结得到。

⑤设计对照表。根据源系统中数据项的取值与数据仓库中数据项的取值的对照关系得到,采用SAS的FORMAT技术可以方便地使用对照表。

⑥决定模型中每个字段的来源和算法。根据《数据源分析报告》,决定模型中每个字段来自哪个表哪个字段、在何种条件下得到、通过何种计算得到。

⑦决定表的分割。表的分割是时间和空间的权衡折衷,星型维度模型采用下列分割方法:按汇总粒度的分割,逐笔表、日表、月表、年表等;

按当前和历史分割,当前表、历史表;

按访问频度分割,高访问频度表、低访问频度表;

按变化频度分割,高变化频度表、低变化频度表。

(2)星型维度物理模型设计过程

①表定义:表名、设计者、数据量估计。

②字段定义:名称、类型、长度、主键、索引。

③表与表之间的关系定义。

4、星型维度模型设计考虑

星型维度模型设计应有时间效率考虑和空间效率考虑两个方面。

1.时间效率考虑

星型维度模型中对时间效率考虑主要体现在中间表的设计和按访问频度的不同分割表两方面。

(1)中间表的设计

星型维度中间表的设计有利于并行处理、降低模块间的耦合性。中间表与事实表一一对应,用业务键而不是数据仓库的代理键,保存了对应事实表的新增事实数据; 使用SAS的DAT步扫描数据源表一次,就能得到多张中间表;将每个中间表的业务键连接维表得到代理键,就能实现中间表到事实表的转换。这样,不仅不同数 据源表抽取到中间表的过程可以并行处理,而且各个中间表到事实表的转换也可以并行处理。此外,每个模块间的耦合性降低了许多,模块的灵活性和可维护性得到 大大的提高。

(2)按访问频度的不同分割表

星型维度模型中维表或事实表的各项数据的访问频度常常是不同的。如果该维表或事实表的数据量较大,那么访问速度就会受到影响。如果将访问频度高的数据分离出来,放在不同的表中,就可以加快该部分数据的访问速度。

 2.空间效率考虑

星型维度模型对空间效率的考虑主要体现在应用级数据压缩设计和按变动频度的不同分割表两方面。

(1)应用级数据压缩设计

星型维度模型的事实表和维表都保留历史信息。为使数据量不至于过大,事实表和维表都采用时间轴压缩设计,用有效开始日(EFFECTIVE_FROM)、有效截止日(EFFECTIVE_TO)来压缩这段时间内未发生变化的数据。

在使用压缩的历史数据时,若进行解压缩,必然既耗费时间又浪费空间。通过巧妙设计JOIN方法,就可以不经过解压缩而得到准确的历史数据。例如:事实表a 和维表b都经过了时间轴压缩,现在事实表a需要JOIN维表b中相应时间点的信息,那么正确的结果应该是事实表a中的记录能够JOIN到维表b中所有在时 间段上与之相交的记录,并出现表2所示的四种基本相交情况。

若将上述各种情况都写入SQL语句的WHERE条件,势必很复杂。经过对时间段交集的分析,可归纳出下列的WHERE条件:

a.effective_from <= b.effective_to and a.effective_to >= b.effective_from

就能够保证事实表和维表JOIN结果的正确。

(2)按变动频度的不同分割表

星型维度模型中的各项数据变动频度常常是不同的,例如客户的开户许可证、法人代表等数据往往变动频度较小,而信用等级等数据可能变动频度较大。由于要保存 历史数据的变动,变动频度不同的数据放在同一张表中容易造成数据的冗余。将变动频度较小的数据分离出来,放在不同的表中,就可以降低数据的冗余。

时间: 2024-11-25 13:19:49

数据仓库专题(9)-基本概念和定义(整理自互联网)的相关文章

数据仓库专题(16)-分布式数据仓库实践指南-目录篇

前言: 准备系统化整理一套分布式数据仓库建模实践指南,先把目录列出来吧,算是给自己设计一个目标吧. 第一部分 基础篇 第一章 数据仓库概念与定义 1.1 数据管理体系 1.2 数据仓库概念 1.3 数据仓库职责 第二章 数据仓库体系结构 2.1 Inmon CIF 2.2 Kimball 2.3 对于与分析 第三章 维度建模基础 3.1 kimball四步建模法 3.2 维度设计 3.3 事实表设计 第二部分 实践篇 第一章 路线图 第二章 业务分析-深浅有度 第三章 数据分析-区别对待 第四章

数据仓库专题(4)-分布式数据仓库事实表设计思考---讨论精华

一.前言 上一篇分享博文<数据仓库专题(3)--分布式数据仓库事实表设计思考>后,陆续有各位兄弟参加大讨论,提出了各种问题,关于分布式环境下,维表和事实表设计,进行了比较深入的探讨,在此汇集整理,分享给大家.希望能有更多人参与尽力啊,共同探索分布式数据仓库数据模型的设计. 二.纪要 [活跃]北京-RTB-胖哥(1106110976) 10:21:36 分布式模式下事实表设计思考: 做大做强事实表,做小做弱维表: [冒泡]杭州-电子病历<[email protected]> 10:2

Oracle知识梳理(一)理论篇:基本概念和术语整理

理论篇:基本概念和术语整理 一.关系数据库           关系数据库是目前应用最为广泛的数据库系统,它采用关系数据模型作为数据的组织方式,关系数据模型由关系的数据结构,关系的操作集合和关系的完整性约束三部分组成. 二.关系数据库中的一些基本术语和定义 1.关系数据模型 关系数据模型是建立在严格的数学概念的基础上,由一组关系组成,每个关系的数据结构是一张严格规范化的二维表,简单说关系数据模型就是用二维表的形式来表示实体和实体间联系的数据模型. ①二维表: 简单说关系数据库中数据的主要存储形式

数据仓库与数据集市的概念区别

企业从事数据仓库项目时,往往会遇到多个数据仓库软件供应商.各供应商除了推销相关的软件工具外,同时会向企业灌输许多概念,其中,数据仓库和数据集市是最常见的.由于术语定义不统一,另外各个供应商销售策略不一样,往往会给企业带来很大的混淆.最典型的问题是:到底是先上一个企业级的数据仓库呢?还是先上一个部门级的数据集市?本文试图说明这两个概念之间的区别和联系,以期对具体的数据仓库项目有所裨益. 1.为什么会出现数据仓库和数据集市? "数据仓库"的概念可以追溯到80 年代中期.从本质上讲,最初数据

数据仓库专题(2)-Kimball维度建模四步骤

一.前言 四步过程维度建模由Kimball提出,可以做为业务梳理.数据梳理后进行多维数据模型设计的指导流程,但是不能作为数据仓库系统建设的指导流程.本文就相关流程及核心问题进行解读. 二.数据仓库建设流程 以下流程是根据业务系统.组织结构.团队结构现状设定的数据仓库系统建设流程,适合系统结构复杂,团队协作复杂,人员结构复杂的情况,并且数据仓库建设团队和业务系统建设团队不同的情况.具体流程如下图所示: 图1 数据仓库系统建设流程 三.四步维度建模 Kimball四步建模流程适合上述数据仓库系统建设

&lt;27&gt;【理解】02-结构体数组概念及定义+【掌握】03-结构数组的初始化和遍历

[理解]02-结构体数组概念及定义 结构体数组: 用来存放大量的结构体相同的结构体变量 结构体数组定义: 结构体数组定义的第一种方式: 1)定义结构体的同时,定义数组 struct Student{ int age; char *name; int s_no; float score; }stu[5]; 结构体数组定义的第二种方式 2)先定义结构体,后定义数组 struct Student boy[5]; #include <stdio.h> int main(int argc, const

&lt;22&gt;【掌握】指针变量概念及定义方法+【理解】两变量值交换的方法+【掌握】总结*使用场合

[掌握]指针变量概念及定义方法 1.指针变量 用来存放地址的变量,就是指针变量 2.指针? 就是地址,地址是个常量 3.指针变量的定义 数据类型 *指针变量名; int *p; //定义了一个指针变量,变量名是p //int表示,p只能存放一个int类型的变量的地址 char *p1; //定义了一个指针变量,变量名是p1 //p1只能存放一个char类型数变量的地址 int num=10; char *p = &num; //警告 4.指针变量定义的注意事项 1)“*” 必须得有,如果没有就相

&lt;26&gt;【了解】10-函数指针概念及定义+【掌握】11-函数指针使用+

[了解]10-函数指针概念及定义 函数指针变量 存放函数的首地址的指针变量就是函数指针变量 函数指针变量的定义 返回值类型 (*变量名)(函数的参数); 函数的声明: int sum(int a,int b);----> 函数指针 int (*p1)(int a,int b); //定义了一个函数指针 p1 //p1可以存放 返回值是int类型,并且有两个形参,形参的类型还都是int类型的函数的地址 //函数指针的初始化 p1 = sum; //sum存的就是函数在内存中的首地址 #includ

我在网络上看到的PDM的概念、定义、优缺点等相关信息

我在网络上看到的PDM的概念.定义.优缺点等相关信息 PDM的确是一种"管得很宽"的软件,凡是最终可以转换成计算机描述和存储的数据,它都可以一概管之,例如:产品结构和配置.零件定义及设计数据.CAD绘图文件.工程分析及验证数据.制造计划及规范.NC编程文件.图像文件(照片.造型图.扫描图等).产品说明书.软件产品(程序.库.函数等"零部件").各种电子报表.成本核算.产品注释等.项目规划书.多媒体音像产品.硬拷贝文件.其它电子数据等. PDM可以广泛地应用于各工业领

javascript-理解05?数组的概念及定义

数组的概念及定义 一组一般情况下相同类型的数据. 除了 Object 类型之外,Array 类型是ECMAScript 最常用的类型.而且 ECMAScript 中的  Array 类型和其他语言中的数组有着很大的区别. 虽然数组都是有序排列, 但 ECMAScript 中的数组每个元素可以保存任何类型.ECMAScript 中数组的大小也是可以调整的. 数组的创建方式(构造函数和JSON) 第一种是 new 运算符(构造函数); 第二种是字面量(JSON); 注意:给构造函数传递一个值也可以创