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
Post a Comment