![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
| With Member [Measures].[ChangeInOrders] as |
#3
| |||
| |||
|
|
Greetings, Things are going well with a newly developed data warehouse and related cube, suing SQL Server 2005 Standard Edition. All, that is, except understanding MDX. I have a time dimension that has a hierarchy as follows: Calendar Year, Calendar Semester, Calendar Quarter, Month and Date. I need to calculate the difference (delta) between one of my measures, from the last period to the current period, where period might be Month, Quarter, Semester or Year. Having spent a day struggling with this, I have come up with the following: WITH MEMBER [Measures].[ChangeInPNL] AS 'IIF([Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].CurrentMember.Level.Ordinal = 0, NULL, IIF([Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].CurrentMember.Level.Name = "Month", ([Measures].[Cumulative PNL],[Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].CurrentMember) - ( [Measures].[Cumulative PNL], ParallelPeriod([Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].[Month],2)), IIF([Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].CurrentMember.Level.Name = "Calendar Quarter", ([Measures].[Cumulative PNL],[Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].CurrentMember) - ( [Measures].[Cumulative PNL], ParallelPeriod([Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].[Calendar Quarter])), IIF([Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].CurrentMember.Level.Name = "Calendar Semester", ([Measures].[Cumulative PNL],[Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].CurrentMember) - ( [Measures].[Cumulative PNL], ParallelPeriod([Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].[Calendar Semester])), ([Measures].[Cumulative PNL],[Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].CurrentMember) - ( [Measures].[Cumulative PNL], ParallelPeriod([Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].[Calendar Year])) ) ) ) )' SELECT { [Dim Analyst].[Analyst Initials].&[AS] } ON ROWS, |
#4
| |||
| |||
|
|
I think you may be over complicating things a little here. If all you want to do is to subtract the current member from the previous member on the same level, all you would have to do is something like the following. MEMBER [Measures].[ChangeInPNL] AS '([Measures].[Cumulative PNL],[Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].CurrentMember) - ([Measures].[Cumulative PNL],[Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].CurrentMember.PrevMember)' ParallelPeriod is used in situations where you want to get the same day/month/year member from last year (or some other parallel period). I'm not sure what the issue is with April, but one thing I would double check is the ordering of your month attribute. If the months are sorted by name instead of by month number, then you would get strange results and you would get a 0 for April as it will sort first by name. -- Regards Darren Gosbell [MCSD] Blog: http://www.geekswithblogs.net/darrengosbell In article <D42B62C8-359E-4218-A8C5-99525EC0AB58 (AT) microsoft (DOT) com>, SebastianCrewe (AT) discussions (DOT) microsoft.com says... Greetings, Things are going well with a newly developed data warehouse and related cube, suing SQL Server 2005 Standard Edition. All, that is, except understanding MDX. I have a time dimension that has a hierarchy as follows: Calendar Year, Calendar Semester, Calendar Quarter, Month and Date. I need to calculate the difference (delta) between one of my measures, from the last period to the current period, where period might be Month, Quarter, Semester or Year. Having spent a day struggling with this, I have come up with the following: WITH MEMBER [Measures].[ChangeInPNL] AS 'IIF([Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].CurrentMember.Level.Ordinal = 0, NULL, IIF([Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].CurrentMember.Level.Name = "Month", ([Measures].[Cumulative PNL],[Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].CurrentMember) - ( [Measures].[Cumulative PNL], ParallelPeriod([Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].[Month],2)), IIF([Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].CurrentMember.Level.Name = "Calendar Quarter", ([Measures].[Cumulative PNL],[Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].CurrentMember) - ( [Measures].[Cumulative PNL], ParallelPeriod([Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].[Calendar Quarter])), IIF([Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].CurrentMember.Level.Name = "Calendar Semester", ([Measures].[Cumulative PNL],[Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].CurrentMember) - ( [Measures].[Cumulative PNL], ParallelPeriod([Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].[Calendar Semester])), ([Measures].[Cumulative PNL],[Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].CurrentMember) - ( [Measures].[Cumulative PNL], ParallelPeriod([Dim Time].[Calendar Year - Calendar Semester - Calendar Quarter - Month - Date].[Calendar Year])) ) ) ) )' SELECT { [Dim Analyst].[Analyst Initials].&[AS] } ON ROWS, |
![]() |
| Thread Tools | |
| Display Modes | |
| |