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

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

原来计划将Cube结构这部份内容打散,在实验中穿插讲解, 考虑到结构之间不一样的部分都有联系,若是打散了将反而很差理解,仍是直接一次性所有讲完。 数据库

本篇咱们将详解Cube结构, 介绍Cube结构的每一个部分,让你们对Cube结构能有整体的把握。 函数

因为多维数据集的结构和MDX有很强的联系, 所以会有部份内容涉及到MDX,你们只要大概能看懂就好了,后续会有专门的MDX 专题。 工具

 

文章提纲

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

 

概述

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

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

前面文章讲过: 3d

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

咱们分别来说述这两个部分。 对象

 

度量值和度量值组

度量值主要指咱们须要分析的,能够量化的数值类型的数据, 如销售额, 费用等。 blog

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

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

咱们不会在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,转载文章以后必须在文章页面明显位置给出做者和原文链接,不然保留追究法律责任的权利。
相关文章
相关标签/搜索