我是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缺乏了解,所以我想我错过了一些基本的东西。然而,我的头靠在墙上是行不通的,所以我需要一些帮助!
任何想法我做错了什么?
由于
答案 0 :(得分: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]
。