SSAS:关于父子维度的设计

除了之前的几篇文章中出现的时间维度,雪花型维度的设计之外还有一种比较特殊的维度 - 父子维 度。父子维度特殊就特殊在它包含了一种基于递归关系(Recursive Relationship)的引用结构,   在我的这篇文章中提到了如何基于父子层次结构来设计和制作 SSRS 报表,不过那个报表是基于数据仓 库的。而现在我们要设计的是基于父子结构的维度,在此基础之上我们也可以设计出基于 SSAS 数据库 的 SSRS 报表。

下面仍然是我们的测试表和数据,测试表包含了一个员工维度表和销售的事实表。

USE BIWORK_SSIS
GO

IF OBJECT_ID('FactResellerSales','U') IS NOT NULL
DROP TABLE FactResellerSales
GO 

IF OBJECT_ID('DimEmployee','U') IS NOT NULL
DROP TABLE DimEmployee
GO 

SELECT EmployeeKey,
       ParentEmployeeKey,
       EmployeeNationalIDAlternateKey,
       CASE WHEN ISNULL(MiddleName,'') = ''  THEN FirstName +' '+ LastName
            ELSE FirstName +' '+ MiddleName +' '+LastName
       END AS FullName,
       Title
INTO DimEmployee
FROM AdventureWorksDW2012.dbo.DimEmployee

SELECT ProductKey,
       OrderDateKey,
       EmployeeKey,
       SalesOrderLineNumber,
       SalesOrderNumber,
       UnitPrice,
       ProductStandardCost,
       SalesAmount
INTO FactResellerSales
FROM AdventureWorksDW2012.dbo.FactResellerSales
GO

ALTER TABLE DimEmployee
ADD CONSTRAINT PK_EmployeeKey PRIMARY KEY CLUSTERED (EmployeeKey)
GO

ALTER TABLE DimEmployee
ADD CONSTRAINT FK_ParentEmployeeKey FOREIGN KEY(ParentEmployeeKey) REFERENCES DimEmployee

(EmployeeKey)
GO

ALTER TABLE FactResellerSales
ADD CONSTRAINT PK_Reseller_OrderLineNumber_OrderNumber PRIMARY KEY CLUSTERED 

(SalesOrderLineNumber,SalesOrderNumber)
GO

ALTER TABLE FactResellerSales
ADD CONSTRAINT FK_EmployeeKey FOREIGN KEY(EmployeeKey) REFERENCES DimEmployee(EmployeeKey)
GO

SELECT * FROM DimEmployee
SELECT * FROM FactResellerSales

员工表中的 ParentEmployeeKey 指向了自身的主键 EmployeeKey,而 FactResellerSales 中的主键 是由 SalesOrderLineNumber 和 SalesOrderNumber 构成的一个复合主键,并且 EmployeeKey  指 向了 DimEmployee 的 EmployeeKey。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索设计
, table
, 维度建模
, constraint
, 维度
, 基于
父子
,以便于您获取更多的相关知识。

时间: 2024-12-28 00:23:04

SSAS:关于父子维度的设计的相关文章

《BI项目笔记》创建父子维度

原文:<BI项目笔记>创建父子维度 创建步骤: 而ParentOriginID其实就是对应的ParentOriginID,它的 Usage 必须是 Parent 才能表示这样的一个父子维度. 查看OriginID属性, Usage 是 Key. 在这里一定要注意,父子关系层次结构中的子级必须是维度的关键属性,所以OriginID这里的 Usage 必须是 Key . 并且要注意的是每一个维度有且只能有一个属性的 Usage 属性能够被设置为 Key.这里别混淆了维度属性和数据库字段(属性),作

设计指导:QQ商城多维度导航设计思路

我们所说的多维度导航是指能够引导用户通过不同纬度:运营维度.商品自然属性维度.搜索等维度,快速浏览目标商品的导航,我们称之为多维度导航. 本次薯片会一改以往低调.沉稳之作风,先瑜伽团美女show上阵,再是以臭为首的吃喝团上阵,两轮下来大家情绪Hight到了极点,自然讨论的时候思维也是相当的敏捷,O(∩_∩)O! 本次薯片会以QQ商城网站为例,对多维度导航进行了深入探讨-- 我们所说的多维度导航 主要是指:能够引导用户通过不同纬度:运营维度.商品自然属性维度.搜索等维度,快速浏览目标商品的导航,我

SSAS:实现Cube 以及角色扮演维度,度量值格式化和计算成员的创建

在熟悉完下面这三种维度的创建方式之后,就可以开始创建我们的第一个 Cube 了. SSAS 系列 - 自定义的日期维度设计 SSAS 系列 - 基于雪花模型的维度设计 SSAS系列 - 关于父子维度的设计 我们将使用下面的这些脚本来创建一些维度表和事实表,数据源的来源是 AdventureWorksDW2012, 但由于数据列太多因此我精简了一些表并且自定义了 DimDate 表. USE BIWORK_SSIS GO SET NOCOUNT ON IF OBJECT_ID('FactInter

SSRS:在 Cube 中通过 MDX 查询实现基于父子递归关系的汇总报表

之前我写了一篇在 SSRS 开发中处理这种父子关系的汇总与聚合的文章 (SSRS 系列 - 使用分组 Group 属性实现基于父子递归关系的汇总报表),示例中的查询是基于 SQL Server 关系型数据库的,这 一篇是基于 MDX 父子维度的 SSRS 报表. 沿用上一篇中的 (SSAS系列 - 关于父子维度的设计)父子维度 和(SSAS 系列 - 自定义的日期维度 设计) 的时间维度,并在此基础上创建 Cube 并部署. 当然在这个例子中可能不会使用到时间维度,之所以添加进来只是因为在 Cu

SSAS:自定义的日期维度设计

SSAS Date 维度基本上在所有的 Cube 设计过程中都存在,很难见到没有时间维度的 OLAP 数据库. 但是根据不同的项目需求, Date 维度的设计可能不大相同,所以在设计时间维度的时候需要搞清楚几 个问题: 你的业务涉及到的最低的细节级别是什么?比如按季度查看报表还是按月份,或者按周,或者再甚者 按天.这个细节级别需要弄清楚,比如在一些销售数据统计,有的时候可能更多按季度或者按月来查看 报表.但在有的监控一些机器运行数据的统计,可能会按照小时或者分钟来查看报表. 你的报表所需要时间显

信息设计中的“父子关系”

交互设计工作核心在于信息架构和交互细节设计.信息架构包括信息分类以及信息展示逻辑设计;交互细节则多表现为控件的选择,交互效果的定义等.在信息设计中,遇到最棘手的问题就是信息量太多而显得设计结果不尽人意,那么在砍不掉需求的前提下(信息太多,也许是需求本身还有被精简的可能性),如何解决这类问题呢? 通常来说,信息设计的时候有很对可遵循的关系在,信息间互斥,信息间相辅相成,信息间属于包含与被包含关系等.那么今天要探讨的是"父子关系".所谓"父子关系"也就是核心信息与辅助信

数据仓库中的维度(原创)

维度 维度在数据仓库中主要对事实指标进行过滤和重新组织提供指导.可以将用户对事实的查询结果按照维度指标进行筛选,只允许与维度指标相关的数据返回给用户.维度一般具有如下特性:可以形成一个维度体系,具备访问和过滤事实的能力,能够提供相关的非标准实体,包括一个完整的维度体系编码.关键词以及相关的表示,可以映射到用户所需要信息的列.在物理数据仓库中是较小的表,可以对前台用户的应用程序进行数据填充,或引用红花的数据仓库分析.维度层级 维度层级用来描述维度的各个层级.根据维度细节程度的不同,划分数据在逻辑上

《BI项目笔记》创建时间维度(1)

原文:<BI项目笔记>创建时间维度(1) SSAS Date 维度基本上在所有的 Cube 设计过程中都存在,很难见到没有时间维度的 OLAP 数据库.但是根据不同的项目需求, Date 维度的设计可能不大相同,所以在设计时间维度的时候需要搞清楚几个问题: 你的业务涉及到的最低的细节级别是什么?比如按季度查看报表还是按月份,或者按周,或者再甚者按天.这个细节级别需要弄清楚,比如在一些销售数据统计,有的时候可能更多按季度或者按月来查看报表.但在有的监控一些机器运行数据的统计,可能会按照小时或者分

《BI项目笔记》创建时间维度(2)

原文:<BI项目笔记>创建时间维度(2) 创建步骤:   序号 选择的属性 重命名后的名称 属性类别 1 DateKey DateKey 常规 2 Month Key Month Key 月份 3 English Month Name English Month Name 每年的某一月 4 Month Number Of Year Month Number Of Year 常规 5 Calendar Quarter Key Calendar Quarter Key 季度 6 Calendar