概念介绍
多维数据集 Cube
Cube是一组多维数据集。其数据为由多个维度中的维度成员交叉形成的单元格数据组成。三个维度可构成空间结构立方体-Cube, 多个维度构成的则是超立方体hypercube。在多维数据库领域中,Cube即可代表由多个维度构成的数据集。
Cube中的数据通常是为了做业务数据的记录和分析(比如通过对比各个月份的某产品的销售额,来确定该产品的销售旺季和淡季)。一个cube的主要组成部分是维度和度量。维度定义多维数据集的数据结构,用于对数据进行分类、划分和展示数据细节。度量则是多维数据结构中,用于度量的数值型的、量化的数据。在一些特殊情况,度量值也可以是文本型或其他类型的数据。(本文档使用的实例库中,度量是在度量维度中定义的)
下面是一个3维的cube示例图:
维度 dimension
维度是用于多维数据集中事实数据分类的结构。常用的维度包括:科目、组织、时间、产品等。
层次结构hierarchy、级别level和成员member
Hierarchy-层次结构是维度大纲的结构表示。一个维度大纲中,可以有多个层级结构。例如,时间维度中,可以有日历年度层级结构,如全年,1,2,3,4季度,1-12月,和财务年度层级结构。层级结构决定其中各层级中维度成员的聚集计算顺序和关系。
如图是时间维度一个层次结构的图例,每一层即为一个级别,每个级别有1到多个成员(如:图中年级别有两个成员2015和2016,季度级别有四个成员Q1、Q2、Q3、Q4)。级别的编号是从下往上, 所以示例图中月级别为0级别,季度为1级别,年为2级别。
时间维度可以有更多的层次结构,当前是日历类型的层次结构,完全可以再定义一个财务年度类型的层次结构
Member-成员是维度层级结构中的成员。Member 可代表Cube中事实数据的一个特征。
切片和切块
以上图三个维度的多维数据集为例,切片是选择一个维度的成员查询。切片是会降维的(三维→二维),如图选择2012年各地区各产品销售额
切块是不降维的(仍然是三维),如图是2011、2012年各地区各产品销售额
集合 set
集合包含0个至多个tuple,可以是示例中的样式,也可以是某些函数的结果集(children函数返回的就是一个集合)
示例
{
tuple1,
tuple2,
tuple3
}
元组tuple
元组用于定义或标识多维数据集Cube中的一个切面或者切块数据。它是由一个或多个维度中的一个或多个维度成员组合而成。如果一个元组Tuple是由Cube中的每一个维度中的一个成员组合而成,那么它描述的就是一个单元格事实数据。 在MDX查询或表达式中定义元组时,不需要显式地包含每个维度层次结构中的成员。如果查询或表达式中没有显式包含维度层次结构的成员,则该维度层次结构的默认成员是隐式包含在元组中的成员。除非在多维数据集中明确定义,否则如果存在(All)成员,则每个维度层次结构的默认成员都是(All)成员。如果维度层次结构中不存在(All)成员,则默认成员是该层次结构的顶级成员。
格式为小括号()中以逗号分隔指定各个维度轴上的成员,cube示例图中(Australia,Accessories,Quarter1)指定正面左上角值为1270的单元格。(Australia)这种其他属性轴层次结构的成员都是隐式包含,元组补齐后有可能为(Australia,Touring,2011),后两个成员是当前上下文(最初的上下文是各个属性轴的默认成员,在表达式中指定了某个属性轴上的成员,就会覆盖上下文中原有的默认成员)中的成员。