分类(数据库技术)
MDX示例
2009/11/06 16:15

MDX语句整理

基本概念:
成员:属于维度,描述CUBE的维度
元组:来自CUBE的数据切片.成员向导
集合:由0,1,多个成员组成.代表范围,不代表值.

MDX语句基本格式:
WITH
MEMBER   ……
…….
SET   ……
…….
SELECT   {……}   ON   COLUMNS,
{……}   ON   ROWS
FROM   CUBENAME
WHERE   (……)

维度描述:

[地理维度]: 所有地理维度
北京 S1
北京 S2
上海 S3
上海 S4

[措施维度]: 所有措施维度
措1 C1
措1 C2
措2 C3
措2 C4

[时间维度]:
2007 1月
2007 2月
2007 3月
2007 4月

TABLE1
所有地理维度
1月

SELECT   {[地理维度].[所有地理维度]}   ON   COLUMNS,
{[时间维度].[1月]}   ON     ROWS
FROM   [CUBENAME]

TABLE2
S1
1月

SELECT   {[地理维度].[S1]}   ON   COLUMNS,
{[时间维度].[1月]}   ON     ROWS
FROM   [CUBENAME]

TALBE3
S1 S2 S3
1月

SELECT   {[地理维度].[S1],   [地理维度].[S2],   [地理维度].[S3]}   ON   COLUMNS,
{[时间维度].[1月]}   ON     ROWS
FROM   [CUBENAME]

TABLE4
上海
1月

SELECT   {[地理维度].[上海]}   ON   COLUMNS,
{[时间维度].[1月]}   ON     ROWS
FROM   [CUBENAME]

WITH   MEMBER   [地理维度].[AA]   AS   ‘SUM({S1,S2})’
SELECT   {[地理维度].[AA]}   ON   COLUMNS,
{[时间维度].[1月]}   ON     ROWS
FROM   [CUBENAME]

TABLE5
C3做切片
S1 S2
1月

SELECT   {[地理维度].[S1],[地理维度].[S2]}   ON   COLUMNS,
{[时间维度].[1月]}   ON     ROWS
FROM   [CUBENAME]
WHERE   ([措施维度].[C3])

TABLE6
S1 S2
1月
3月

SELECT   {[地理维度].[S1],[地理维度].[S2]}   ON   COLUMNS,
{[时间维度].[1月],   [时间维度].[3月]}   ON     ROWS
FROM   [CUBENAME]

TABLE7
S1 S2
1月 C1
3月 C1

SELECT   {[地理维度].[S1],[地理维度].[S2]}   ON   COLUMNS,
{{[时间维度].[1月],   [时间维度].[3月]}*{[措施维度].[C1]}}   ON     ROWS
FROM   [CUBENAME]

SELECT   {[地理维度].[S1],[地理维度].[S2]}   ON   COLUMNS,
{([时间维度].[1月],   [措施维度].[C1]),(   [时间维度].[3月],   [措施维度].[C1])}   ON   ROWS  
FROM   [CUBENAME]

TABLE8
S1 S2
1月 C1
1月 C2
3月 C1
3月 C2

SELECT   {[地理维度].[S1],[地理维度].[S2]}   ON   COLUMNS,
{{[时间维度].[1月],   [时间维度].[3月]}*{[措施维度].[C1],   [措施维度].[C2]}}   ON     ROWS
FROM   [CUBENAME]

TABLE9
M表示度量值
S1 S2
M1 M2 M1 M2
1月 C1
C2
3月 C1
C2

SELECT   {{[地理维度].[S1],[地理维度].[S2]}*{[MEASURES].[M1],   [MEASURES].[M2]}}   ON   COLUMNS,
{{[时间维度].[1月],   [时间维度].[3月]}*{[措施维度].[C1],   [措施维度].[C2]}}   ON     ROWS
FROM   [CUBENAME]

TABLE10
M1 M2
1月 北京 C1
C2
上海 C1
C2
3月 北京 C1
C2
上海 C1
C2

SELECT   {[MEASURES].[M1],[MEASURES].[M2]}   ON   COLUMNS,
{{[时间维度].[1月],[时间维度].[3月]}*{[地理维度].[北京],[地理维度].[上海]}*{[措施维度].[C1],[措施维度].[C2]}}   ON   ROWS
RROM   [CUBENAME]

TABLE11
S1 S2 S2-S1
1月
3月

WITH  
MEMBER   [地理维度].[AA]   AS   ‘[地理维度].[S2]-[地理维度].[S1]’
SELECT   {[地理维度].[S1],[地理维度].[S2],[地理维度].[AA]}   ON   COLUMNS,
{[时间维度].[1月],[时间维度].[3月]}   ON   ROWS
FROM   [CUBENAME]

TABLE12
S1 S2
1月
3月

WITH  
SET   [SETA]   AS   ‘{[时间维度].[1月],[时间维度].[3月]}’
SELECT   {[地理维度].[S1],[地理维度].[S2]}   ON   COLUMNS,
{[SETA]}   ON   ROWS
FROM   [CUBENAME]

TABLE13
S1 S2
1月 100 102
3月 160 156

WITH
MEMBER   [MEASURES].[AA]   AS   ‘IIF(MEASURES.M1> 156,1,0)’
SELECT   {[地理维度].[S1],[地理维度].[S2]}   ON   COLUMNS,
{[SETA]}   ON   ROWS
FROM   [CUBENAME]
WHRER   ([MEASURES].[AA])

IIF(MEASURES.M1> 156,”T”,”F”)
参数是字符串得加双引号.

排序函数ORDER({[地理维度].[S1],[地理维度].[S2]},S1,BDSC)


维度聚合属性分类:
COUNT,SUM,MAX,MIN,DISTINCTCOUNT

CURRENTMEMBER代表当前的的成员函数.

MDX函数如果没有参数的话,是不应该加括号的.比如CURRENTMEMBER.

Tags: SQL,MSSQL2000,SQL2005
相关日志:
正在读取相关日志,请等待...
+引用(0) |
发表评论
昵称  密码  游客无需密码
网址  电邮  注册
验证码 请输入左侧图片中的字符
记住我