什么是MDX?
} Multi-Dimensional eXpression(多维表达式)
} 早期是OLAP标准的一部分
} 现在是XML/A标准的一部分
} 被多个厂商支持,是用于多维数据查询和分析的统一推荐标准
MDX 典型应用
查询:与T-SQL很类似(DML)
表达式:与Excel的函数很类似
管理:与T-SQL也很类似(DDL)
} 查询结果返回给客户端
◦ 格式化查询结果
} 用表达式定义计算成员、命名集和操作
} 执行管理任务,例如创建和维护多维数据集,或者进行权限控制
MDX两大分类
} 查询
◦ 主要面向报表需要
} 表达式
◦ 定制特殊成员,权限控制
MDX核心概念
} 成员(member)
◦ 叶级成员
◦ 非叶级成员
} 元组(tuple)
} 集(set)
成员是取一个维度的单元(可以是一个,也可以说一批)
元组是包括不同维度的成员。
集可以是成员的组合(同一维度的成员),也可以说元组的组合(对称)。就是说可以是一个维度的一系列成员,但也可以。
Measure可以作为Where,如果对于多个Measure,可以作为on Columns.
} 度量值组和维度的关系
◦ 度量值组也是维度
} 如果有8个维度,9个度量值,那么一共有多少个维度?9
} CurrentMember
} PrevMember
} NextMember
} Parent
} Children
AllMembers=Children+"default all"
创建计算成员
} 相当于T-SQL中的标量函数,针对度量的一种计算
} 典型范例(求毛利率) 注意:CALCULATE的作用
} 是一系列元组或者成员的集合
} 例如:
◦ 某几个城市的组合
动态构造成员
WITH MEMBER [Measures].[Test] AS
[Measures].[Order Quantity]*1.25,
FORMAT_STRING = "Currency",
VISIBLE = 1
SELECT [Measures].[Test] ON 0,
[Dim Customer].[State Province Name - Dim Geography].[State Province Name] ON 1
FROM [Adventure Works DW]
WHERE ([Dim Product].[Class].&[H])
([Measures].[Internet Sales-Sales Amount] - [Measures].[Internet Sales-Total Product Cost]) / [Measures].[Internet Sales-Sales Amount]
}
◦ 绝大多数的时候,都需要保留这一句在最前面
创建命名集
} 相当于是T-SQL中的表值函数(但可以更复杂)
◦ 度量值组的维度名就叫做 measures
使用查询
SELECT {SET} ON Columns,
{SET} ON Rows
FROM [Cube]
WHERE (tuple)
SELECT {SET} ON 0,
{SET} ON 1
FROM [Cube]
WHERE (tuple)