Analizar dos valores con Mekko Chart

En la galería de visuales de Power Bi hay uno que es interesante para analizar y comparar dos valores distintos entre sí: el Mekko Chart.

Como siempre para obtener este visual primero debemos acceder a la página web de visuales de Power BI, descargarlo y también va bien descargar el ejemplo para ver el funcionamiento.

Una vez descargado abrimos nuestro Power BI, en este caso parto de en este caso parto de la plantilla A3ERP Ventas totales detallada base que puede descargar.

Y una vez abierta la plantilla pulsamos en los… en la parte de visuales para importar el archivo que hemos descardado.

En una página en blanco insertamos el visual Mekko Chart

Empecemos por la categoría, que queremos que representen las columnas, en nuestro caso vamos a poner el Representante

Luego el valor del eje Y, en este caso los EUR. Hasta aquí muy simple

En el eje x (axis witdth) ponemos las unidades: ahora el grafico ha cambiado, el ancho de la columna depende de la cantidad de unidades vendidas

Y por último añadimos la serie: las familias

Ahora tenemos el grafico completo

Para cada representante vemos en vertical las ventas en euros por familia, y en horizontal, según la anchura las unidades vendidas

Por supuesto si nos paramos sobre un área del grafico se nos muestra la información correspondiente

Este e pues un gráfico que combina unas barras apiladas 100 % con unas columnas apiladas 100% y va muy bien para comparar varios dos conceptos y dos valores.

Opciones del editor de consultas

El editor de consultas de Power BI es una herramienta muy útil para preparar los datos que leemos de nuestras fuentes de datos.

Hay un montón de opciones para procesar los campos y tablas, y aquí voy a mostrar algunas que considero útiles

Mi idea es conseguir con el editor de consultas una tabla resumen de las ventas por representante y familia: algo que haríamos con la función SUMMARIZE en Power BI o sencillamente construyendo una tabla en una página de un informe

Para seguir el ejemplo he partido de la plantilla A3ERP Ventas totales detallada base que puede descargar

Duplicar y referencia

Cuando hemos importado una tabla hay dos opciones disponibles para copiarla y pegarla

Si duplicamos se hace una copia idéntica de todo el lenguaje M que se ha usado para la conexión y ajuste de la tabla

Por tanto cualquier cambio que hagamos en la tabla duplicada no afecta a la original

Si hacemos referencia, no se copia nada, se apunta a la tabla original

Con lo cual cualquier cambio que hagamos en la original puede afectar a lo que hayamos hecho en la tabla referencia

Para seguir este ejemplo vamos a duplicar

Ya la tabla duplicada le cambiamos el nombre por Ventas Resumen

Recordemos que los pasos aplicados para procesar la tabla se ven en el panel de la derecha

Eliminar columnas

Queremos quitar columnas y dejar solo: Representante, Familia y Neto

Pulsamos en Elegir columnas y dejamos solo las que nos interesan

Combinar columnas

Quiero tener una columna que nos del total de ventas para cada representante y familia.

Para ello hacemos clic en la columna Representante, luego en la columna Familia y vamos a Agregar columna, Combinar columnas

Podemos añadir un separador para tener las palabras separadas por algún signo

En este caso vamos a poner Personalizado y ponemos la barra vertical |, con un espacio delante y detrás y como nombre de columna ponemos Representante / Familia

Al aceptar vemos la nueva columna

Agrupar por

Ahora vamos a consolidar los datos para ver cuántas ventas hay por representante y familia

Vamos a Inicio, Agrupar por

Quiero agrupar por Representante / Familia

No quiero el segundo nivel de agrupación: lo eliminamos con el botón de la derecha

La nueva columna quiero que se llame Total ventas, y que sume el Neto.

La tabla se ha agrupado y la suma de ventas se ha calculado

Duplicar columnas

Ahora quiero recuperar mis columnas Representante y Familia, para poder usarlas para filtrar

Selecciono la columna Representante / Familia y con el botón de la derecha la duplico

Obtengo una nueva columna que es igual

Dividir columnas

Ahora debemos sepárala en dos columnas Representante y Familia, para ello usamos el Dividir columna

E indicamos el delimitador personalizado que hemos puesto antes: espacio barra vertical espacio |

Ahora solo nos queda cambiar los títulos de las columnas para recuperar el significado original

Bien, vamos a comprobar si esto coincide con los que nos daría una tabla de Power BI

Cerramos y aplicamos

Y en una página en blanco ponemos un visual Tabla con

Tomado los campos de ventas y nos da una tabla con

Visual tabla

Y si añadimos otra visual tabla con los campos de ventas resumen

Tenemos una tabla con los mismos valores

Pero esta vez los valores vienen de una tabla ya resumida.

Función SUMMARIZE

Solo para verificar veamos como haríamos esto con SUMMARIZE

Pulsamos en Modelado, Nueva Tabla

Y usamos la función SUMMARIZE con

Tabla = SUMMARIZE(Ventas;Ventas[Representante];Ventas[Familia];”Ventas totales”;SUM(Ventas[Neto]))

Lo que nos crea una tabla resumiendo las ventas por representante y familia

Donde los valores son los mismos que hemos obtenido vía Editor de consultas

Función SUMMARIZECOLUMNS

Y una última opción es usar la función SUMMARIZECOLUMNS con Modelado, Nueva Tabla y

Tabla 2 = SUMMARIZECOLUMNS(Ventas[Representante];Ventas[Familia];”Total ventas”;SUM(Ventas[Neto]))

El resultado es el mismo

Así pues tenemos distintas herramientas para llegar a un mismo resultado. Usaremos la que necesitemos en cada momento, aunque cabe recordar que si queremos usar valores como filtros, NO pueden ser medidas, deben ser columnas.

Agrupar por directamente

También podíamos haber agrupado directamente la tabla por Representante y Familia

Sin la unión de columna y la posterior separación: depende de lo que nos interese en cada momento.

Un segmentador más elegante

En la colección de elementos visuales que se pueden añadir a Power Bi hay uno que podemos usar como segmentador, que tiene más opciones de formato e incluso pueden ponerse imágenes

Accedemos a la página de visuales Power Bi y descargamos el ChicletSlicer, y lo importamos a nuestro Power BI.

Para seguir el ejemplo he partido de la plantilla A3ERP Ventas totales detallada base que puede descargar

El visual ChicletSlicer

Una vez hemos importado el segmentador aparece como

Vamos a crear un visual de columnas agrupadas con

Lo que nos da un grafico

Para segmentar por años o meses podríamos añadir el segmentador clásico, para vamos a usar este nuevo que hemos importado

Añadimos el segmentador ChicletSlicer como

Y usamos las opciones de formato para mejorarlos, poniéndolo en horizontal, con 3 columnas

Desactivado el encabezado

Y asignado un color a las celdas: los chicles

Lo que nos da

Y también vamos a añadir un ChicletSlicer para los meses con

Y en las opciones de formato, lo ponemos en horizontal, con 3 columnas, sin encabezado y otros colores

Para obtener un cuadro de selección más elegante

Ahora tenemos un visual más claro

Y ahora con imágenes

Este visual está pensado para poder mostrar también imágenes de las categorías o filtros

Para ello vamos a crear una tabla con las imágenes que he encontrado de los años

Vamos a modelado, nueva tabla

Y llenamos una tabla con

Las imágenes corresponden a

2013: http://www.pandasecurity.com/spain/mediacenter/src/uploads/2013/12/2013.jpg

2014: http://krushkrok.com/wp-content/uploads/2015/09/2014.jpg

2015: http://www.finanzas-personales.mx/wp-content/uploads/2016/02/2015.jpg

Cambiamos el nombre de la tabla por Años y las columnas las nombramos como Año e Imagen

Y el campo Imagen, en modelado le asignamos categoría de datos: Dirección URL de la imagen

Ahora debemos relacionar nuestro campo Año de la tabla calendario con el año de la tabla Años

Añadimos de nuevo el visual ChicletSlicer y le asignamos

Lo que nos dará un segmentador como

Importante, si no asignamos valores al campo Values, no se mostrar las imágenes

El segmentador normal con imágenes

Y ya que tenemos la tabla con imágenes de los años vamos a usarla en el segmentador normal

Añadimos un segmentador

Y le ponemos

También funciona perfectamente y queda muy elegante

Así pues podemos poner imágenes en los segmentadores, siempre que sean URL y usando el segmentador normal o el ChicletSlicer

Una matriz con imágenes

Ya que tenemos las imágenes de las categorías vamos a probar con una matriz

Que con un poco de formato, nos da un visual con los años con una imagen

Un visualizador divertido

Nuestras presentaciones de BI pueden tener muchos aspectos: pueden ser muy serias y también podemos darles un aspecto divertido con el visualizador adecuado.

Por ejemplo unos peces de distintos tamaños que se mueven por la pantalla

En la galería de visuales de Power BI hay un Enlighten Aquarium que podemos descargar y agregar en nuestro panel como explico en Añadir visualizaciones.

Yo aquí he usado los datos de la plantilla A3ERP Ventas totales detallada base que puede descargar

Una vez importado el acuario se muestra en la galería de visuales como un pez de colores :

Así que manos a la obra, primero creamos las medidas

EUR = SUM(Ventas[Neto])

EUR Año anterior = CALCULATE([EUR];SAMEPERIODLASTYEAR(Calendario[Date]))

Añadimos el visualizador a una página en blanco con

Y se nos muestra un gráfico divertido: los peces se mueven y según el tamaño indican el volumen de ventas

Podemos añadir un segmentador de años, para que se aplique correctamente el EUR año anterior

Y al filtrar los peces cambian de tamaño según el importe.

En la parte de formato del visual vemos que solo admite dos series, y que una puede ser tiburones ¡!!

Quedando

No sé si será muy útil, pero vistoso y divertido sí que es ¡!!

La infografía en tus presentaciones de BI

En la galería de visuales de Power BI, hay uno muy interesante que permite dar más vistosidad a nuestros gráficos y mostrarlos en modo de infografía, como estamos acostumbrados a ver en muchos periódicos y medios.

Descargar e importar el visual

Tenemos que acceder a la página de Power BI visual, buscar el Inforgraphic Designer y haciendo clic lo podemos descargar y también un ejemplo que nos permitirá conocerlo

Una vez descargado abrimos nuestro Power BI, en este caso parto de la plantilla A3ERP Ventas totales detallada base que puede descargar

Y una vez abierta, en visualizadores pulsamos en los… para importar el archivo

Gráfico de columnas con infografía

Empecemos creando un gráfico de columnas apiladas con

Ahora cambiamos el visualizador al nuevo modelo que hemos importado

Aparentemente no cambia nada. Pero en la parte superior derecha del grafico tenemos un icono de un lápiz

Al pulsarlo se nos muestra el cuadro de diseño, donde podemos cambiar muchas opciones de configuración

Pulsamos en Shape, Trasnportation y escogemos la bicicleta

Activamos el múltiple units

Y el Units per row lo ponemos a custom y ponemos 2

Cerramos el cuadro y el grafico ha mejorado notablemente

Gráfico de barras con infografía

Creamos una nueva página y ponemos el visual Infographic Designer

Con

Usamos el lápiz para personalizar

Y al cerrar obtenemos un gráfico muy vistoso

Que además nos permite comprara fácilmente las ventas de un representante con otro por familias de productos.

Es interesante comprobar que este grafico es distinto del de barras agrupadas que podemos crear por defecto

Os sugiero que exploréis las distintas opciones del lápiz de edición pues da muchas posibilidades

Calendario instantáneo para tu Power BI

Sabemos que para usar las funciones de inteligencia de tiempo necesitamos un calendario continuo.

Y para crearlos hay varios métodos que ya he expuesto en este blog

Calendario rápido para tu Power Bi

Plantilla calendario

Ahora traigo uno más y más sencillo, basta un copiar y pegar y algunas opciones de formato.

Crear el calendario

Hemos de tener una tabla de datos en nuestro Power BI que tiene un campo fecha

Vamos a Modelado, Nueva tabla

Y copiamos este texto:

Calendario = ADDCOLUMNS (CALENDARAUTO(); “Año”; YEAR ( [Date] ); “Mes Nr”; FORMAT ( [Date]; “M” ); “Mes”; FORMAT ( [Date]; “mmmm” ); “Dia Semana Nr”; WEEKDAY ( [Date] ); “Dia semana”; FORMAT ( [Date]; “dddd” ); “Trimestre”; “T” & FORMAT ( [Date]; “Q” ) )

Y lo pegamos:

Automáticamente se crea el calendario

Formateo de columnas

Al que basta dar algunas opciones de formato

La columna date, le ponemos tipo de datos: fecha y formato fecha dd/mm/yyyy

La columna Mes la ordenados por Mes Nr.

La columna día semana la ordenamos por Día semana Nr

Y relacionamos el campo Fecha de nuestra tabla de datos con el campo Date del calendario

Creándose una relación uno a varios.

Calendario con intervalo concreto de fechas

Si queremos un intervalo concreto de fechas, en lugar de usar

CALENDARAUTO()

Ponemos CALENDAR y el intervalo de fechas que nos interese

CALENDAR (DATE(2015;1;1); DATE(2018;12;31))

Mostrar elementos sin datos

No nos compliquemos, más fácil imposible.

A veces nos puede interesar mostrar en una tabla o grafico aquellos elementos que no tienen datos, no tienen valores asociados.

Tenemos una tabla con artículos relacionada con una tabla de facturas ventas líneas

Si creamos una tabla con artículos e importes

Tendremos todos aquellos artículos que tienen valor en importe, en las líneas

Si queremos mostrar todos los artículos, aunque no tengan valor, basta ir al campo Artículo y con el botón de la derecha seleccionar: Mostrar elementos sin datos

Y ya está,

En la tabla se muestran todos los artículos aunque no tengan importes.

RECUERDE: botón de la derecha, mostrar elementos sin datos

Seleccionar una medida con un segmentador

La idea es poder crear un informe donde el usuario pueda escoger la medida a visualizar.

Lo iremos viendo paso a paso pero al final obtendremos algo así: un panel donde el usuario selecciona la medida que quiere visualizar.

O si el usuario no ha seleccionado nada: un mensaje de aviso

He obtenido ideas de Dynamically change the information within a visual via a slicer y el video Change measures using slicers in Power BI – Power BI Tips & Tricks y las he adaptado a mi informe base y el ejemplo que quiero mostrar.

Partimos de la plantilla A3ERP Ventas totales detallada base que puede descargar

Las medidas

La plantilla ya lleva la medida para las ventas, llamada EUR, pero debemos crear dos medidas más

Coste = SUMX(Ventas;Ventas[Precio Coste]*Ventas[Unidades])

Beneficio = [EUR]-[Coste]

A ambas le ponemos formato con separador de miles y cero decimales.

Con estas tres medidas podemos hacer rápidamente una tabla con los datos

Y tres gráficos

Uno para ventas

Otro para costes

Y un último para beneficios

Y si queremos podemos crear un gráfico que muestre las tres cosas juntas con una visualización de columnas agrupadas

Que nos mostraría los tres valores en un mismo grafico

Pero quiero ir más allá, y descubrir nuevas técnicas y funciones

La tabla de medidas

Debemos empezar creando una tabla de medidas con Especificar datos que podemos llenar con

Y antes de aceptar al pie le ponemos nombre a la tabla: Medidas

No olvidemos activar la ordenación por índice en la columna medida

Esto nos ha creado una tabla, que NO tiene que estar relacionada con ninguna otra, cosa que comprobamos en el editor de relaciones

La función SWITCH

Ahora usaremos la función SWITCH para elegir la medida que debe mostrarse según la selección

Creamos una nueva medida y ponemos

Medida a Mostrar = SWITCH(TRUE();

VALUES(Medidas[Medida])=”Ventas”;[EUR];

VALUES(Medidas[Medida])=”Coste”;[Coste];

VALUES(Medidas[Medida])=”Beneficio”;[Beneficio];

BLANK()

)

La función SWITH devuelve resultados diferentes en función del valor de una expresión

El primer parámetro es la expresión a evaluar, en nuestro caso ponemos TRUE(), siempre se cumple

A partir de ahí empezamos a poner parejas de valores y resultados

Esto lo podemos interpretar como

SWITCH verdadero, o sea la primea condición siempre se cumple

Si la medida es Ventas, muestra la medida EUR

Si la medida es Coste, muestra la medida Coste

Si la medida es Beneficio, muestra la medida Beneficio

En otro caso no muestres nada: BLANK()

Observe como usamos la función VALUES para saber el valor que ha sido seleccionado en la tabla medidas

El Segmentador

Creamos un segmentador con el campo Medida de la tabla medidas.

Le podemos dar formato horizontal, y ampliar la fuente y poner un color de fondo para hacerlo más agradable

El grafico vinculado a la medida

Creamos un grafico de columnas con

Y si seleccionamos una medida se nos muestra su valor

Si no hemos seleccionado nada nos da un error

La función SWITCH mejorada

Vamos a solucionar esto añadiendo algo en el SWITCH

Medida a Mostrar sin nada = IF(ISCROSSFILTERED(Medidas[Medida]);

SWITCH(TRUE();

VALUES(Medidas[Medida])=”Ventas”;[EUR];

VALUES(Medidas[Medida])=”Coste”;[Coste];

VALUES(Medidas[Medida])=”Beneficio”;[Beneficio];

BLANK()

);BLANK())

Lo interpretamos como SI, la tabla medidas tiene un filtro activo, aplica todo los del SWHITCH, en caso contrario devuelve BLANCK

Ahora si en el grafico cambiamos y ponemos la nueva medida

Y no hay nada seleccionado, no se muestra nada

El mensaje de información

El último paso será crear algo para informar al usuario que tiene que seleccionar algo, y si lo ha seleccionado mostrarle lo que esta visualizando

Creamos una nueva medida con

Titulo = IF(ISCROSSFILTERED(Medidas[Medida]);VALUES(Medidas[Medida]) & ” por Familia”;”Seleccione una opción en el filtro para mostrar el grafico”)

Lo que interpretamos como:

Si se ha filtrado medidas, escribe la medida filtrada más el texto por Familia

En caso contrario escribe: Seleccione una opción en el filtro para mostrar el grafico

Y lo añadimos a nuestra presentación con una Tarjeta

Resultado

Si no hay nada seleccionado el grafico sale en blanco y se nos avisa que debemos seleccionar

Si hay algo seleccionado se visualiza en el gráfico y se muestra como titulo

Seleccionar medidas por segmentador puede ser útil para incluir más información en una sola pantalla, dando opción al usuario a mostrar lo que necesite ver.

Nuevo modelo de matriz en versión marzo 2017

Con la actualización de marzo de 2017 han añadido a Power BI un nuevo modelo de visualizador matriz, muy mejorado y mucho más potente.

Activar el visualizador

Como es una versión preliminar primero debemos activarlo yendo a

Archivo, Opciones, Opciones y configuración, Opciones

Y en la pantalla de opciones, ir a Características de versión preliminar y activar el nuevo objeto visual matriz

Probando la nueva matriz

Vamos a probarlo con un ejemplo con la plantilla A3ERP Ventas totales detallada base que puede descargar

Añadimos el nuevo objeto visual Vista previa de la matriz y le ponemos

A simple vista, algo ha cambiado, esto nos faltan datos: las familias y los artículos

Cambiemos un poco el formato para hacerlo más legible y continuar explorando

He puesto estilo de la matriz, filas alternas con contraste

Tamaño del texto a 12, que está en el apartado cuadricula

Ha quedado más legible

NOTA: no hay fila de totales, no he encontrado forma de activarla. Esperemos que sea solo en la versión preliminar.

Explorando información con la nueva matriz

Vemos que en la parte superior aparecen unos iconos que hasta ahora no tenían las matrices, aunque si algunos gráficos

Usemos el de expandir todo un nivel en la jerarquía

Aparecen las familias

Y si lo pulsamos otra vez, aparecen los artículos

Podemos usar el icono de la flecha en la parte superior para volver a la vista original.

Ahora usemos el icono de Ir al siguiente nivel en la jerarquía

Vemos las ventas detalladas por familia

Y pulsando otra vez,, el resumen por artículos

Regresemos al primer nivel y activemos el modo detallado

Hacemos clic en un cliente, y se ven sus ventas y las de sus familias

Y si pulsamos en una familia, se detallan sus artículos

Verificando los datos

Una de las cosas que más me gustaba de las tablas dinámicas de Excel, es que si tenías un valor resumido y haces doble clic, te abría un ahoja nueva con el detalle de los elementos que componían ese resumen: esto es vital para verificar de donde viene la información.

Ahora podemos hacer algo similar.

Añadamos una tabla en nuestro informe con

Así tenemos una lista de todas las facturas

Si en nuestra matriz, hacemos clic en una cifra

Automáticamente la tabla muestra la información que la compone

De este modo el seleccionar una celda, funciona como un filtro en el resto de visualizadores de la página

Si bajamos a nivel de artículos, y seleccionamos un artículo

En la tabla de facturas se muestran solo las ventas de ese artículo

Y si seleccionamos juna columna. En este caso un año

Se ven solo las facturas de ese año

Tabla de verificación

Esto nos permite crear una tabla, y minimizarla en la parte inferior del informe para poder consultar los datos

Le he puesto un título, centrado, tamaño 18, en color negro

Y la he minimizado en la parte inferior del informe

Así, si filtramos algo

y hay duda sobre los datos lo podemos ver maximizando

Filtrando los gráficos

Y por supuesto este modo de trabajar como filtro también se aplica a los gráficos que pongamos en la página

Creemos la medida para las ventas acumuladas del año

EUR YTD = TOTALYTD([EUR];Calendario[Date])

Y le damos formato, con separador de miles y sin decimales

Añadimos un gráfico de líneas con

Y una tarjeta de varias filas con

Ha quedado un informe así:

Activamos el modo detallado y expandimos todos los niveles, para ver la tabla completa con todos sus niveles jerárquicos

MUY IMPORTANTE: desactivamos el modo detallado

Ahora ya podemos seleccionar un cliente

Y el grafico y la tarjeta muestran su información

O una familia en un cliente

O un artículo en una familia del cliente

O una celda concreta

El grafico y la tarjeta siempre se adaptan a lo que hemos seleccionado.

Considero esto un gran avance en las tablas o matrices de datos: aparte de mostrar información también permiten filtrarla

La matriz en modo clásico

Si queremos volver al modo clásico de la matriz, debemos ir a Formato, Encabezados de fila y Desactivar el diseño escalonado

Tenemos la matriz clásica, que por supuesto ocupa mucho más espacio

Conclusión: hay que estar al tanto de las actualizaciones de cada mes

Grupos, segmentos, intervalos

O como he leído en la web grouping, binning o banding.

La idea es analizar nuestra información, creando segmentos de datos, para responder a preguntas del tipo:

¿Cuantos clientes compran hasta 200.000, o 300.000, o 400.000, etc.?

¿Cuantos artículos venden 1000 unidades o 2000, etc.?

Partimos de la plantilla A3ERP Ventas totales detallada base que puede descargar

Segmentación de clientes por importes

Creamos una nueva tabla con

Y la formula

Clientes = SUMMARIZE(Ventas;Ventas[Cliente];”Total ventas”;[EUR])

Esto nos da una tabla con las ventas por cliente

En la columna Total ventas, con el botón de la derecha escogemos Nuevo grupo

Y aquí debemos definir el intervalo que nos interesa, en mi caso pongo 100000 en tamaño de la discretización y acepto

Y aparece una nueva columna que nos indica a que segmento pertenece cada cliente

Ahora podemos crear un gráfico de columnas con

Los bins en el eje, y los clientes en valores, pero le ponemos Recuento. Esto nos da un gráfico con

Vemos que solo hay un cliente que compra hasta 100000 y 5 que compran entre 100000 y 200000, y así sucesivamente.

Segmentación por artículos y unidades

Para ver como se reparten las ventas de los artículos por segmentos de unidades, creamos una nueva tabla con

Artículos = SUMMARIZE(Ventas;Ventas[Artículo];”Unidades x articulo”;sum(Ventas[Unidades]))

Lo que nos da el total de unidades vendidas por cada artículo

En la columna unidades por artículo, pulsamos con el botón de la derecha y discretizamos por 1000

Al aceptar tenemos una nueva columna con el segmento al que pertenece cada artículo

Y si lo mostramos en un gráfico de columnas

Podemos ver cuantos artículos hay en cada segmento

Más información en la documentación de Power BI o en mi artículo sobre Segmentación dinámica con DAX 1