SSAS系列——【02】多维数据(维度对象)
1、维度是什么?
数学中叫参数,物理学中是独立的时空坐标的数目。0维是一点,1维是线,2维是一个长和宽(或曲线)面积,3维是2维加上高度形成体积面。在物理学上时间是第四维,与三个空间维不同的是,它只有一个,且只能往一方向前进。
图一 MSDN中关于维度的概念
2、服务器对象的内容?
包括数据源、数据视图、数据库对象、安全角色和程序集。前4个都不难理解。关于程序集的概念,还需加强一下,程序集可为两种不同的类型:COM 和 CLR。CLR 程序集是使用 .NET Framework 编程语言(如 C#、Visual Basic .NET 和托管 C++)开发的程序集。说白了,你可以使用C#语言来编程处理服务器对象。
3、维度对象的内容?
简单 Dimension 对象由基本信息、属性和层次结构组成。基本信息包括维度的名称、维度的类型、数据源和存储模式等。属性可定义维度中的实际数据。属性可不必属于层次结构,但层次结构却要由属性生成。层次结构不但可创建级别的有序列表,还可定义用户浏览维度的方式。简单的讲,就像Session对象中的键值对一样,这里的key(基本信息)、Value(属性),但这里key之前可能存在一定的关系,所以多了一个层次结构。
维度的结构
a、最简单的——星型结构
特点:每个维度均基于一个通过主键-外键关系直接链接到事实数据表的维度表。 不多说了,直接上图。
图二 星型结构
b、最复杂的——雪花结构
图三 雪花型结构
维度的存储
a、ROLAP
使用 ROLAP 的维度的数据实际上存储在用于定义维度的表中。相对查询性能低。
b、MOLAP
使用 MOLAP 的维度的数据存储在 Analysis Services 实例中的多维结构中。相对查询性能高。
c、HOLAP
结合了ROLAP和MOLAP的存储方式。
4、维度如何落地?
维度本身是一个很抽象的东东,它通过属性来和数据库表挂钩。说到属性,就豁然开朗了,在OO的概念中,属性的概念无处不在。维度落到实处也就是属性的集合,这些属性是由数据源中数据表的列来提供的,一个或者多个列组合,有多个列存在,那不就乱了么?所以再找一个属性中的“老大”,那就是数据表中的主键,于是新出来个新名词,叫做“键属性”,我觉得键属性是成对出现的,主要是事实表中的主键和维度表的外键,双键合璧,那对于星型模型而言,维度都表都和键属性直接挂钩,而雪花型模型,只有部分和键属性挂钩咯,弱弱的说,MSDN是这么说的。
存在这么多的“属性小兵”,为了方便管理,那就给这些小兵分个级别把,“旅排营团”的一路摆开,于是又有个新名词,叫做“属性层次结构”,例如,在“日历时间”层次结构中,“日”级别应与“月”级别相关,“月”级别应与“季度”级别相关等等。
存在这么多的“属性小兵”,小兵与小兵平级之间也该有些关系吧,所有的小兵要紧密团结在老大“键属性”周围,所以MSDN上说,维度内的属性始终与键属性直接或间接相关。所以又有了个新名词,叫做“属性关系”。
存在这么多的“属性小兵”,如果把这些小兵的层次和属性联合起来,有满足“层次结构包含的每个属性都与其下直接属性一对多”时,叫做“自然层次结构关系”,晕死个人,不过也不难理解。
续ing
5、维度的写回
维度中的数据通常只是可读数据,在某些情况下可能对维度启用写操作,维度的任何成员均可以修改,还是有一些限制的,MSDN中有详细的对维度的增删改限制的描述,用的时候自然要想到,此处不再赘述。
6、维度翻译
这里的翻译和我们讲的把英文翻译成中文的意思一样,客户可根据区域标识符(LCID)把相应的标签传给SSAS实例来实现。