什么是MDX(MultiDimensional Expressions)?
MDX 是这样一种语言,它可以表达在线分析处理(Online Analytical Processing, OLAP)数据库上的选择、计算和一些元数据定义等操作,并赋予用户表现查询结果的能力。但与其他一些OLAP 语言不同的是,它不是完全用于格式化报表的语言。MDX查询的结果必须经过某种处理以使它看起来像一个电子制表、图表或者其他的输出形式,这样才能返回到客户程序。
关键概念
-
Dimensions and Members (维度和成员)
- 一个维度可以有几个 level
- 每个 level 都有一些 member
-
Axes (轴)
- 指查询结果多维数据集(cube)的“维度”
- 一个轴可以组合包含几个cube维度
-
Measures (度量)
- 需要聚合和分析的属性(数值)。
- 它们共同构成度量维度。
-
Tuple (元组)
- ([Product].[Product Family].[Drink], [Store].[USA].[CA])
- 定义多维数据集中的数据片
-
Set (集合)
- { [Time].[2007].[Q1], [Time].[2007].[Q2] }
- 由零个、一个或多个元组组成的有序集合,通常用于定义轴和切片器维度
-
Hierarchy (层次结构)
- 层次结构用于在数据透视表或其他数据汇总对象中提供导航路径
- 层级结果可使用上图理解
Hierarchy结构
可通过下图理解Hierarchy结构
Basic Query
查询的基本语法如下:
-- One of the three ways to write comments
SELECT {set 0} on COLUMNS, /* block comment */
{set 1} on ROWS // line comment
...
{set n} on AXIS(n)
FROM [cube]
WHERE (tuple) // called "slicer dimension"