MDX YTD返回null

时间:2014-08-07 09:34:47

标签: null ssas mdx

我是MDX的新手,我试图在我的多维数据集上使用YTD功能,但我遇到了问题。

如果我在代码中指定日期,它可以正常工作:

    WITH MEMBER [Time].[Year -  Quarter -  Month -  Date].[YTD_SALES] AS
    Aggregate(
        YTD([Time].[Year -  Quarter -  Month -  Date].[August 2014])
    )
SELECT 
    [Time].[Year -  Quarter -  Month -  Date].[YTD_SALES] ON COLUMNS,
    [Item].[Item].Children ON ROWS
FROM
    [TBA_SALES]
WHERE
    [Measures].[Sales LCY]

但如果我用CurrentMember替换[2014年3月],结果将全部归零。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您是否将时间维度设置为时间类型?

您可以尝试的另一件事是看看您作为当前成员获得了什么。 试试这个添加:

MEMBER YTDStr AS MEMBERTOSTR([Time].[Year -  Quarter -  Month -  Date].CurrentMember)

然后将其添加到查询中,就像测量一样:

...
SELECT 
    { [Time].[Year -  Quarter -  Month -  Date].[YTD_SALES], YTDStr } ON COLUMNS,
...

编辑: 您将获得[Time].[Year - Quarter - Month - Date].[All],它是层次结构中的顶级成员。因此,无法为所有成员返回YTD。

要解决此问题,您需要在行上添加时间维度成员:

  WITH MEMBER [Time].[Year -  Quarter -  Month -  Date].[YTD_SALES] AS
    Aggregate(
        YTD([Time].[Year -  Quarter -  Month -  Date].[August 2014])
    )
SELECT 
    [Time].[Year -  Quarter -  Month -  Date].[YTD_SALES] ON COLUMNS,
    {[Item].[Item].Children, [Time].[Year -  Quarter -  Month -  Date].ALLMEMBERS} ON ROWS
FROM
    [TBA_SALES]
WHERE
    [Measures].[Sales LCY]

我不确定您在此查询中的内容是什么,所以很难指出正确的方向。