MDX学习——初始MDX

认识MDX

1, AS 2005 CUBE结构

在认识MDX之前先来认识下AS 2005 CUBE结构。如下图,Cube的结构里有维度和量值,而维度下有阶层(属性),阶层下有层级,每个层级有许多成员。

2,MDX

多维运算式(MultiDimensional eXpressions,MDX),是以陈述式为基础的指令码语言,用来在SSAS中定义、使用和截取多维体内的数据。

3,MDX多维查询语法

MDX语法

WITH

    [<导出成员>]

    [<自定义命名>]

    [<单元格计>]

SELECT <Tuple> ON <>

     [,<Tuple> ON <>…]

FROM [<Cube 名称>]

WHERE [<Slicer 切片>]

导出成员语法

MEMBER <成员>

AS '<计算公式>'

    [,SOLVE_ORDER = <解决>]

    [,<cell_property> = <value_expression>]

    [,FORMAT_STRING = <显示格式>]

命名集语法

SET <集合名称> AS '<成员集合>'

单元格计算语法

CELL CALCULATION <单元格名称>

FOR '(<calculation_subcube>)'

AS '<calculation_formula>'

    [,<calculation_property_list>]

 

1)新增导出成员示例

With

--新增导出成员

Member [Measures].[达成率] as

    '[Measures].[Sales Amount]/[Measures].[Sales Amount Quota]'

,Format_string='Percent' --显示百分比

--新增导出成员

Member [Measures].[去年同期达 ¦¨] as

    '(ParallelPeriod([Date].[Calendar].[Calendar Year]),[Measures].[达成率])'

,Format_string='Percent' --显示百分比

Select {[Measures].[Sales Amount]

        ,[Measures].[Sales Amount Quota]

        ,[Measures].[达成率]

        ,[Measures].[去年同期达成率]} on 0,

{[Sales Territory].[Sales Territory Country].members} on 1

From [Adventure Works]

Where [Date].[Calendar].[Calendar Year].&[2004];

 

2)新增命名集示例

With

--自订命名 产品名称ML的所有产品

Set ML as

    filter([Product].[Product].[Product].Members,

    mid([Product].[Product].Currentmember.name,1,2)='ML')

Select {[Measures].[Sales Amount]} on 0,

     non Empty --Null显示,注释测试

     {ML} on 1

From [Adventure Works];

 

3)单元个计算示例

With

    CELL CALCULATION [CELLS]

    FOR '{([Product].[Category].[Bikes],

        [Measures].[Sales Amount])}'

    AS '1'

Select

    {[Measures].[Sales Amount],[Measures].[Order Quantity]} on 0,

    {[Product].[Category].members} on 1

From [Adventure Works]

posted @ 2009-06-23 20:38  rangeliu  阅读(1049)  评论(0编辑  收藏  举报