MDX基本概念和语法

MDX基本概念和语法

  • 1 MDX简介
    • 1.1 MDX重要概念
      • 1.2 维度(Dimensions)、级别(Levels)、成员(Members)和度量值(Measures)
      • 1.3 轴维度和切片器维度
      • 1.4 单元(Cell)、元组(Tuple)和集合(Set)
  • 2 基本语法
    • 2.1 MDX 语句的基本语法:

1 MDX简介

MDX(multi-dimensional expressions多维表达式)是一种语法,支持多维对象与数据的定义和操作。

1.1 MDX重要概念

多维表达式 (MDX) 的用途是使对多个维度的数据的访问更为简单和直观。它的主要概念如下:

  • 维度(Dimensions)、级别(Levels)、成员(Members)和度量值(Measures)
  • 单元(Cells)、元组(Tuples)和集合(Sets)
  • 轴维度和切片器维度(Axis and Slicer Dimensions)

1.2 维度(Dimensions)、级别(Levels)、成员(Members)和度量值(Measures)

这组概念只从单个维度角度理解,不涉及到维度的交集

MDX基本概念和语法_第1张图片
上图中多维数据集使用了三个维度(dimensions):“时间”、“路线”和“源”,还有两个度量值:“包”和“上一次”。

  • 维度(Dimensions)
    对于多维数据,则可以用具有两个以上维度(Dimensions)的结构来表示。这些称作多维数据集的结构具有多个维度。

  • 级别(Levels)
    可以认为是对维度的细分,如维度“路线”分为“东半球”和“西半球”两个级别(levels)。

  • 成员
    代表维度中一次或多次数据出现的项。把维度中的成员看做基础数据库中的一个或多个记录,其该列内的值归入该分类。成员是描述多维数据集中的单元数据时的最低参照层次。
    例如,下图中的关系图中加入阴影表示"时间.[下半年].[第三季度]"的成员。可以理解成员是某个维度级别的数据元素集合(此处集合和下面集合为不同概念)。
    MDX基本概念和语法_第2张图片

  • 度量值
    属于度量维度;
    在多维数据集中维度的交集处,可能有不止一个数据元素,即一个单元(Cell)中可能包含多个数据,这些数据元素称为度量值(Mensures)

1.3 轴维度和切片器维度

  • 轴维度:SELECT语句用来选择要返回的维度和成员,称为轴维度;
  • 切片器维度:WHERE语句用来将返回的数据限定为特定维度和成员条件,称为切片器维度。

轴维度预期返回多个成员的数据,而切片器维度预期返回单个成员的数据。

1.4 单元(Cell)、元组(Tuple)和集合(Set)

SQL从表返回二维数据子集,而MDX从多维数据集返回多维数据集子集。

  • 单元(Cells)
    所有维度共同确定的一个成员
    多维数据集关系图表明多维成员的交集创建单元(Cells),从这些单元可以获取数据。为标识和析取这类数据(不管这些数据是单个单元还是多个单元块),MDX称为元组(Tuples)的参照系。

  • 元组
    元组列出维度和成员来标识多维数据集内的单个单元和更大的单元部分;因为各个单元是多维数据集所有维度的交集,所以元组可以唯一标识多维数据集中的每个单元。

如上图中元组标识其中值为240的单元:

(源.[东半球].非洲, 时间.[下半年].[第四季度], 路线.航空, 度量值.包)

元组可以标识多维数据集中的一部分,不必指定某个特定单元,也不必包括多维数据集中的所有维度。如一下示例均为多维数据集关系图的元组:

(源.[东半球])
(时间.[下半年],源.[西半球])

  • 单元组
    只有一个维度的确定的元组

时间.[下半年]

  • 多元组
    由多个维度共同确定的元组,需要将维度放在圆括号内,逗号隔开

(时间.[下半年], 源.[非陆地].[航空])

  • 集合(Set)
    元组的有序集合称为集合。在轴维度和切片器维度有这种元组集合组成.

{ (时间.[上半年], 源.非陆地.航空), (时间.[下半年], 源.非陆地.海路) }

2 基本语法

2.1 MDX 语句的基本语法:

SELECT [axis specification] ON COLUMNS, [axis specification] ON ROWS FROM [cube name] WHERE [slicer specification]

columns和rows:两者可以调换过来,如 A on columns, B on rows 改成 A on rows, B on columns,相应的查询结果的行列也会调换过来。

  • SELECT:字句指定一个集合,把它放到轴上;
  • FROM:指定查询的cube
  • 方括号“[]”:用户维度名、级别名、维度成员名,避免和函数混淆(函数名不加方括号),或者中间有空格或特殊符号
  • WHERE:指定切片,对不出现在轴上的维度成员进行限定
  • 分组:没有group by字句,分组是隐含的;
  • 排序:没有order by字句,排序只会对某个轴进行,使用排序函数
  • 不区分大小写
  • 注释:支持sql注释外,还有://和/* … */注释。

你可能感兴趣的:(大数据,大数据)