MDX语句整理

来源:互联网 发布:时间序列算法 编辑:程序博客网 时间:2024/04/30 08:45

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

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

维度描述:
[地理维度]:
所有地理维度北京S1
S2
上海S3
S4
[措施维度]:
所有措施维度措1C1
C2
措2C3
C4
[时间维度]:
20071月
2月
3月
4月

TABLE1
所有地理维度
1月

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

TABLE2
S1
1月

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

TALBE3
S1S2S3
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做切片
S1S2
1月

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

TABLE6
S1S2
1月
3月

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

TABLE7
S1S2
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
S1S2
1月C1
1月C2
3月C1
3月C2

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

TABLE9
M表示度量值
S1S2
M1M2M1M2
1月C1
C2
3月C1
C2

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

TABLE10
M1M2
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
S1S2S2-S1
1月
3月

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

TABLE12
S1S2
1月
3月

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

TABLE13
S1S2
1月100102
3月160156

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.

 

 


在许多情况下,一些文字性的内容并非成员的数据,但为了显示其内容,我们一般定义为成员的属性,为了在
查询中使用!比如[Customers]维,其性别、住址、电话可能就是成员的属性,在MDX查询中,我们既想查询数
据量,如销售数量、销售金额,也想查询客户的信息,如性别、住址、电话等。MDX提供了几种方法来获取成员
的属性。
1)DIMENSION PROPERTIES
select
    {[Measures].MEMBERS}  on columns,
    {[Customers].[All Customers].[USA].[CA].[Altadena].children}
     DIMENSION PROPERTIES [Customers].[name].Gender,[Customers].[name].Address 
    on rows
from Sales
可以查询客户的性别和地址属性。
备注:在MDX例子应用中查询语法正确,数据无法显示,是否要通过ADOMD等才能正确获取??
2)Properties 函数
WITH
   MEMBER [Measures].[Gender] AS
   '[Customers].CurrentMember.Properties("Gender")'
   MEMBER [Measures].[Address] AS
   '[Customers].CurrentMember.Properties("Address")'
select
    { [Measures].[Gender], [Measures].[Address],[Measures].MEMBERS}  on columns,
    {[Customers].[All Customers].[USA].[CA].[Altadena].children}    on rows
from Sales
在MDX显示客户性别、地址以及销售金额等信息。
备注:在MDX例子应用中数据正常显示。