#####概述
1. MDX(Multidimensional Expression)支持多维对象和数据的定义和操作。不是SQL的拓展。
2. MDX查询都要求有select , from ,where子句。
3. MDX提供管理数据结构的DDL语法,包含创建和删除cube,维度,度量值以及他们的坐标对象的命令。
####基本概念
1. MDX从多维数据集返回多维数据子集。
单元:坐标轴相交确定的对象。唯一标识多维数据集中的最小单元
每个单元都有多个信息与之相关联,包括数据本身,格式化字符串(单元数据的显式格式),以及单元的序号。
元组:来自一个或多个维度的单个成员的有序集合组成。唯一标识多维数据集中的一部分,用来定义来自多维数据集数据的切片或切块。
元组是一个成员向量,如果来自不止一个维度的成员组成,则元组所表示的成员必须包括在圆括号内。
集合:零个,一个或多个元组的有序集合。
集合需要使用花括号包起来。
****集合中的元组必须具有相同的维度顺序。****
2. 轴维度和切片器维度(切片条件)
不同维度的成员组成的元组的集合用于度多维数据集数据进行过滤。select语句用来选择要返回的维度和成员——轴维度(返回多个成员的数据)
where语句用来将返回的数据限定为特定维度和成员条件——切片器维度(返回单个成员的数据)
***如果未显式的给切片器指派维度,则使用默认成员进行筛选。
如果存在“All”级别,则默认成员为“All”,否则为最高级别的任意成员。***
SELECT <轴信息> on columns
<轴信息> on rows
from <多维数据集>
where <切片条件>
3. 计算成员
基于MDX中的估值表达书的成员
4. 用户定义函数
5. PivotTable服务
MDX数据定义和操作服务通过PivotTable服务提供
6. 成员函数
MDX提供了很多函数来从其他的维度或级别(MDX实体)检索成员。
如FirstChild允许从给定维度或级别检索第一个子代成员
Members函数返回维度,级别或层次结构中的成员的集合。
7. 聚合函数
冒号运算符使用陈冠的自然顺序创建集合 如{[第一季度]:[第四季度]}
######MDX相对于SQL的主要特点(操作对象为多维数据集)
1. MDX可以查询任意多维度数据结构中的数据
2. select子句可以定义几个轴维度,where子句可以用来把多维数据限制在特定的维度或成员。
3. MDX查询的创建者通常将多维数据集的结构形象化并加以定义,并且编写对单个多维数据集的查询对该结构进行填充
OLAP架构包括多维数据集,度量值,维度,级别,成员,层次结构,以及成员属性信息。在MDX查询中都有与之对应的表示。
维度和度量:他们在同一个多维数据集中是唯一的,因此可以直接使用名称表示
层次结构:他属于的维作为前缀,跟着一个点号,然后加上他的名称
级别:方括号中的维度名称,加上在方括号中的层次结构名称,最后是级别的名称,并用点号分隔来构成。
成员:必须沿着维度的层次体系逐一添加将要访问的成员所属的级别之上的所有级别的成员名称
成员属性:为了唯一标识一个成员属性,需要将其名称加在它所属的级别之后,并用点号分隔
####使用方括号
在MDX中有两种方法来引用架构中的各个项名称
1. 使用方括号[]
2. 不使用方括号,直接引用各项的名称。
如果引用的架构中的项的名称包含空格,必须使用方括号
如果成员的名称包含方括号,则必须使用转义符,转义符也是方括号[]
如果某个标识符由多个部分的名称组成,则MDX使用点号来分隔
#########基本的MDX查询
MDX查询必须包含如下项:
1.