9 关于数据仓库维度数据处理的方法探究系列——雪花维
来源:互联网 发布:会员中心 h5 源码 编辑:程序博客网 时间:2024/04/29 19:32
原创于2006年12月16日,2009年10月15日迁移至此。
雪花架构是星型架构的一个扩展,有多个表定义一个或多个维度。在雪花架构中,只将主维度表和事实数据表联接。其他维度表联接到主维度表。
5、雪花维概述
5.1概述
常规维度是指那些既不是虚拟维度、父子维度,也不是数据挖掘维度的维度。与父子维度不同(其层次结构是不均衡层次结构),常规维度中的层次结构要么均衡层次结构,要么是不齐整层次结构。常规维度包含的级别数目与定义时选择的列数目相同。这些级别一般按照常规到特定的顺序排列。(微软SQLServer2000联机帮助概念)
常规维度可以基于多个联接表。如果一个常规维度基于多个表,而且它没有雪花架构,则将它添加到多维数据集中时将采用这种架构。如果一个常规维度基于单个表,而且用星型架构将该维度添加到多维数据集中,则该多维数据集将保留星型架构。(微软SQLServer2000联机帮助概念)
因此雪花架构是星型架构的一个扩展,有多个表定义一个或多个维度。在雪花架构中,只将主维度表和事实数据表联接。其他维度表联接到主维度表。
5.2实现
事实上雪花维度既可以是由多个表联合组成的,也可以由一个表的多个有固定层次结构的;当然多个表也可以融合成为一个表或者视图,实际项目中也会这么做。
多个表的关联组合会带来一定的隐患,主要是键值不能匹配或者缺失,上级找不到下级,下级找不到父级,所以处理起来比较困难,当然通过表关联比较符合数据库的设计原则;通过将两个表放到一起就可以有效的缓解,数据不一致的情况。
对于两个不同的表的处理,请参见3.3.1覆盖,只不过在完成表的处理之后,需要对这两张表进行视图合并,增加无键值时的缺省值。
当然也可以通过存储过程将两张表合并到一张表中,具体情况根据业务需求而实现。
代码
CREATE TABLE t_tmp_xxx
(
ID VARCHAR(20) NOT NULL,
SuperIDVARCHAR(20) NOT NULL,
Name VARCHAR(50) ,
CONSTRAINTPK_t_tmp_xxx PRIMARY KEY (ID)
)
go
CREATE TABLE t_tmp_super_xxx
(
SuperIDVARCHAR(20) NOT NULL,
Name VARCHAR(50) ,
CONSTRAINTPK_t_tmp_super_xxx PRIMARY KEY (SuperID)
)
go
CREATE TABLE t_dem_xxx
(
ID VARCHAR(20) NOT NULL,
Name VARCHAR(50) ,
SuperIDVARCHAR(20) NOT NULL,
SuperName VARCHAR(50),
CONSTRAINTPK_t_dem_xxx PRIMARY KEY (ID)
)
go
INSERT INTO t_tmp_xxx VALUES('1','1','a')
INSERT INTO t_tmp_xxx VALUES('2','2','b')
INSERT INTO t_tmp_xxx VALUES('3','3','c')
INSERT INTO t_tmp_super_xxx VALUES('2','bb')
INSERT INTO t_tmp_super_xxx VALUES('4','dd')
Go
CREATE VIEW v_dem_xxx AS
SELECT '-1' as ID,’缺省’Name,'-1' SuperID, ‘缺省' SuperName
Union All
SELECT a.ID ID,a.name Name,
CASE WHEN b.superid IS NULL THEN '-1' ELSE b.superidEND SuperID,
CASE WHEN b.superid IS NULL THEN’缺省'ELSE b.name END SuperName
FROM t_tmp_xxx a LEFT JOIN t_tmp_super_xxx b
ONa.SuperID=b.SuperID
- 9 关于数据仓库维度数据处理的方法探究系列——雪花维
- 1 关于数据仓库维度数据处理的方法探究系列——维的概述
- 7 关于数据仓库维度数据处理的方法探究系列——急剧变化维概述
- 8 关于数据仓库维度数据处理的方法探究系列——父子维
- 2 关于数据仓库维度数据处理的方法探究系列——无变化维度处理
- 4 关于数据仓库维度数据处理的方法探究系列——缓慢变化维处理——覆盖方式
- 5 关于数据仓库维度数据处理的方法探究系列——缓慢变化维处理——全历史记录
- 3 关于数据仓库维度数据处理的方法探究系列——缓慢变化维概述和原理
- 6 关于数据仓库维度数据处理的方法探究系列——缓慢变化维处理——记录最新记录及上一次历史
- 维度模型数据仓库(十八) —— 迟到的事实
- <数据仓库工具箱—维度建模的完全指南>读书笔记
- 数据仓库的时间维度
- Kimball的维度数据仓库
- 维度模型数据仓库(二) —— 维度模型基础
- 维度模型数据仓库(八) —— 维度子集
- 维度模型数据仓库(九) —— 角色扮演维度
- 维度模型数据仓库(十一) —— 维度层次
- 维度模型数据仓库(十三) —— 退化维度
- 服务类程序防止内存不断增长的一些方法(一)
- 7 关于数据仓库维度数据处理的方法探究系列——急剧变化维概述
- 一个程序员的奋斗历程
- 8 关于数据仓库维度数据处理的方法探究系列——父子维
- windows apache 下配置ssl
- 9 关于数据仓库维度数据处理的方法探究系列——雪花维
- 不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接
- dataReader= md.ExecuteReader(System.Data.CommandBehavior.CloseConnection)
- 先贤经典的“传”和“承”
- 符号表
- 在 SQL Server 2000 和 SQL Server 2005 master.dbo.sysprocesses 表中的此 waittype 和 lastwaittype 列的说明
- VIPER Lab’s VAST Live Distro – VoIP Security Testing LiveCD
- javascript document对象的属性和方法
- 关于数据增量抽取的模拟实现——原理