Ssas MDX:如何访问当前选定的维度成员?

Ssas MDX:如何访问当前选定的维度成员?,ssas,mdx,Ssas,Mdx,我试图在MDX中创建一个度量,以获取所选时段的第一天(我有一个YMD日期维度)。我正在使用EXISTING函数获取所选成员。如果我在Excel数据透视表过滤器中只选择一个维度成员,它就可以正常工作。但是,只要我选择了多个成员(例如:2012和2013),现有的功能就无法按预期工作 我创建了另一个度量来调试和查看发生了什么。该措施的定义如下: SetToStr(现有([Date].[Date YMD].[Year].成员)) 如果我只选择了一个维度成员,这很好,我会得到以下结果: {[Date].

我试图在
MDX
中创建一个度量,以获取所选时段的第一天(我有一个YMD日期维度)。我正在使用
EXISTING
函数获取所选成员。如果我在Excel数据透视表过滤器中只选择一个维度成员,它就可以正常工作。但是,只要我选择了多个成员(例如:2012和2013),现有的
功能就无法按预期工作

我创建了另一个度量来调试和查看发生了什么。该措施的定义如下:

SetToStr(现有([Date].[Date YMD].[Year].成员))

如果我只选择了一个维度成员,这很好,我会得到以下结果:

{[Date].[Date YMD].[All].[2013]}

但是,只要我同时选择2012年和2013年,我就会得到所有维度成员的列表:

{[Date].[Date YMD].[All].[N/A],[Date].[Date YMD].[All].[2007],[Date].[Date YMD].[All].[2008],[Date].[Date YMD].[All].[2009],[Date].[Date YMD].[All].[2010],[Date].[Date YMD].[All].[2011],[Date].[Date YMD].[All].[2012],[Date].[Date YMD].[All].[2013],[Date].[Date YMD].[All].[2014]}
现有功能似乎仅在选择单个成员时才起作用

--

更新:

也许我在原来的帖子里不够清楚。我面临的问题是,如果正在筛选日期维度(在Excel透视表筛选器中),并且在筛选器中选择了多个日期成员(例如:同时选择2012年和2013年),则获取第一个和最后一个日期成员

我已经尝试使用这里的解决方案,但没有成功

我现在创建了两个度量:

  • 首日单曲:
  • 多年来的第一天
  • 不幸的是,我不能直接包括截图。您可以在此链接上看到:


    如您所见,在透视表筛选器中选择一年时,度量值有效,但选择一年以上时,度量值无效。

    在我的多维数据集中,通过management studio,我可以编写如下脚本,以创建基于每个月的第一天和最后一天返回数值的度量值:

    WITH 
    SET [Last12Months] AS
        TAIL ( 
            [Date].[Date - Calendar Month].[Calendar Month].members, 
            12)
    MEMBER [Measures].[FirstDay] AS
        HEAD(
            DESCENDANTS(
                [Date].[Date - Calendar Month].CURRENTMEMBER,
                [Date].[Date - Calendar Month].[Calendar Day]
                ),
            1
            ).ITEM(0).member_value
    MEMBER [Measures].[LastDay] AS
        TAIL(
            DESCENDANTS(
                [Date].[Date - Calendar Month].CURRENTMEMBER,
                [Date].[Date - Calendar Month].[Calendar Day]
                ),
            1
            ).ITEM(0).member_value
    SELECT
        {[Measures].[FirstDay],[Measures].[LastDay]} ON 0,
        [Last12Months] ON 1
    FROM [MyCube]
    
    我们使用
    Office2010
    ,但使用
    OLAP数据透视表扩展插件,我可以向数据透视表添加以下两个度量:

    1.
    [Measures].[FirstDay]

    HEAD(
        DESCENDANTS(
            [Date].[Date - Calendar Month].CURRENTMEMBER,
            [Date].[Date - Calendar Month].[Calendar Day]
            ),
        1
        ).ITEM(0).member_value
    
    TAIL(
        DESCENDANTS(
            [Date].[Date - Calendar Month].CURRENTMEMBER,
            [Date].[Date - Calendar Month].[Calendar Day]
            ),
        1
        ).ITEM(0).member_value
    
    2.
    [措施][最后一天]

    HEAD(
        DESCENDANTS(
            [Date].[Date - Calendar Month].CURRENTMEMBER,
            [Date].[Date - Calendar Month].[Calendar Day]
            ),
        1
        ).ITEM(0).member_value
    
    TAIL(
        DESCENDANTS(
            [Date].[Date - Calendar Month].CURRENTMEMBER,
            [Date].[Date - Calendar Month].[Calendar Day]
            ),
        1
        ).ITEM(0).member_value
    
    现在,无论我在行中使用什么,我都会从枢轴中得到正确的答案:


    编辑

    如果我操纵数据透视,使我们的日期维度位于数据透视的过滤器中,然后选择2013年和2014年的multi-select,则excel使用的“mdx”似乎如下所示:

    WITH 
    MEMBER [Measures].[FirstDay] as
     HEAD (
      DESCENDANTS ( [Date].[Date - Calendar Month].CURRENTMEMBER, [Date].[Date - Calendar Month].[Calendar Day] )
      , 1
     ).ITEM( 0 ).member_value
    MEMBER [Measures].[LastDay] as
     TAIL (
      DESCENDANTS ( [Date].[Date - Calendar Month].CURRENTMEMBER, [Date].[Date - Calendar Month].[Calendar Day] )
      , 1
     ).ITEM( 0 ).member_value
    SELECT
      { [Measures].[FirstDay], [Measures].[LastDay] }  ON COLUMNS
    FROM 
       (
       SELECT 
         ({ [Date].[Date - Calendar Month].[Calendar Year].&[2012], 
            [Date].[Date - Calendar Month].[Calendar Year].&[2013] }) ON COLUMNS
       FROM [OurCube]
       ) 
    

    我认为此脚本的自定义度量值中的函数
    CURRENTMEMBER
    的上下文将由于子选择而丢失。

    在我的多维数据集中,通过management studio,我可以编写这样的脚本来创建基于每个月的第一天和最后一天返回数值的度量值:

    WITH 
    SET [Last12Months] AS
        TAIL ( 
            [Date].[Date - Calendar Month].[Calendar Month].members, 
            12)
    MEMBER [Measures].[FirstDay] AS
        HEAD(
            DESCENDANTS(
                [Date].[Date - Calendar Month].CURRENTMEMBER,
                [Date].[Date - Calendar Month].[Calendar Day]
                ),
            1
            ).ITEM(0).member_value
    MEMBER [Measures].[LastDay] AS
        TAIL(
            DESCENDANTS(
                [Date].[Date - Calendar Month].CURRENTMEMBER,
                [Date].[Date - Calendar Month].[Calendar Day]
                ),
            1
            ).ITEM(0).member_value
    SELECT
        {[Measures].[FirstDay],[Measures].[LastDay]} ON 0,
        [Last12Months] ON 1
    FROM [MyCube]
    
    我们使用
    Office2010
    ,但使用
    OLAP数据透视表扩展插件,我可以向数据透视表添加以下两个度量:

    1.
    [Measures].[FirstDay]

    HEAD(
        DESCENDANTS(
            [Date].[Date - Calendar Month].CURRENTMEMBER,
            [Date].[Date - Calendar Month].[Calendar Day]
            ),
        1
        ).ITEM(0).member_value
    
    TAIL(
        DESCENDANTS(
            [Date].[Date - Calendar Month].CURRENTMEMBER,
            [Date].[Date - Calendar Month].[Calendar Day]
            ),
        1
        ).ITEM(0).member_value
    
    2.
    [措施][最后一天]

    HEAD(
        DESCENDANTS(
            [Date].[Date - Calendar Month].CURRENTMEMBER,
            [Date].[Date - Calendar Month].[Calendar Day]
            ),
        1
        ).ITEM(0).member_value
    
    TAIL(
        DESCENDANTS(
            [Date].[Date - Calendar Month].CURRENTMEMBER,
            [Date].[Date - Calendar Month].[Calendar Day]
            ),
        1
        ).ITEM(0).member_value
    
    现在,无论我在行中使用什么,我都会从枢轴中得到正确的答案:


    编辑

    如果我操纵数据透视,使我们的日期维度位于数据透视的过滤器中,然后选择2013年和2014年的multi-select,则excel使用的“mdx”似乎如下所示:

    WITH 
    MEMBER [Measures].[FirstDay] as
     HEAD (
      DESCENDANTS ( [Date].[Date - Calendar Month].CURRENTMEMBER, [Date].[Date - Calendar Month].[Calendar Day] )
      , 1
     ).ITEM( 0 ).member_value
    MEMBER [Measures].[LastDay] as
     TAIL (
      DESCENDANTS ( [Date].[Date - Calendar Month].CURRENTMEMBER, [Date].[Date - Calendar Month].[Calendar Day] )
      , 1
     ).ITEM( 0 ).member_value
    SELECT
      { [Measures].[FirstDay], [Measures].[LastDay] }  ON COLUMNS
    FROM 
       (
       SELECT 
         ({ [Date].[Date - Calendar Month].[Calendar Year].&[2012], 
            [Date].[Date - Calendar Month].[Calendar Year].&[2013] }) ON COLUMNS
       FROM [OurCube]
       ) 
    

    我认为此脚本的自定义度量值中的函数
    CURRENTMEMBER
    的上下文将由于子选择而丢失。

    在我的多维数据集中,通过management studio,我可以编写这样的脚本来创建基于每个月的第一天和最后一天返回数值的度量值:

    WITH 
    SET [Last12Months] AS
        TAIL ( 
            [Date].[Date - Calendar Month].[Calendar Month].members, 
            12)
    MEMBER [Measures].[FirstDay] AS
        HEAD(
            DESCENDANTS(
                [Date].[Date - Calendar Month].CURRENTMEMBER,
                [Date].[Date - Calendar Month].[Calendar Day]
                ),
            1
            ).ITEM(0).member_value
    MEMBER [Measures].[LastDay] AS
        TAIL(
            DESCENDANTS(
                [Date].[Date - Calendar Month].CURRENTMEMBER,
                [Date].[Date - Calendar Month].[Calendar Day]
                ),
            1
            ).ITEM(0).member_value
    SELECT
        {[Measures].[FirstDay],[Measures].[LastDay]} ON 0,
        [Last12Months] ON 1
    FROM [MyCube]
    
    我们使用
    Office2010
    ,但使用
    OLAP数据透视表扩展插件,我可以向数据透视表添加以下两个度量:

    1.
    [Measures].[FirstDay]

    HEAD(
        DESCENDANTS(
            [Date].[Date - Calendar Month].CURRENTMEMBER,
            [Date].[Date - Calendar Month].[Calendar Day]
            ),
        1
        ).ITEM(0).member_value
    
    TAIL(
        DESCENDANTS(
            [Date].[Date - Calendar Month].CURRENTMEMBER,
            [Date].[Date - Calendar Month].[Calendar Day]
            ),
        1
        ).ITEM(0).member_value
    
    2.
    [措施][最后一天]

    HEAD(
        DESCENDANTS(
            [Date].[Date - Calendar Month].CURRENTMEMBER,
            [Date].[Date - Calendar Month].[Calendar Day]
            ),
        1
        ).ITEM(0).member_value
    
    TAIL(
        DESCENDANTS(
            [Date].[Date - Calendar Month].CURRENTMEMBER,
            [Date].[Date - Calendar Month].[Calendar Day]
            ),
        1
        ).ITEM(0).member_value
    
    现在,无论我在行中使用什么,我都会从枢轴中得到正确的答案:


    编辑

    如果我操纵数据透视,使我们的日期维度位于数据透视的过滤器中,然后选择2013年和2014年的multi-select,则excel使用的“mdx”似乎如下所示:

    WITH 
    MEMBER [Measures].[FirstDay] as
     HEAD (
      DESCENDANTS ( [Date].[Date - Calendar Month].CURRENTMEMBER, [Date].[Date - Calendar Month].[Calendar Day] )
      , 1
     ).ITEM( 0 ).member_value
    MEMBER [Measures].[LastDay] as
     TAIL (
      DESCENDANTS ( [Date].[Date - Calendar Month].CURRENTMEMBER, [Date].[Date - Calendar Month].[Calendar Day] )
      , 1
     ).ITEM( 0 ).member_value
    SELECT
      { [Measures].[FirstDay], [Measures].[LastDay] }  ON COLUMNS
    FROM 
       (
       SELECT 
         ({ [Date].[Date - Calendar Month].[Calendar Year].&[2012], 
            [Date].[Date - Calendar Month].[Calendar Year].&[2013] }) ON COLUMNS
       FROM [OurCube]
       ) 
    

    我认为此脚本的自定义度量值中的函数
    CURRENTMEMBER
    的上下文将由于子选择而丢失。

    在我的多维数据集中,通过management studio,我可以编写这样的脚本来创建基于每个月的第一天和最后一天返回数值的度量值:

    WITH 
    SET [Last12Months] AS
        TAIL ( 
            [Date].[Date - Calendar Month].[Calendar Month].members, 
            12)
    MEMBER [Measures].[FirstDay] AS
        HEAD(
            DESCENDANTS(
                [Date].[Date - Calendar Month].CURRENTMEMBER,
                [Date].[Date - Calendar Month].[Calendar Day]
                ),
            1
            ).ITEM(0).member_value
    MEMBER [Measures].[LastDay] AS
        TAIL(
            DESCENDANTS(
                [Date].[Date - Calendar Month].CURRENTMEMBER,
                [Date].[Date - Calendar Month].[Calendar Day]
                ),
            1
            ).ITEM(0).member_value
    SELECT
        {[Measures].[FirstDay],[Measures].[LastDay]} ON 0,
        [Last12Months] ON 1
    FROM [MyCube]
    
    我们使用
    Office2010
    ,但使用
    OLAP数据透视表扩展插件,我可以向数据透视表添加以下两个度量:

    1.
    [Measures].[FirstDay]

    HEAD(
        DESCENDANTS(
            [Date].[Date - Calendar Month].CURRENTMEMBER,
            [Date].[Date - Calendar Month].[Calendar Day]
            ),
        1
        ).ITEM(0).member_value
    
    TAIL(
        DESCENDANTS(
            [Date].[Date - Calendar Month].CURRENTMEMBER,
            [Date].[Date - Calendar Month].[Calendar Day]
            ),
        1
        ).ITEM(0).member_value
    
    2.
    [措施][最后一天]

    HEAD(
        DESCENDANTS(
            [Date].[Date - Calendar Month].CURRENTMEMBER,
            [Date].[Date - Calendar Month].[Calendar Day]
            ),
        1
        ).ITEM(0).member_value
    
    TAIL(
        DESCENDANTS(
            [Date].[Date - Calendar Month].CURRENTMEMBER,
            [Date].[Date - Calendar Month].[Calendar Day]
            ),
        1
        ).ITEM(0).member_value
    
    现在,无论我在行中使用什么,我都会从枢轴中得到正确的答案:


    编辑

    如果我操纵数据透视,使我们的日期维度位于数据透视的过滤器中,然后选择2013年和2014年的multi-select,则excel使用的“mdx”似乎如下所示:

    WITH 
    MEMBER [Measures].[FirstDay] as
     HEAD (
      DESCENDANTS ( [Date].[Date - Calendar Month].CURRENTMEMBER, [Date].[Date - Calendar Month].[Calendar Day] )
      , 1
     ).ITEM( 0 ).member_value
    MEMBER [Measures].[LastDay] as
     TAIL (
      DESCENDANTS ( [Date].[Date - Calendar Month].CURRENTMEMBER, [Date].[Date - Calendar Month].[Calendar Day] )
      , 1
     ).ITEM( 0 ).member_value
    SELECT
      { [Measures].[FirstDay], [Measures].[LastDay] }  ON COLUMNS
    FROM 
       (
       SELECT 
         ({ [Date].[Date - Calendar Month].[Calendar Year].&[2012], 
            [Date].[Date - Calendar Month].[Calendar Year].&[2013] }) ON COLUMNS
       FROM [OurCube]
       ) 
    

    我认为此脚本的自定义度量值中的函数
    CURRENTMEMBER
    的上下文将由于子选择而丢失。

    这里描述的问题有一个解决方法:。但是,正如作者(SSAS的开发人员之一)所写,“解决方案既不优雅也不高效”。无论如何,它需要将另一个度量值组添加到多维数据集中,并编写一个存储过程。

    这里介绍的问题有一个解决方法:。但是,正如作者(SSAS的开发人员之一)所写,“解决方案既不优雅也不高效”。无论如何,它需要将另一个度量值组添加到多维数据集中,并编写一个存储过程。

    这里介绍的问题有一个解决方法:。但是,正如作者(SSAS的开发人员之一)所写,“解决方案既不优雅也不高效”。无论如何,它需要向多维数据集中添加另一个度量值组,即