[英]Using calculated member as parameter in MDX function
我是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的了解,所以我想我缺少一些基本知识。 但是,用头撞墙是行不通的,因此我需要一些帮助!
有什么想法我做错了吗?
谢谢
这行不通,因为当您的查询评估为[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]
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.