Open Business Intelligence

La red del Business Intelligence

INTRODUCCION:
Por defecto cuando se crea un nuevo análisis interactivo todas los valores de la grilla presentan el mismo formato.
Una característica muy buena que presenta JPivot es la posibilidad de crear nuevos medidas de manera dinámica y agregarle formatos de acuerdo a su propio valor.

OBJETIVO:
Crear una nueva medida de forma dinámica, analizar su valor y de acuerdo a este, asignarle diferentes formatos, es decir:
  • valor < 1000   color de fondo rojo y flecha hacia abajo.
  • 1000 <= valor <= 3000   color de fondo amarillo.
  • valor > 3000   color de fondo verde y flecha hacia arriba.

PASOS:
1)
Para la aplicación práctica de este tutorial, se utilizará el análisis interactivo del [Tutorial 01]...

2)
Ejecutamos el análisis interactivo y presionamos la opción MDX de la barra de iconos:


Veremos que el código MDX del análisis interactivo es:

select NON EMPTY {[Measures].[Quantity]} ON COLUMNS,
  NON EMPTY {[Markets].[All Markets].[APAC].[Australia], [Markets].[All Markets].[APAC].[New Zealand], [Markets].[All Markets].[APAC].[Singapore], [Markets].[All Markets].[Japan].[Hong Kong], [Markets].[All Markets].[Japan].[Japan], [Markets].[All Markets].[Japan].[Philippines], [Markets].[All Markets].[Japan].[Singapore], [Markets].[All Markets].[NA].[Canada], [Markets].[All Markets].[NA].[USA]} ON ROWS
from [SteelWheelsSales]

3) Lo que se hará a continuación será confeccionar el código para llevar adelante nuestro objetivo.

3.1) Creación de una nueva medida basada en [Measures].[Quantity]:

with member [Measures].[Cantidad] as '[Measures].[Quantity]',

3.2) Agregarle formato condicional:

FORMAT_STRING = IIf(([Measures].[Cantidad] < 1000.0), "|###,00|style='red'|arrow='down'", IIf(([Measures].[Cantidad] < 3000.0), "|###,00|style='yellow'|arrow='none'", "|###,00|style='green'|arrow='up'"))

NOTA1: como se puede observar se utilizan IIF para analizar los valores de la nueva medida.
NOTA2: "|###,00|style='red'|arrow='down'" corresponde a:
  • ###,00   formato de salida.
  • style='red'   color de fondo.
  • arrow='down'   icono/flecha.

4)
Agregar este código al inicio de la consulta MDX y reemplazar la medida [Measures].[Quantity] utilizada en el análisis interactivo por la nueva medida, es decir por [Measures].[Cantidad]:

with member [Measures].[Cantidad] as '[Measures].[Quantity]', FORMAT_STRING = IIf(([Measures].[Cantidad] < 1000.0), "|###,00|style='red'|arrow='down'", IIf(([Measures].[Cantidad] < 3000.0), "|###,00|style='yellow'|arrow='none'", "|###,00|style='green'|arrow='up'"))
select NON EMPTY {[Measures].[Cantidad]} ON COLUMNS,
  NON EMPTY {[Markets].[All Markets].[APAC].[Australia], [Markets].[All Markets].[APAC].[New Zealand], [Markets].[All Markets].[APAC].[Singapore], [Markets].[All Markets].[Japan].[Hong Kong], [Markets].[All Markets].[Japan].[Japan], [Markets].[All Markets].[Japan].[Philippines], [Markets].[All Markets].[Japan].[Singapore], [Markets].[All Markets].[NA].[Canada], [Markets].[All Markets].[NA].[USA]} ON ROWS
from [SteelWheelsSales]

5) Presionar el botón "Aplicar", cerrar el editor MDX y guardar el análisis interactivo. Obtendremos algo como:



Para leer más sobre MDX, seguir este link...

Adjunto el análisis interactivo de ejemplo, el mismo esta realizado con el schema SteelWheels y el cubo SteelWheelsSales, que vienen predefinidos en Pentaho 3.5.

Espero les sea útil.
Salud!

Etiquetas: colores, eglubi, jpivot, mdx, pentaho

Visitas: 1376

Archivos adjuntos

Respuestas a esta discusión

Dario , fijate donde esta subrayado, creo que pusiste un IIF, yo pienso que deberia ser IF.

with member [Measures].[Cantidad] as '[Measures].[Quantity]', FORMAT_STRING = IIf(([Measures].[Cantidad] < 1000.0), "|###,00|style='red'|arrow='down'", IIf(([Measures].[Cantidad] < 3000.0), "|###,00|style='yellow'|arrow='none'", "|###,00|style='green'|arrow='up'"))
select NON EMPTY {[Measures].[Cantidad]} ON COLUMNS,
NON EMPTY {[Markets].[All Markets].[APAC].[Australia], [Markets].[All Markets].[APAC].[New Zealand], [Markets].[All Markets].[APAC].[Singapore], [Markets].[All Markets].[Japan].[Hong Kong], [Markets].[All Markets].[Japan].[Japan], [Markets].[All Markets].[Japan].[Philippines], [Markets].[All Markets].[Japan].[Singapore], [Markets].[All Markets].[NA].[Canada], [Markets].[All Markets].[NA].[USA]} ON ROWS
from [SteelWheelsSales]
Hola Cristobal, efectivamente se utiliza IIF.

IIF(expresión a evaluar, lo que se hará si la evaluación es True, lo que se hará si la evaluación es False)

Saludos.
Gracias estimado ;)
Una consulta con los formatos que tienes tu ###,00 formato de salida.

yo tengo las cantidades asi
en miles: 7,654
en centena: 775
en Decena: 40

Cuando creo mi archivo XML, en PSW, le pongo en formatter: #### , aqui tengo el codigo:

with member [Measures].[Total Reestibas] as '[Measures].[Quantity]', FORMAT_STRING = IIf(([Measures].[Total Reestibas] < 1,000), "|####|style='red'|arrow='down'", IIf(([Measures].[Total Reestibas] < 3,000), "|####|style='yellow'|arrow='none'", "|####|style='green'|arrow='up'"))

select NON EMPTY {[Measures].[Total Reestibas]} ON COLUMNS,
NON EMPTY Hierarchize(Crossjoin({[Naves].[All Navess]}, Union(Union(Union(Union(Union(Union(Crossjoin({[Gruas].[All Gruass]}, {[Tiempo].[All Tiempos]}), Crossjoin({[Gruas].[All Gruass]}, {[Tiempo].[All Tiempos].[2008]})), Crossjoin({[Gruas].[All Gruass]}, {[Tiempo].[All Tiempos].[2009]})), Crossjoin({[Gruas].[All Gruass]}, {[Tiempo].[All Tiempos].[2010]})), Crossjoin({[Gruas].[All Gruass]}, [Tiempo].[All Tiempos].[2008].Children)), Crossjoin({[Gruas].[All Gruass]}, [Tiempo].[All Tiempos].[2008].[Sem1].Children)), Crossjoin({[Gruas].[All Gruass]}, [Tiempo].[All Tiempos].[2008].[Sem1].[Tri2].Children)))) ON ROWS
from [Cantidad Reestibas]

Espero que me puedas ayudar
Hola Cristobal, para una descripción más detallada acerca de FORMAT_STRING, puedes seguir este enlace...

Por cierto, si encuentras la solución no te olvides de comentarnos cómo lo hiciste.

Saludos.

Hola estoy intentando hacer una consulta pero comparando con un promedio

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

pero modificando la primer linea

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

with member [Measures].[prom] as 500

devuelve bien la consulta

Porque puede ser?

saludos

Maxi



Posiblemente estés calculando mal el promedio, te fijaste que valores te da la medida calculada?

El promedio da 594, si lo muestro solo lo devuelve

Podrías adjuntar un screenshot de la consulta con esa medida adjunta a la que quieres comparar?

Coloca la medida adjunta a comparar, o sea la consulta completa sin el formato

lo que me parece raro es que en los children el valor no se muestra. es decir si en el select pongo CHILDREN el promedio no lo muestra directamente

RSS

Distintivo

Cargando…

© 2017   Creado por Emilio.   Tecnología de

Emblemas  |  Reportar un problema  |  Términos de servicio