0

我是 MDX 的新手,但希望我的代码尽可能干净。

我有一个查询,查看今天的销售额,并使用 ParallelPeriod 函数将它们与 LY 和 LY-1 进行比较。它看起来像这样..

With Member [Date].[SalesCalendar].[DateToday] as [Date].[SalesCalendar].[Date].&[2012-10-26T00:00:00]

SELECT 

    {[Date].[SalesCalendar].[DateToday],

    ParallelPeriod([Date].[SalesCalendar].[Year],1,[Date].[SalesCalendar].[Date].&[2012-10-26T00:00:00]),

    ParallelPeriod([Date].[SalesCalendar].[Year],2,[Date].[SalesCalendar].[DateToday]}

    *  

    {[Measures].[Total Sales],[Measures].[Units],[Measures].[Sales Target]}
    ON Columns,

    [Locations].[Location PK].[Location PK]
    on Rows

From MyCube

我首先定义一个指向今天日期的成员。我想定义一次并在整个查询(以及我编写的其他查询)中使用它,理论是我可以在一次更改它并且基础查询做出反应。

我遇到的问题是,如果我尝试在 ParallelPeriod 函数中使用这个计算成员,我不会得到任何结果。通过上面的查询,我得到了第一列的结果,第一次调用 ParallelPeriod(对于 LY)有效,但第二次调用 LY-1,使用声明的成员,失败。

我猜这是因为我对 MDX 缺乏了解,所以我想我错过了一些基本的东西。但是,将我的头撞在墙上是行不通的,所以我需要一些帮助!

任何想法我做错了什么?

谢谢

4

1 回答 1

0

这不起作用,因为在评估您的查询时[Date].[SalesCalendar].[DateToday]不会替换为[Date].[SalesCalendar].[Date].&[2012-10-26T00:00:00].

您创建了一个成员,该成员将提供与数据透视表单元格中相同的数值[Date].[SalesCalendar].[Date].&[2012-10-26T00:00:00]

你可以试试这个查询:

With Member [Date].[SalesCalendar].[DateToday] as [Date].[SalesCalendar].[Date].&[2012-10-26T00:00:00]
     Member [Measures].[name] as [Date].[SalesCalendar].CurrentMember.Name

SELECT 
    {[Measures].[name], [Measures].[Total Sales]} ON Columns,
    {[Date].[SalesCalendar].[DateToday], [Date].[SalesCalendar].[Date].&[2012-10-26T00:00:00]} on Rows
From MyCube

Total Sales是相同的,但不是[Measures].[name]

于 2012-10-26T14:36:37.820 回答