Mdx 如何始终查找计算成员的父级

Mdx 如何始终查找计算成员的父级,mdx,Mdx,这似乎很合乎逻辑: WITH MEMBER [Date].[Date - Calendar Month].[Calendar Year].&[2013].[LastMth] AS IIF( Day(Now()) = 1, TAIL([Date].[Date - Calendar Month].[Calendar Month],2).Item(1), TAIL([Date].[Date - Calendar Month].[Calenda

这似乎很合乎逻辑:

WITH 
MEMBER [Date].[Date - Calendar Month].[Calendar Year].&[2013].[LastMth] AS
    IIF(
       Day(Now()) = 1,
       TAIL([Date].[Date - Calendar Month].[Calendar Month],2).Item(1),
       TAIL([Date].[Date - Calendar Month].[Calendar Month],2).Item(0)
       )
SELECT
    NON EMPTY 
    {
        [Date].[Date - Calendar Month].[LastMth],
        [Date].[Date - Calendar Month].[LastMth].PARENT
    }
    ON COLUMNS,
    NON EMPTY 
    [Measures].[BillableIncome]
    ON ROWS 
FROM [ourCube]
我在脚本的第一行中指定了计算成员的父级-因此我的成员LastMth将2013作为其父级,并且结果集肯定会返回2013年以及上个月的总数

如果我将其设置为第一行的parent 2012:

 WITH 
    MEMBER [Date].[Date - Calendar Month].[Calendar Year].&[2012].[LastMth] AS
        IIF(
...
...
…它不担心我从哪里得到最后一个MTH(2013年),并使2012年成为父母的指示-有点奇怪,但可以理解的行为

下面为父对象返回一个空集-我以为父对象是
[Date].[Date-日历月].[All]
?什么是父级以及如何公开其价值

WITH 
MEMBER [Date].[Date - Calendar Month].[LastMth] AS
    IIF(
       Day(Now()) = 1,
       TAIL([Date].[Date - Calendar Month].[Calendar Month],2).Item(1),
       TAIL([Date].[Date - Calendar Month].[Calendar Month],2).Item(0)
       )
SELECT
    NON EMPTY 
    {
        [Date].[Date - Calendar Month].[LastMth],
        [Date].[Date - Calendar Month].[LastMth].PARENT
    }
    ON COLUMNS,
    NON EMPTY 
        [Measures].[BillableIncome]
    ON ROWS 
FROM [ourCube]

如果未声明计算成员的父级,则它将获得
All
成员的同级,而不是其子级


顺便提一下:我发现大多数客户端工具(包括Excel)都不希望
所有
都有同级,因此,如果
在计算脚本中创建
计算成员(而不是仅在语句的
WITH
子句中定义),则不会显示这些,即使他们被指示显示计算过的成员。

我们有
Pyramid
excel2010
。如果我可以在Excel中做一些事情,我会做的,但是能够将MDX脚本复制并粘贴到金字塔形仪表板中是非常有吸引力的:为什么MS不将其添加到Excel的OLAP功能中呢?+1…回到你的答案:因为它是
所有
的兄弟姐妹,这意味着当我执行
时,在我的脚本中这意味着它无处可去-因此结果集为空?是。比方说,如果在创建成员时没有给它一个父级,它就没有父级。