BI之SSAS完整实战教程5 -- 详解多维数据集结构

之前简单介绍过多维数据集(Cube)的结构。

原来计划将Cube结构这部分内容打散,在实验中穿插讲解, 考虑到结构之间不同的部分都有联系,如果打散了将反而不好理解,还是直接一次性全部讲完。

本篇我们将详解Cube结构, 介绍Cube结构的每个部分,让大家对Cube结构能有总体的把握。

由于多维数据集的结构和MDX有很强的联系, 因此会有部分内容涉及到MDX,大家只要大概能看懂就行了,后续会有专门的MDX 专题。

文章提纲

  • 概述
  • 度量值和度量值组
  • 维度
  • 总结

概述

SQL Server Analysis Services中的多维数据库包含一个或多个多维数据集。

下面我们对多维数据集 (Cube) 的结构进行详解。

前面文章讲过:

Cube组成 = 一个或多个度量值组 + 一个或多个维度

我们分别来讲述这两个部分。

度量值和度量值组

度量值主要指我们需要分析的,可以量化的数值类型的数据, 如销售额, 费用等。

度量值组是由相关度量值组成的集合,每个度量值只能属于一个度量值组。

度量值组主要用于导航目的,以提高可读性或更易于在客户端工具中使用。

我们不会在MDX查询中直接使用度量值组来查询度量值,但是某些MDX函数中可以使用度量值组。

维度

维度就是我们的观察角度。

例如:

时间维度由年、季度、月、周和天构成

地区维度下有国家、大区、省、市构成

层次结构和层次结构级别

维度具有一个或多个层次结构,并且每个层次结构包含一个或多个级别。

如下图。

成员

每个层次结构都包含一个或多个项,这些项被称为成员,而每个成员对应于基础维度表中的一个或多个引用值实例。

以日期维度为例,层次结构(例如 年-月)对应的成员

Year -- 例如 CY2005, CY 2006

Semester -- 例如 H1 CY 2005, H2 CY 2005

Quarter -- 例如 Q1 CY 2005, Q2 CY 2005

Month -- 例如 January 2005, February 2005

下图是一个具体示例:

维度 -- 层次结构(包含多个级别的) -- 具体成员 示意图

MDX如何表示某个特定成员?

在MDX中,某一层次结构的每个特定成员都通过唯一名称进行标识。

可以通过包含维度名称、层次结构名称以及级别名称的名称路径(使用该成员的名称)来访问某一维度中的某个成员,也可以通过键路径(使用该成员的键)进行访问。

例如,Calendar层次结构中的成员Q1 CY 2006可以表示为以下形式:

[Date].[Calendar].[Calendar Quarter].[Q1 CY 2006]

如果名称中包含空格、数字或者属于MDX的关键字,请使用方括号将该名称括起来。

另外一种键路径的格式,路径中成员的键表示为&[成员名称]

例如:

[Date].[Calendar].[Calendar Quarter].&[2006]&[1]

一般情况下,我们用第一种方式:

格式:[维度名称].[层次结构名称].[级别名称].[成员名称]

单元

拿之前那个图来说明。如下图显示了一个多维数据集的3个面。

其中,正面被划分成16个正方形,每个正方形都带有一个数字。

假定每个正方形中的数字是度量值[Internet Sales Amount],如果查看该正方形所在的小立方体(也是个多维数据集)的其他面,其他面的值也是一样。

这个较小的多维数据集被称为一个单元

各个单元保存多维数据集中所有度量值对应的数据值。如果某个单元中未提供度量值的数据值,则表示对应的度量值为空。

如要查询图中灰色背景的部分值,MDX查询需要唯一标识包含这个值的单元。该MDX查询如下:

SELECT Measures.[Internet Sales Amount] ON COLUMNS

FROM [Adventure Works]

WHERE ([Date].[Calendar].[Calendar Quarter].&[2011]&[2],

[Product].[Product Line].[Mountain],

[Customer].[Country].[Australia])

在该查询中可以看到, 是基于查询的WHERE子句中的特定条件(该条件可唯一的标识相应的单元)从Adventure Works多维数据集中选择Measures.[Internet Sales Amount]值。

元组

唯一标识多维数据集的一个单元或一部分的MDX表达式称为元组。

元组通过每个维度中的一个成员表示,使用逗号进行分隔,并且用括号括起来。

元组并不必须包含所有维度中的成员。下面是一些基于Adventure Works的元组示例。

([Customer].[Country].[Australia])

([Date].[Calendar].[2011].[H1 CY 2011].[Q1 CY 2011],

[Customer].[Country].[Australia])

([Date].[Calendar].[2011].[H1 CY 2011].[Q1 CY 2011],

[Product].[ProductLine].[Mountain], [Customer].[Country].[Australia])

通过一个元组表示的一个多维数据集部分称为一个切片

通过一个成员表示的元组称为简单元组,可以不使用括号。

一组元组构成一种新的对象,称为

这组元组是使用类型和数量上均完全相同的一组维度定义的。在MDX查询和表达式中经常会用到集。

格式:

{(Customer.Country.Australia), (Customer.Country.Canada)}

集可以为空 {}

集可以包含重复的元组

如果查询中仅指定了一个元组,那么可以不用花括号,查询时会隐式转换成集。

一般情况下,我们建议在编写MDX查询时尽量使用括号和花括号,因为这样可以确保MDX查询中指定的元组和集正确无误。

总结

本篇需要理解掌握Cube的各个部分,与Cube结构相关的名词主要有:

量值,量值组,维度,层次结构,层次结构级别,成员,单元,元组,集

相关的名词我都用粗体标出,所有都必须掌握。

大家理解时可以找出其中的联系,通过联系来帮助理解,总结如下:

Cube由量值组和维度组成。

量值组成量值组。

维度具有层次结构,层次结构包含一个或多个级别。

每个层次结构包括一个或多个项(成员)。

标识Cube的一个单元或一部分的MDX表达式称为元组。

多个元组组成集。

这些概念都很重要,全是重点,每个都要掌握。

欢迎大家多多评论与支持。

祝学习进步,谢谢:)

相关文章列表:

首发博客园 by MiroYuan,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
时间: 2024-12-15 07:08:45

BI之SSAS完整实战教程5 -- 详解多维数据集结构的相关文章

BI之SSAS完整实战教程6 -- 设计维度、细化维度上:创建维度定义特性关系

前面我们使用过数据源向导.数据源视图向导.Cube向导来创建相应的对象. 本篇我们将学习使用维度向导来创建维度. 通过前面几个向导的学习,我们归纳一下共同点,主要分成两步 1. 使用某种对象类型的向导创建对象,完成主要结构搭建 2. 使用相应的设计器完成最终对象的修改和细化 有点像送快递,先通过大的物流(创建对象向导)把货物送到相应的城市,再通过快递员(设计器进行细化)送到具体顾客手中. 同样的,我们使用维度向导以一种通用的方式来创建维度,然后根据自己的业务需求,使用维度设计器将创建的维度放置到

BI之SSAS完整实战教程7 -- 设计维度、细化维度中 :浏览维度,细化维度

上篇文章我们已经将Dim Geography维度设计好. 若要查看维度的成员, AS需要接收该维度的详细信息(包括已创建的特性.成员属性以及多级层次结构), 通过XMLA与AS的实例进行通信. 今天我们将维度部署到AS上进行查看. 文章提纲 补充背景知识 浏览维度,细化维度 总结 补充背景知识 XMLA是一种基于简单对象访问协议(SOAP)的XML应用程序编程接口的行业标准, 设计用于OLAP和数据挖掘. XMLA规范定义了两个函数,即Execute和Discover, 这两个函数用于向主机实例

BI之SSAS完整实战教程4 -- 部署至SSAS进行简单分析

上一篇已经创建了多维数据集的结构. 接下来我们将多维数据集的架构定义发送到Analysis Services实例,即部署到AS上去. 文章提纲 部署和浏览多维数据集 SSMS使用简介 总结 一.部署和浏览多维数据集 1. 部署项目 在Solution Explorer中,直接右键项目名称并选择Deploy. 当部署AS项目时,SSDT首先会构建你已经创建的项目,并检查初步的警告和错误,例如无效的定义. 如果项目定义不存在任何错误,SSDT会将你在项目中所创建的所有对象和定义打包,并将其发送到AS

BI之SSAS完整实战教程3 -- 创建第一个多维数据集.docx

上一篇我们已经完成了数据源的准备工作,现在我们就开始动手,创建第一个多维数据集(Cube). 文章提纲 使用多维数据集向导创建多维数据集 总结Cube设计器简介 维度细化 总结 一.使用向导创建多维数据集 在Analysis Services中,可以通过3种方法构建多维数据集:自上而下,自下而上或者基于一个空多维数据集. 一般我们从现有的关系数据库自下而上构建. 在自下而上方式中,需要一个DSV作为多维数据集的构建基础. AS中的多维数据集(Cube)包括两部分: 1. 一个或多个度量值组,其数

BI之SSAS完整实战教程2 -- 开发环境介绍及多维数据集数据源准备

上一篇我们已经完成所有的准备工作,现在我们就开始动手,通过接下来的三篇文章创建第一个多维数据集. 传统的维度和多维数据集设计方法主要是基于现有的单源数据集. 在现实世界中,当开发商业智能应用程序时,很可能需要处理多个关系数据源. 我们可以通过创建一个DSV提供一个整合的单源视图,其中仅包括你定义的一个或多个数据源中感兴趣的数据.数据源和数据源视图构成了后面要介绍的维度和多维数据集等结构的基础. AS2012 支持的主要关系数据源包括SQL SERVER, Oracle, DB2,Teradata

PHP教程:详解PHP归并排序的实现

PHP教程:详解PHP归并排序的实现 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表.归并排序的一个缺点是它需要存储器有另一个大小等于数据项数目的数组.如果初始数组几乎占满整个存储器,那么归并排序将不能工作,但是如果有足够的空间,归并排序会是一个很好的选择. 假设待排序的序列: 4 3 7 9 2 8 6 先说思路,归并排序的中心思想是将两个已经排序好的序列,合并成一个排序的序列. 上面的序列可以分成: 4 3 7 9 和 2 8 6 这两个序列,然后对这两个序列分别排

SVN与TortoiseSVN实战:补丁详解

硬广:<SVN与TortoiseSVN实战>系列已经写了五篇,第二篇<SVN与TortoiseSVN实战:标签与分支>和第三篇<SVN与TortoiseSVN实战:TortoiseSVN新建及合并分支>重点介绍了标签和分支的概念及实际操作演示,关注人数较多,三.四篇<SVN与TortoiseSVN实战:冲突详解(二)>详解了SVN如何判定冲突及冲突文件说明和解决冲突方法. 本篇详细SVN中补丁的概念,版本控制之道这本书对于SVN的讲解比较全面了,但书中也没有

【java项目实战】Servlet详解以及Servlet编写登陆页面(二)

Servlet是Sun公司提供的一门用于开发动态web网页的技术.Sun公司在API中提供了一个servlet接口,我们如果想使用java程序开发一个动态的web网页,只需要实现servelet接口,并把类部署到web服务器上就可以运行了. 到底什么是Servlet呢? 通俗一点,只要是实现了servlet接口的java程序,均称Servlet.Servlet是由sun公司命名的,Servlet = Server + Applet(Applet表示小应用程序),Servlet是在服务器端运行的小

GitHub 使用教程图文详解(转)

[日期:2014-09-06] 来源:Linux社区  作者:freeloda [字体:大 中 小] 大纲: 一.前言 二.GitHub简介 三.注册GitHub账号 四.配置GitHub 五.使用GitHub 六.参与GitHub中其它开源项目 七.总结 注,GitHub官网:https://github.com/,客户端版本:git version 1.9.2.msysgit.0.所有软件请到这里下载:http://msysgit.github.io/. 一.前言 在前面的文章中我们讲解了