9 关于数据仓库维度数据处理的方法探究系列——雪花维

简介:
   雪花架构是星型架构的一个扩展,有多个表定义一个或多个维度。在雪花架构中,只将主维度表和事实数据表联接。其他维度表联接到主维度表。
 
5、 雪花维概述 
5.1概述 
常规维度是指那些既不是虚拟维度、父子维度,也不是数据挖掘维度的维度。与父子维度不同(其层次结构是不均衡层次结构),常规维度中的层次结构要么均衡层次结构,要么是不齐整层次结构。常规维度包含的级别数目与定义时选择的列数目相同。这些级别一般按照常规到特定的顺序排列。 (微软 SQLServer2000联机帮助概念 )
常规维度可以基于多个联接表。如果一个常规维度基于多个表,而且它没有雪花架构,则将它添加到多维数据集中时将采用这种架构。如果一个常规维度基于单个表,而且用星型架构将该维度添加到多维数据集中,则该多维数据集将保留星型架构。 (微软 SQLServer2000联机帮助概念 )
因此雪花架构是星型架构的一个扩展,有多个表定义一个或多个维度。在雪花架构中,只将主维度表和事实数据表联接。其他维度表联接到主维度表。
 
5.2实现 
事实上雪花维度既可以是由多个表联合组成的,也可以由一个表的多个有固定层次结构的;当然多个表也可以融合成为一个表或者视图,实际项目中也会这么做.多个表的关联组合会带来一定的隐患,主要是键值不能匹配或者缺失,上级找不到下级,下级找不到父级,所以处理起来比较困难,当然通过表关联比较符合数据库的设计原则;通过将两个表放到一起就可以有效的缓解,数据不一致的情况。
对于两个不同的表的处理,请参见 3.3.1覆盖,只不过在完成表的处理之后,需要对这两张表进行视图合并,增加无键值时的缺省值。
当然也可以通过存储过程将两张表合并到一张表中,具体情况根据业务需求而实现。
代码

CREATE TABLE t_tmp_xxx
(
ID VARCHAR(20) NOT NULL,
SuperID VARCHAR(20) NOT NULL,
Name VARCHAR(50) ,
CONSTRAINT PK_t_tmp_xxx PRIMARY KEY (ID)
)
go
CREATE TABLE t_tmp_super_xxx
(
SuperID VARCHAR(20) NOT NULL,
Name VARCHAR(50) ,
CONSTRAINT PK_t_tmp_super_xxx PRIMARY KEY (SuperID)
)
go
CREATE TABLE t_dem_xxx
(
ID VARCHAR(20) NOT NULL,
Name VARCHAR(50) ,
SuperID VARCHAR(20) NOT NULL,
SuperName VARCHAR(50),
CONSTRAINT PK_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.superid END 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
ON a.SuperID=b.SuperID 






本文转自baoqiangwang51CTO博客,原文链接:http://blog.51cto.com/baoqiangwang/310302 ,如需转载请自行联系原作者
相关文章
|
5月前
|
存储 运维 监控
云原生数据仓库使用问题之怎么创建维度表
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
存储 数据挖掘 关系型数据库
数仓学习---6、数据仓库概述、 数据仓库建模概述、维度建模理论之事实表、维度建模理论之维度表
数仓学习---6、数据仓库概述、 数据仓库建模概述、维度建模理论之事实表、维度建模理论之维度表
|
7月前
|
存储 数据采集 分布式计算
大规模数据处理:从数据湖到数据仓库
对于大型企业来说,海量的数据是一种巨大的财富,但如何高效地处理这些数据却是一个巨大的挑战。本文将介绍大规模数据处理的两种主流方式:数据湖和数据仓库,并探讨它们的优缺点以及如何选择适合企业的方案。
88 1
|
7月前
|
数据挖掘 数据库
离线数仓6.0--- 数据仓库 ER模型-范式理论,维度模型、维度建模理论之事实表、维度建模理论之维度表
离线数仓6.0--- 数据仓库 ER模型-范式理论,维度模型、维度建模理论之事实表、维度建模理论之维度表
310 0
|
SQL 数据挖掘 HIVE
Hive数据仓库维度分析
Hive数据仓库维度分析
169 0
|
存储 BI 数据库
数据仓库(4)基于维度建模的数仓KimBall架构
基于维度建模的KimBall架构,将数据仓库划分为4个不同的部分。分别是操作型源系统、ETL系统、数据展现和商业智能应用,如下图。
307 1
|
大数据 数据管理 数据库
数据仓库(3)数仓建模之星型模型与维度建模
维度建模是一种将数据结构化的逻辑设计方法,也是一种广泛应用的数仓建模方式,它将客观世界划分为度量和上下文。度量是常常是以数值形式出现,事实周围有上下文包围着,这种上下文被直观地分成独立的逻辑块,称之为维度。它与实体-关系建模有很大的区别,实体-关系建模是面向应用,遵循第三范式,以消除数据冗余为目标的设计技术。维度建模是面向分析,为了提高查询性能可以增加数据冗余,反规范化的设计技术。
478 1
|
存储 SQL 数据挖掘
数据仓库-维度建模不是万金油
写在前面:最近有些抵触写东西,总感觉自己没有清晰的表达思路和专业的知识体系,写的东西都是更偏向个人经验的一家之谈;之前总想着把文章结构做好,图片做好,表达做好,这样能更容易让大家理解,可以让更多的人接受所要表达的观点;但是,这样写太痛苦了,似乎是为了达到某种结果而刻意为之。。。最终还是回归表达的本质,传播思路和想法,把这个说清楚就可以了,不管是三言两语还是长篇大论,让看到的人能知道有这么一种观点和
144 0
|
SQL 存储 HIVE
数据仓库系列--维度表技术
数据仓库系列--维度表技术
155 0
|
SQL 存储 数据挖掘
ChatGPT 数据仓库实战:Kaggle 酒店入住数据分析与维度建模
ChatGPT 数据仓库实战:Kaggle 酒店入住数据分析与维度建模

热门文章

最新文章

下一篇
DataWorks