[SOLUCIONADO] Consulta MDX en Jpivot

Hola estoy intentando hacer una consulta que le de color a la celda si esta por encima o por debajo de un promedio general calculado.

with member [Measures].[prom] as Avg([Año Académico.Años].Children, [Measures].[Egresados])
 
member [Measures].[Egre] as [Measures].[Egresados],
FORMAT_STRING = IIf(([Measures].[Egre] > [Measures].[prom]), "|###|style='green'|arrow='up'", "|###|style='red'|arrow='down'")

select NON EMPTY {[Año Académico.Años].[Años].Children} ON COLUMNS,
  NON EMPTY {[Measures].[Egre]} ON ROWS
from [cubo_alumnos]

Y siempre me colorea en rojo como en la siguiente imagen

http://oi40.tinypic.com/1125yir.jpg

pero modificando la primer linea

with member [Measures].[prom] as [s]Avg([Año Académico.Años].Children, [Measures].[Egresados])[/s]

with member [Measures].[prom] as 500

devuelve bien la consulta

http://i43.tinypic.com/qosqrr.jpg

Porque puede ser?

saludos

Maxi

Hola Maxi,
el problema está en la consulta MDX. Hice una prueba en la demo online que tenemos en el SIU (http://pentaho.siu.edu.ar:8080 - usr: demo_univ | pass: demo_univ) sobre el cubo de Alumnos, del esquema SIU-Guarani con el siguiente MDX:

with member [Measures].[prom] as 'Avg([b][Año Academico].Members,[/b] [Measures].[Egresados])' member [Measures].[Egre] as '[Measures].[Egresados]', FORMAT_STRING = IIf(([Measures].[Egre] > [Measures].[prom]), "|###|style='green'|arrow='up'", "|###|style='red'|arrow='down'") select NON EMPTY {[Año Academico].Children} ON COLUMNS, NON EMPTY {[Measures].[Egre]} ON ROWS from [Alumnos]

Usando [Año Academico].Children no muestra los distintos colores, si lo hace usando [Año Academico].Members

Con Children

http://i44.tinypic.com/2nsmjkl.png

Con Member

http://i40.tinypic.com/15388px.png

Acá va la consulta que muestra el promedió también apra comparar:

with member [Measures].[prom] as 'Avg([Año Academico].members, [Measures].[Egresados])' member [Measures].[Egre] as '[Measures].[Egresados]', FORMAT_STRING = IIf(([Measures].[Egre] > [Measures].[prom]), "|###|style='green'|arrow='up'", "|###|style='red'|arrow='down'") select NON EMPTY {[Año Academico].children} ON COLUMNS, NON EMPTY Union([Measures].[prom] ,[Measures].[Egre]) ON ROWS from [Alumnos]

http://i42.tinypic.com/fvb41v.png

Saludos,

Marcos

Hola Marcos, probe la consulta y efectivamente hace el promedio utilizando members en vez de children pero lo que pude observar es que de esta manera incluye al promedio el total de la jerarquia.

En el caso que propusiste:

23-26-28-39-67-75-59-94-113-115-132

El promedio da 70.09.

Si incluis el total (771) al promedio da 128.5 pero esto no es correcto.

Me di cuenta ejecutando la segunda consulta y me da el siguiente resultado:

http://i40.tinypic.com/2m5yvqs.jpg

Modificando la consulta

with member [Measures].[prom] as 'Avg([Año Académico.Años].[b]Children[/b], [Measures].[Egresados])' member [Measures].[Egre] as '[Measures].[Egresados]', FORMAT_STRING = IIf(([Measures].[Egre] > [Measures].[prom]), "|###|style='green'|arrow='up'", "|###|style='red'|arrow='down'") select NON EMPTY {[Año Académico].[b]Members[/b]} ON COLUMNS, NON EMPTY Union([Measures].[prom] ,[Measures].[Egre]) ON ROWS from [cubo_alumnos]

Calcula el promedio bien pero solo lo coloca con el valor de la jerarquia.

http://i39.tinypic.com/o0ruc1.jpg

Todavia no logro entender el comportamiento de la consulta mdx.

Saludos,

Maxi

Hola Maxi,
probando varias alternativas de consultas encontré una que funciona bien y devuelve lo que estás buscando (http://pentaho.siu.edu.ar:8080 - usr: demo_univ | pass: demo_univ). Utilicé la función Descendants. A continuación adjunto el MDX y la imagen:

with member [Measures].[prom] as 'Avg([b]Descendants([Año Academico].[Todos],[Año Academico].[Año Academico])[/b] , [Measures].[Egresados])' member [Measures].[Egre] as '[Measures].[Egresados]', FORMAT_STRING = IIf(([Measures].[Egre] > [Measures].[prom]), "|###|style='green'|arrow='up'", "|###|style='red'|arrow='down'") select NON EMPTY {[Año Academico].children} ON COLUMNS, NON EMPTY Union([Measures].[prom] ,[Measures].[Egre]) ON ROWS from [Alumnos]

Mostrando el promedio:

with member [Measures].[prom] as 'Avg(Descendants([Año Academico].[Todos],[Año Academico].[Año Academico]) , [Measures].[Egresados])' member [Measures].[Egre] as '[Measures].[Egresados]', FORMAT_STRING = IIf(([Measures].[Egre] > [Measures].[prom]), "|###|style='green'|arrow='up'", "|###|style='red'|arrow='down'") select NON EMPTY {[Año Academico].children} ON COLUMNS, NON EMPTY Union([Measures].[prom] ,[Measures].[Egre]) ON ROWS from [Alumnos]

Espero que te sirva.

Saludos,

Marcos

Muchas gracias! Anduvo de 10

Saludos
Maxi