Cómo elaborar un Dashboard sobre el COVID-19 parte 5

En la parte 4 de esta serie hemos aprendido a modificar consultas ya existentes y agregamos más campos al modelo para hacer más rico el análisis. También creamos medidas adicionales. Ahora vamos a elaborar una página con un dashboard para analizar la información.

Lo primero que tenemos que manejar es la nomenclatura. Lo que realmente vamos a crear en Power BI Desktop se llama Informe («Report»). En Power BI, la palabra dashboards se refiere a «Panel» y crea solamente desde la web. Revisaremos definiciones más formales posteriormente.

En Power BI Desktop se crean Informes. Desde la página web (Power BI Service) se crean los Paneles.

Como primer paso, deberíamos planear cómo se verá el informe: qué graficos incluir y dónde ponerlos. Para acortar esa discusión (el detalle será materia de otra publicación fuera de esta serie), digamos que la primera página del informe responderá a la pregunta «¿cuál es la situación mundial?» y la distribución será como sigue:

A la izquierda, en línea vertical, irán siete indicadores generales (#casos, casos por millón, etc.). En la parte central superior estará el filtro de continentes. Habrá nueve gráficos (tres filas de tres en el centro del informe) que presentarán la información detallada por fecha. Finalmente, en la parte superior derecha estará el logo y la fecha de actualización del informe.

Es muy importante planear cómo se verá el informe antes de comenzar a construirlo

Si desean elaborar esto, han de saber que puse color gris de fondo a la página sobre la cual jalé los gráficos. Ese color permite alinear mejor los gráficos. Luego podríamos quitarlo si no nos gusta. Los siguientes párrafos mostrarán cómo lo hice pero no es necesario elaborarlos para seguir el paso a paso.

Aquí comienza una sección opcional

Para poner el color de fondo seleccionemos cualquier parte de la hoja en blanco del informe y sigamos los pasos marcados:

Luego de seleccionar el color, bajemos la transparencia a 0%:

Ya con la página de color gris, colocamos gráficos (vacíos) según la leyenda a continuación:

Para más detalle, amplío aquí la parte derecha del gráfico para que se aprecie mejor qué gráficos seleccioné:

Les tomará un poco de tiempo alinear los gráficos. Para ello, aconsejo prendan la opción de «Ajustarse a la grilla» («Snap to Grid») para que dicho alineamiento sea más fácil:

Aquí termina la sección opcional

Comencemos por el gráfico de arriba a la izquierda. El gráfico es una tarjeta («Card»). Pongamos ahí la medida «Total Casos» y démosle tamaño 30 al número que ahí aparece:

Acto seguido, pongamos tamaño 10 al título que aparece debajo del número.

Finalmente, en la sección «General», démosle la posición y tamaño siguientes:

Listo, con esto tenemos el gráfico de la esquina superior izquierda. Copiemos ese gráfico 6 veces. Preocupémonos de que todas las copias estén «más a la derecha» de la primera y que una de ellas, esté en la esquina inferior izquierda así como se muestra:

Para alinearlos, seleccionemos con Control + click todos los gráficos comenzando por el de arriba, y en el menú Formato los alineamos a la izquierda:

Inmediatamente después, sin perder la selección de todos los gráficos, en el mismo menú seleccionamos «Distribuir verticalmente»:

Listo. Con eso nuestras tarjetas quedan perfectamente alineadas y distribuidas en el informe. Falta asignar la medida adecuada a cada gráfico (porque hasta ahora todos muestran el mismo valor). Seleccionemos el segundo gráfico, y pongamos ahí «Total Casos por millón» reemplazando la medida que hasta ahora se mostraba:

Del mismo modo, sigamos el reemplazo hacia abajo. Desde la tercera hasta la sexta gráfica las medidas serían: # Casos, Total Muertes, Total Muertes por Millón, # Muertes. Con ello queda como se ve.

La sétima gráfica sigue siendo copia fiel de la primera. Pongamos ahí una medida nueva que sería el porcentaje de fallecidos respecto de los infectados (no olvidar dar a la medida el formato de porcentaje):

% Total Muertes vs Casos = [Total Muertes] / [Total Casos]

Después de reemplazar esa métrica en la sétima gráfica, observamos que hay valores «repetidos» (la primera con la tercera, por ejemplo). Lo que ocurre es algo muy simple: como no hemos especificado a qué fecha queremos ver el reporte, se está tomando todas las fechas existentes y -para el rango total de fechas- las métricas «# casos» y «Total Casos» valen lo mismo. Podemos validar que no hay filtros aplicados pasando el mouse por encima del ícono del embudo que está en la parte superior de cada gráfica:

El ícono del embudo es útil para saber qué filtros están aplicados sobre un gráfico. Ayuda a entender por qué aparece el valor que se muestra.

Validemos esto agregando temporalmente un filtro de fecha a la página:

Seleccionemos el 28 de mayo tanto para fecha inicio como para fecha fin:

Los siete gráficos se ven como se muestra:

Ya no hay valores «repetidos» y los cálculos muestran información relevante al día seleccionado. Dos gráficos particulares: «# Casos» y «# Muertes» muestran información del día específico y el resto (precedidos por la palabra «Total») muestran acumulados desde el inicio de la data hasta ese día.

Sigamos. Pongamos el filtro de Continente arriba, en la parte central, como un filtro horizontal:

Luego, un poquito más abajo de la sección «Orientación» marcada con el número 5 en el gráfico anterior, asegurémonos de tener correctamente la posición y tamaño del filtro:

Finalmente, apagamos la cabecera del filtro por ser redundante: es evidente que son continentes por ello no necesitamos que aparezca la palabra «Continente» encima.

Ahora el informe se ve como sigue, y podemos seleccionar un continente para ver los valores respectivos. Aquí seleccioné «South America»:

Muy bien. Comencemos ahora con los gráficos que van al centro. Para tener una guía, las tres columnas serán de casos, muertes y rankings (e.g. países con más casos). Para las dos primeras columnas, las filas horizontales serán de totales, unidades por millón, y unidades diarias. Para la última columna será casos, muertes y porcentaje de casos vs muertes. Esto se resume en el esquema siguiente:

El primer gráfico sería entonces Total Casos y lo veremos por fecha. Al seleccionar la métrica, y la fecha (de la tabla fecha), el gráfico se presenta así:

Sale una sola barra correspondiente al único día seleccionado: 28 de mayo de 2020. Si cambiamos el filtro para seleccionar -por ejemplo- desde el 1 de mayo hasta el 28 de mayo, obtendremos esto:

Ahora el gráfico de barras tiene más información para mostrar, pero los indicadores de la izquierda de «# Casos» y «# Muertes» ya no indican los valores de un día sino el acumulado de todo mayo (desde el 1 hasta el 28). El resto de gráficos -si bien son afectados por el mismo rango de fechas- debido a la fórmula de cálculo presentan el valor acumulado histórico hasta el último día seleccionado (28 de mayo). ¿Qué hacer? Podríamos -por ejemplo- evitar que el rango de fechas afecte a esos dos gráficos particulares (usando algo llamado «Editar Interacciones») pero esa solución – materia de otro artículo- me parece poco elegante. ¿Qué tal si -mejor- cambiamos el gráfico de tarjeta por el de KPI para esos dos casos? El gráfico llamado «KPI» tiene un comportamiento particular que observaremos a continuación. Primero hagamos el cambio: seleccionemos el tercer gráfico («# Casos») y cambiamos el tipo de gráfico a KPI:

Luego agregamos el campo Fecha de la tabla Fecha en el «Eje de tendencia» («Trend Axis»)

Luego cambiamos el tamaño de los números:

Listo, con ello ahora el tercer indicador se ve así:

Al margen de formatos, el valor (34 323 en la foto) es el número de casos para el último día del rango especificado en el filtro (el último día es el 28 de mayo). El valor ya no es más el acumulado de esos 28 días. Además, el gráfico gris que se muestra detrás del número indica la evolución día a día de dicho valor. Este gráfico KPI tiene otra particularidad: si se agrega un objetivo, entonces se podrá pintar verde o rojo según el valor esté por encima o no de dicho objetivo. Para poner dicho objetivo , podríamos especificar los casos ocurridos el día anterior; de este modo, si un día hay menos casos que el día que lo precede entonces el semáforo estaría en verde (porque este día fue «mejor» al haber menos contagios); caso contrario sería rojo. Creemos primero la medida para calcular los casos del día anterior; la fórmula es:

# Casos Ayer = 
CALCULATE( 
   [# Casos], 
   DATEADD(Fecha[Fecha], -1, DAY)
)

Añadamos esa fórmula al gráfico de KPI en la parte de objetivo («Target Goals»)

Con ello, el gráfico ya pinta un color pero el tamaño de las letras y título no deja apreciarlo bien:

Entonces seleccionemos este gráfico y demos un mejor formato. Primero cambiemos el título

El tamaño del texto lo pondremos en 10 puntos:

Con el mismo gráfico seleccionado, buscamos la sección «Objetivos» («Goals») y achicamos la letra de los mismos.

Finalmente, en la sección «Código de Colores» («Color coding») establecemos la dirección: bajo es bueno. Es decir, si el número de hoy es menor que el número de ayer, entonces el indicador debe estar en verde.

Con eso el indicador se ve como sigue:

Eso significa que en el último día del rango de fechas seleccionado (28 de mayo en este caso) , hubo 34 323 casos de contagio lo cual fue 21.68% más que el día anterior (27 de mayo), día en el que hubo 28 208 casos. Por haber más casos que el día anterior se pinta de rojo. El signo que precede al 21.68% se controla en la sección Objetivos («Goals»). Voy a cambiar el valor para que el signo diga que estar por encima del objetivo debe llevar un signo positivo («Increasing is positive»). Muestro a continuación la sección respectiva pero con las pantallas puestas lado a lado para que vean la ubicación de la configuración mencionada.

Listo. Apliquemos los mismos pasos al sexto gráfico (# Muertes) usando la siguiente métrica para calcular las muertes del día anterior:

# Muertes Ayer = 
CALCULATE(
   [# Muertes], 
   DATEADD(Fecha[Fecha], -1, DAY)
)

Con ello, el gráfico se ve ahora así:

Lo único que queda sería modificar esa palabra «Goal» que está abajo del número principal. Objetivo no es la mejor palabra aquí. Mejor que diga «Ayer». Esa configuración está, nuevamente, en la sección «Objetivo» («Goal»). Solo hay que escribir la palabra «Ayer» en la siguiente sección:

Con ello, y después de hacer lo mismo para el tercer gráfico, el informe se ve así (recordemos que el filtro de fechas está ahí de manera temporal):

Avancemos. Copiemos y peguemos el gráfico de barras que ahora tenemos para tener 3 gráficos. Luego, como hiciéramos antes con las tarjetas, alineemos esos gráficos a la izquierda y los distribuimos verticalmente para que se vea así:

En el segundo gráfico, en lugar de tener «Total Casos» pongamos «Total Casos por millón» y en el tercero «# Casos». Para ello – recordemos – solo hace falta seleccionar el gráfico y arrastrar la medida correcta:

Acto seguido, copiemos los tres gráficos de barras para armar una segunda fila vertical:

Reemplacemos las medidas, como antes, para mostrar -en orden- Total Muertes, Total Muertes por millón, y # Muertes respectivamente. Nos queda así:

Corrijamos los seis títulos para quitar las palabras «por Fecha» («by Fecha») por ser redundante: es evidente en el gráfico que la vista es por fecha. Quedaría así:

Notamos también que los ejes presentan un título igual de redundante, marcado en rojo a continuación:

Para eliminarlos, vayamos a la configuración de los ejes y apaguemos el título (no basta con apagar el eje). Aquí se muestra la configuración para el eje X (pantallas lado a lado). Hagan lo mismo para el eje Y:

Finalmente, apaguemos el eje Y y encendamos las etiquetas de datos para que salgan los números encima de las barras:

Con ello, los gráficos se ven como sigue: (nótese que solo el gráfico de arriba a la izquierda presenta las modificaciones, el resto no)

La manera más rápida de aplicar el mismo formato a los seis gráficos es usando la brochita (la que existe en Office «toda la vida»). Entonces, seleccionamos el gráfico que ya tiene el formato deseado (el de arriba a la izquierda), seleccionamos la brochita, y luego damos clic al gráfico al que queremos aplicar el formato, tal como se numera a continuación:

Luego de repetir esta operación para los cinco gráficos, el informe se ve así:

Construyamos ahora el primer gráfico de rankings. Para ello, usemos las opciones que a continuación muestro:

Por si quieren alinearlo como muestro en la figura, la posición y tamaño de ese gráfico se muestra a continuación:

El gráfico se ve ahora así:

Como antes, apaguemos el título de los ejes, apaguemos el eje X y prendamos las etiquetas de datos configurándolas para que se expresen en miles y no en millones (sección «Display Units»):

Ahora se ve así:

Listo. Repitamos el procedimiento de copiar y pegar este gráfico hacia abajo, alinearlos y distribuirlos verticalmente (he ubicado el filtro de fechas temporalmente arriba a la derecha):

Tal como dice nuestro plan original, adecuemos el segundo de estos gráficos para que muestre «# Muertes» y el último «% Total Muertes vs Casos». Luego de adecuar los títulos y las unidades (para que no salgan en miles) se ve así:

Una oportunidad de mejora -para mi- es utilizar el código de tres letras del país en lugar del nombre. El nombre de país tiene longitudes distintas y podría llevar a confusión (e.g. cuando solo se muestran las primeras letras se puede confundir «United States» vs «United Kingdom»). Si usáramos el campo «Codigo3Letras» de la tabla país, esta confusión no se daría y se vería así:

Cambiemos el filtro de fecha pues -según mi parecer- no debería ser necesario pedir la fecha al usuario sino mostrar directamente los últimos 60 días (o 45 o lo que se desee). Vamos a reemplazar el filtro que está como un control y aplicar el filtro directamente en el panel «Filtros».

Entonces, eliminemos el gráfico de filtro y abramos el panel de filtros (flecha roja):

La eliminación del filtro provoca que los gráficos se vean «raros». Sucede que al no limitar las fechas, la última fecha disponible en la base de datos (en la tabla Fecha que está en el eje) es el 31 de diciembre de 2020. Y al no tener data desde hoy hasta esa fecha, sale una línea plana. En seguida lo resolveremos. Jalemos el campo fecha de la tabla fecha al panel de filtros donde dice: «Filtros en esta página»:

Luego seleccionamos «Fecha Relativa»:

Y ahí seleccionamos los últimos 60 días (sin incluir hoy).

Luego de aplicar el filtro, el cuadro se ve como sigue (los valores pueden cambiar según la fecha en la que ustedes construyan el mismo):

Este filtro tiene la particularidad de actualizarse cada día. De esa manera, el usuario no tiene que seleccionar qué fecha estamos para mostrar la data y siempre mostrará los últimos 60 días.

Un filtro de fecha relativa, se actualizará automáticamente conforme pasen los días.

Vamos ahora a mostrar la fecha de actualización de la data. Esta fecha no es más que la última fecha de la tabla Contagio. Pongamos el gráfico tarjeta arriba a la derecha:

El campo fecha aparece en gris a la derecha porque está oculto. Si no lo pueden ver, habiliten la opción siguiente:

La posición y el tamaño del gráfico para la fecha de actualización es la que sigue:

Como vemos, además del tamaño de letra que es muy grande, podemos corregir el formato de la fecha misma para que no diga el día de la semana sino directamente dd/mm/yy. Esto se hace dando formato al campo mismo, no al gráfico:

Finalmente, asegurémonos de que se muestre la fecha más reciente:

Listo. Apaguemos la etiqueta de categoría, y pongamos un título:

Terminemos poniendo tamaño 14 puntos a la fecha en sí:

Listo. Ahora con el menú «Insertar» selecciono la opción «Imagen», pongo mi propio logo (ponga usted el suyo o jale el mío desde mi página de facebook) y obtengo el siguiente resultado:

Listo. Tenemos ya un informe utilizable, listo para publicar. Hay algunas mejoras que hacer en el formato pero lo importante es que ya funciona y funciona bien. Recordemos que para actualizar la data basta ir al menú «Inicio» opción «Refrescar»:

Hasta aquí llega esta publicación. Seguiremos luego construyendo otras hojas de este informe no sin antes llevarlo a la web y al celular y hacer que se actualice automáticamente.

Deja un comentario