What's the best way to create an average for all time grains across all measures?
At the moment, I've got a calculated measure for each measure, which itself uses two calculated measures:
Code Snippet
DayCount =
count(descendants([DATE TIME].[Calendar], ,LEAVES))
MonthCount =
count(descendants([DATE TIME].[Calendar], [DATE TIME].[Calendar].[Month]))
...
Code Snippet
SumSales =
sum([DATE TIME].[Calendar], [Sales])
SumUnits =
sum([DATE TIME].[Calendar], [Sales Units])
...
Code Snippet
AvgDailySales =
iif([Measures].[DayCount] = 0, null, [Measures].[SumSalesUnits] / [Measures].[DayCount])
AvgMonthlySales =
iif([Measures].[DayCount] = 0, null, [Measures].[SumSalesUnits] / [Measures].[MonthCount])
...
Thanks in advance,
If you search this forum on "AVERAGE" and "TIME" you'll find a bunch of solutions addressing this issue.
B.
|||Hi mmmman,
For the days counting and using it for avarages caculations you should create additional measure group that use the time dimension table as fact table with a measure that counts days.
If you play futher, for examle to base your calculations on count of business days, set in fact table 0 for weekend days and 1 for work days then made a sum measure on it.
The proposed approach has following advatages: is multiselect aware, hasn't performance drawbacks.
More about day counting you cat take from Mosha's blog
http://www.sqljunkies.com/WebLog/mosha/archive/2007/05/27/counting_days_mdx.aspx
where another approaches are also described.
No comments:
Post a Comment