MDX函数之 - Descendants

来源:互联网 发布:wamp 连接sqlserver 编辑:程序博客网 时间:2024/05/16 15:56

本文说明的是在OLAP多维分析系统中用到MDX语句函数Descendants。
Descendants 汉语是 后代 的意思(百度翻译的)。
MDX官网的解释:返回成员在指定级别或距离上的后代集,可以选择包括或不包括其他级别的后代
详细的用法请参考下面的网址:
https://msdn.microsoft.com/zh-cn/library/ms146075.asp
这里提供一些例子来说明一下这个函数:

 前提:有一个时间维表(年季月日),一个事实表包含(时间字段和销售额字段)

    第一种情况 :

          SELECT  [Measures].[sales] ON COLUMNS,

                       Descendants ( [时间.年季月日].[2014],

                                               [时间.年季月日].[月],
                                               SELF 
                                               )  ON ROWS

          FROM [事实表]

         SELF 只返回的是 2014年所有的月份从1月到12月份的数据,如下:

                     

    第二情况 :

          SELECT  [Measures].[sales] ON COLUMNS,

                       Descendants ( [时间.年季月日].[2014].[1],

                                               [时间.年季月日].[],
                                               AFTER
                                               )  ON ROWS

          FROM [事实表]

         AFTER只返回的是 2014年第一季度以后的成员,即:1月所有日期,2月所有日期,3月所有日期。如下:

        

 

情况:

          SELECT  [Measures].[sales] ON COLUMNS,

                       Descendants ( [时间.年季月日].[2014],

                                               [时间.年季月日].[],
                                               BEFORE
                                               )  ON ROWS

          FROM [事实表]

         BEFORE只返回的是 2014年月份以前的所有成员,即:年和季度成员。如下:

         

  

第四情况 :

          SELECT  [Measures].[sales] ON COLUMNS,

                       Descendants ( [时间.年季月日].[2014],

                                               [时间.年季月日].[],
                                               BEFORE_AND_AFTER
                                               )  ON ROWS

          FROM [事实表]

         BEFORE只返回的是 2014年月份以前的所有成员和以后的成员,不包含月份,即:年,季度,日成员没有月成员。如下:

       

 

第五情况 :

          SELECT  [Measures].[sales] ON COLUMNS,

                       Descendants ( [时间.年季月日].[2014],

                                               [时间.年季月日].[],
                                               SELF_AND_AFTER
                                               )  ON ROWS

          FROM [事实表]

         BEFORE只返回的是 2014年月份和以后的成员,包含月成员,即:月,日成员。如下:

             

 

 

第六情况 :

          SELECT  [Measures].[sales] ON COLUMNS,

                       Descendants ( [时间.年季月日].[2014],

                                               [时间.年季月日].[],
                                               SELF_AND_AFTER
                                               )  ON ROWS

          FROM [事实表]

         BEFORE只返回的是 2014年月份和以前的成员,包含月成员,即:年,季度,月成员。如下:

          

 

第七情况 :

          SELECT  [Measures].[sales] ON COLUMNS,

                       Descendants ( [时间.年季月日].[2014],

                                               [时间.年季月日].[],
                                               SELF_AND_AFTER
                                               )  ON ROWS

          FROM [事实表]

         BEFORE只返回的是 2014年月份和以前的成员,包含月成员,即:年,季度,月,日所有成员。如下:

       

 

第八情况 :  LEAVES  暂时没有研究明白,希望留言告之。

 

        

 

0 0
原创粉丝点击