statistics - Calculating Quartiles in Analysis Services -


i´m using mdx code calculate quartile, , in blog: https://electrovoid.wordpress.com/2011/06/24/ssas-quartile/

that i´m doing:

with set ordereddata  order     (             nonempty                 (                  [dim parameter].[id].[id]                  *[dim result].[id].[id].allmembers,                  [measures].[value]                 ),           [measures].[value],          basc      )  member [measures].[rowcount] count (ordereddata) member [measures].[i25] ( .25 *  ( [rowcount] - 1 ) ) + 1 member [measures].[i25lo] fix([i25])   - 1 member [measures].[i25rem] ([i25] - fix([i25])) member [measures].[n25lo] (ordereddata.item([i25lo]), [value]) member [measures].[n25hi] (ordereddata.item([i25lo] + 1), [value]) member [measures].[quartile1] [n25lo] + ( [i25rem] * ( [n25hi] - [n25lo] )) ,format_string='currency' member [measures].[quartile2] median(ordereddata, [value]) ,format_string='currency' member [measures].[i75] ( .75 *  ( [rowcount] - 1 ) ) + 1 member [measures].[i75lo] fix([i75]) - 1 member [measures].[i75rem] ([i75] - fix([i75])) member [measures].[n75lo] (ordereddata.item([i75lo] ),[value]) member [measures].[n75hi] (ordereddata.item([i75lo] + 1),[value]) member [measures].[quartile3] [n75lo] + ( [i75rem] * ( [n75hi] - [n75lo] )) ,format_string='currency' member [measures].[ric] ([quartile3]-[quartile1] ) member [measures].[ls] ([quartile3]+ ([ric]*1.5) ) member [measures].[li] ([quartile1]- ([ric] *1.5))  member [measures].[max]  max (filter(ordereddata ,[value]<=[ls]),[value]) member [measures].[min]  min(filter(ordereddata ,[value]>=[li]),[value]) member [measures].[out]  max (filter(ordereddata ,[value]>[ls]),[value 

what want add dim date, calculate quartiles each month, this:

member [measures].[out] max (filter(ordereddata ,[value]>[ls]),[value  select {         [measures].[quartile1],[measures].[quartile2],[measures].[quartile3], [min],          [max] , [out] , [measures].[valueavg],[rowcount],[measures].[recuento fact result]        } on 0 ,  [dim parameter].[reference].[reference] *  [dim parameter].[section es].[section es] *  [id distribution date].[datej].[month] on 1  [tess tek dw dev] 

but didn't work, how can calculate quartiles of different date ranges in 1 mdx query?

you need work date with statement somehow.

try first adding target months, on rows, named set:

with  set [targetset]  {   [id distribution date].[datej].[month].[jan-2015],   [id distribution date].[datej].[month].[feb-2015]  } 

then i'd add set taking targetset account:

set [nonemptyids]  nonempty(     [dim parameter].[id].[id]    *[dim result].[id].[id].allmembers   ,   {[measures].[value]} * [targetset]  ) 

then feed set current set:

set [ordereddata]  order     (             [nonemptyids],           [measures].[value],          basc      ) 

then try amending rows snippet use targetset:

[dim parameter].[reference].[reference] *  [dim parameter].[section es].[section es] *  [targetset] on 1   

Comments