SSAS 第一篇:多维数据分析基础

多维数据分析是指按照多个维度(即多个角度)对数据进行观察和分析,多维的分析操作是指通过对多维形式组织起来的数据进行切片 、切块、聚合、钻取 、旋转等分析操作,以求剖析数据,使用户能够从多种维度、多个侧面 、多种数据综合度查看数据,从而深入地了解包含在数据中的信息和规律。

多维数据分析以数据仓库为基础,按照维度模型来设计数据仓库。在维度模型中,把存储度量的表称作事实表,把存储属性的表叫做维度表。事实表存储的是可概括的数据,维度中包含属性和层次结构。用户可以按照层次结构对数据进行聚合,从High Level上分析数据。

一,度量和度量值

度量(Measure)是事实表中一个数值类型的属性,对数值进行聚合计算是有意义的,例如,学生的分数,计算学生的平均分数是有意义的。

度量值是指可概括的数值,是度量的值,度量值又被称作事实(fact),这也是“事实表”名称的由来。

从维度模型来看,事实表中除了维度的外键列和主键列之外,其他的列都是度量,这些列的值是度量值。由此可以得出,事实表的构成是:主键列+维度外键+度量。

事实表存储数据的详细程度称作事实表的粒度,由于粒度是由事实表引用的外键列确定的,因此一个事实表只能有一个粒度,不同粒度的事实数据必须分别存储到不同的事实表中。

二,维度和层次结构

维度是分析数据的角度,维度和维度之间是相互独立的。在报表中,增加维度只是创建了一个新的、独立的细分度量值的方法。从数据分析的角度来讲,增加维度是把度量值更细分,增加新的属性来分解数据。

属性是维度表的一列,主键属性(Primary Key Attribution)唯一地确定了维度表中的其他属性,属性值是int类型;由于主键属性不具有可读性,通常为维度表创建一个名称属性(Name Attribution),是字符类型,用于说明主键属性标识的实体。维度表的每一行都是不同的实体,但是其名称属性可能是相同的,例如,人名。由于主键属性是int类型,值是唯一的,占用的存储空间小,因此大量应用于事实数据中,作为外键列。

维度的作用是提供数据分析的角度,通常在不同的维度上对度量值做聚合计算,从High Level上来分析数据。在维度中,把可以用于聚合的属性叫做分组属性,或可聚合属性(Aggregatable  Attribution);把不可用于聚合的属性叫做成员属性(Member Attribution),成员属性的作用是提供额外的信息。

属性的值称作成员,例如,颜色属性,其成员是Black,White,Red等,还有一个特殊的成员All,是指所有的成员。在做聚合运算时,ALL成员的意义是:group by子句中忽略该属性。

维度的相关属性之间具有包含关系,通过把相关的属性添加到各个级别,可以创建层次结构。例如,2017年是2017年所有月份的上层级别,月份是其日期的上次级别,年,月,日构成了一个层次结构。在创建层次结构时,通常会在最底层添加一个ALL级别,ALL级别只包好一个成员:所有日期,是所有数据在日期的聚合。

在层次结构中,如果每一个子级成员都只有一个父级成员,那么该层次结构是自然层次结构,从数据结构上来看,自然层次结构是一个树形结构。在层次结构中,ALL级别也叫做根级成员,最底层的成员叫做叶级成员。

三,代理键和业务键

使用整数键值来代表维度成员是出于三个方面的考虑,第一个方面是减少事实表的大小,第二个方面是把名称属性重复的不同实体区分开来,第三个方面是简化实体的标识,具体原因是:由于数据仓库通过提取业务系统中的数据来构建,在不同的业务系统中,标识同一实体的主键(称作业务键)可能是不同的,而不同实体的业务键可能是相同的,这就使得数据仓库必须使用自己的唯一值来标识来自不同业务系统的实体,数据仓库产生的,用于唯一标识一个实体的主键,也叫做代理键。

业务键的类型可以是整数,也可以是字符类型,但是代理键是整数类型,只有使用代理键,事实表中的外键和维度表的主键才能真正被数据仓库所控制。

四,多维数据集

OLAP(Onlie Analytical Processing)是联机分析处理的简称,是一种把关系数据转换为多维数据集的工具。不同的OLAP工具以不同的方式定义、存储和管理多维数据集(Cube),Cube也称作数据立方体。数据立方体表示由若干个维度所描述的一个数据集合,每个维度各自表示一个可对此数据集合进行观察和分析的业务角度。

SSAS(SQL Server Analysis Service,简称分析服务)是一种实现OLAP功能的服务,它使用数据库模式来存储多维数据集。从理论上讲,分析服务不是BI系统的必要组成部分,因为所有的数据都来自于关系型数据库, 可以直接从数据库提取数据给报表服务供客户查询。但是当数据足够大时,从数据库中查询数据就会变的非常慢。

SSAS把数据从数据库中提取出来,经过加工和处理之后,形成Cube,报表软件就可以按照不同的属性和维度来分析数据,不仅速度快,而且计算灵活。因此,SSAS的定位实际上是一个数据库服务, 把在关系数据库中加工过的数据仓库或其他原始数据进行再次加工,作为报表使用的中间数据库。

分析服务作为报表数据源的优势主要有三个:快速的响应,基于元数据的查询和灵活的计算公式。

1,快速响应

一般来说,要么在查询时花更少的时间进行相关计算,要么在查询前就已经进行了相关的计算,而预先存储已经计算好的数值,是实现快速响应的最好方法。

分析服务预先存储计算好的数据值,这些数值不是最终的聚合值,而是中间级聚合,可以供多个查询使用,以计算出最终的聚合值。

注意,在分析服务中创建数据聚合,与在关系型数据库中创建聚合是相同,逻辑上都是先分组,再对每个分组进行聚合。由于聚合规则是关联的,例如,均值实际上是汇总值和总数量的商,因此不必计算每个可能的聚合,可以通过创建中间聚合,这样就可以使用较少的数据聚合满足不同级别的聚合查询需求。

2,基于元数据

元数据是指数据的数据,维度的元数据包括属性和层次结构,属性分为可聚合属性和不可聚合属性(又称作成员属性)。对于维度中的每个属性,分析服务都会自动创建包含两级的层次结构,顶层是单个All成员,它是该属性所有成员的聚合,选择属性层次结构中的All成员,相当于忽略该属性。

自存在(auto-exist)特性是指分析服务自动识别维度中确实存在的属性成员的组合。

分析服务基于维度层次结构自动对度量值进行聚合,并把细节级数据和聚合数据组织成度量值组。

3,计算

自动对每个维度的层次结构进行聚合计算,创建计算成员,

五,度量值组

分析服务可以 把多个相关的度量值组和维度构造成多维数据集,那什么是度量值组?

事实表中包含数值数据的列对应于维度模型中的度量值,因此,每个事实表都是一组度量值,分析服务使用一种称作度量值组(Measure Group)的逻辑结构来组织信息,度量值组对应于单个事实表及其相关的维度。

度量值组存储的数据主要分为两部分:

  • 度量值组包含了代表每个维度的外键列和每个度量值,也就是事实表中的数据,称作细节数据;
  • 度量值组包含了每个维度中的成员的可能组合所对应的聚合值,分析服务按照维度的层次结构对度量数据进行聚合,称作聚合数据。

度量值组和事实表的差别在于:事实表只包含最低粒度级别的度量值,而度量值组不仅包含了事实表的数据,还包含了全部更高粒度的聚合数据。

如果维度数据仓库中,只有一个事实表,那么OLAP数据库中只有一个度量值组。分析服务可以把若干个相关的度量值组和维度构造成多维数据集(Cube)。

参考文档:

大数据分析之多维数据分析入门

原文地址:https://www.cnblogs.com/ljhdo/p/10268882.html