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

En la parte 2 de esta serie hemos cargado y adecuado la data al modelo analítico que ya teníamos diseñado. Ahora corresponde crear las medidas o métricas para, después, elaborar los gráficos deseados. A las medidas suelo referirme como «cálculos de negocio» pues son exactamente eso: los números que responderán a las diversas preguntas analíticas.

Luego de diseñar el modelo y cargar los datos, el siguiente paso es crear y probar las medidas o cálculos de negocio.

Para crear esas medidas necesitamos recordar qué queremos analizar. Deseamos saber el número de casos y de fallecimientos. El «instinto natural» del usuario que viene de usar Excel, es utilizar directamente la columna «Casos» de la tabla «Contagio». Voy a mostrar qué suelen hacer: primero van a la pantalla de Reporte:

y luego seleccionan directamente la columna Casos y Fecha (supuestamente, para hacer el análisis de casos de contagio según la fecha)

Si bien el gráfico que aparece muestra valores CORRECTOS, proceder de esta manera NO ES RECOMENDABLE pues generará problemas posteriores de mantenimiento y adecuación de la solución para resolver problemas futuros o preguntas más complejas. Por ello, repito, siempre hemos de crear medidas (y validar sus resultados) ANTES de proceder a elaborar informes y gráficos. Además, usar medidas nos resulta en una solución mucho más ordenada y documentable.

Recomiendo no utilizar directamente las columnas numéricas en los gráficos; es mucho más ordenado crear y usar medidas.

Crearemos una primera medida llamada «# Casos». Prefiero usar el símbolo de número (o «almohadilla») en lugar de algo como «Número de casos», «Num Casos», «Cantidad de Casos» o variaciones por el estilo pues queda un nombre más corto y utilizable y la convención de leer «#» como «número» es harto conocida (al menos por mis lares).

La fórmula para calcular el número de casos es simplemente sumar la columna «Casos» de la tabla «Contagio». Una explicación más detallada de esta fórmula -que parece simple pero puede no serlo tanto- estará en otra serie de publicaciones referidas al lenguaje DAX.

Vayamos a Inicio y seleccionemos «Nueva Medida» como se muestra en la figura:

Botón para crear una nueva medida

Al hacer esto, aparece un espacio horizontal para escribir fórmulas. En ese espacio, después del número 1 que automáticamente aparece, escribimos como sigue:

# Casos = SUM(Contagio[Casos])
Fórmula DAX para calcular el número de casos

Recomendación: al escribir una fórmula DAX, es muy útil usar el autocompletar en lugar de escribir letra por letra toda la fórmula. Mientras uno va escribiendo aparecen sugerencias (de fórmulas o de nombres de campos y tablas). Para aceptar una sugerencia se usa la tecla TAB y -de ser necesario- se sigue escribiendo a continuación.

Apenas terminamos de escribir y apretamos la tecla ENTER, la métrica queda creada y aparece como un campo más dentro de una tabla. En mi caso, aparece dentro de la tabla «Contagio» porque al momento de crear la métrica, más propiamente, al momento de apretar el botón «Nueva Medida», la tabla «Contagio» estaba seleccionada. Es necesario saber que no importa en qué tabla esté creada la medida, funciona siempre igual.

En virtud de lo anterior, es posible -entonces- cambiar la tabla en la que la medida aparece. ¿Por qué haríamos esto? Por una razón estética, de orden, o de organización para el usuario final. Si deseamos cambiar la tabla en la que aparece la medida bastará seleccionar la medida (no hacer check en el cuadrado sino seleccionar el nombre) y luego seleccionar la tabla de destino tal como se muestra a continuación.

En mi caso, dejaré la medida en la tabla contagio. Luego de crear la medida recomiendo inmediatamente darle el formato adecuado para que aparezca adecuadamente en los gráficos que la usen. Para ello, habría que seleccionarla -igual que en el caso anterior- y modificar los valores que deseemos dentro de la opción formato que aparece encerrada en un círculo a continuación:

Como la medida «# Casos» será siempre un número entero, he seleccionado el botón marcado con una coma para que aparezca de esa manera.

Inmediatamente después de crear la medida, recomiendo darle el formato deseado. (numérico, porcentaje, fecha)

Listo, tenemos la primera medida creada. Es muy importante validar inmediatamente si esta medida funciona como se desea, es decir, da los resultados esperados. Para ello, la manera más fácil es usarla en una tabla y ver los números que allí se generan. En un gráfico es más difícil ver los valores y no siempre se puede detectar un error. En una tabla, al aparecer los valores directamente, será mucho más sencillo corregir algo. Para crear una tabla, hagamos clic como se muestra a continuación:

Vemos que los primeros casos (27) se reportaron el 31 de diciembre de 2019. Este dato será importante más adelante. Por lo demás, los cálculos parecen funcionar bien (habría que buscar -por otros medios- la cantidad de infectados a la fecha y validar que ese número asciende a 657 140, cosa que es cierta para la data que uso al escribir esta publicación). Lo que sí debe llamarles la atención es por qué utilicé el campo «Date» de la tabla «Fecha» en lugar del campo «Fecha» de la tabla «Contagio». Esto es muy importante de saber: hemos creado la tabla Fecha (dimensión Fecha) por una razón (ya explicada en la parte 1 de esta serie): queremos poder agrupar por mes, año, etc. Por ello hemos de «ignorar» el campo Fecha de la tabla Contagio y usar el de la tabla Fecha, y -del mismo modo- «ignoraremos» el campo «País» de la tabla «Contagio» y usaremos siempre el campo «País» de la tabla «País». Claro, a este punto tanto la tabla «Fecha» como la tabla «País», al tener solo una columna «útil», no marca diferencia, pero pronto añadiremos columnas a ambas.

En los gráficos, se usan las medidas y los campos de las tablas de dimensión.

Por lo expuesto, y para evitar «confundirnos» utilizando el campo incorrecto, vamos a «esconder» los campos «Fecha» y «País» de la tabla «Contagio» para utilizar siempre los de las tablas arriba referidas. Para ello, damos clic a los puntos suspensivos al costado del campo en cuestión y seleccionamos «Ocultar», como se muestra a continuación:

Hacemos lo mismo con el campo «País» de la tabla «Contagio» y ahora dicha tabla se ve así, sin las dos columnas mencionadas:

Ahora, regresando a la tabla Fecha, solo tenemos el campo «Date» para analizar. Vamos a darle más campos a la tabla para ampliar las posibilidades de análisis. Primero renombremos el campo «Date» (recordemos que se llama así porque esta tabla se creó automáticamente mediante una fórmula), y le pondremos «Fecha», como sigue:

Acto seguido, añadiremos campos como mes, año, día de la semana. Para ello crearemos nuevas columnas usando fórmulas. Damos clic en el botón «Datos» a la izquierda de la pantalla y luego seleccionamos la tabla «Fecha». Acto seguido, seleccionamos el botón «Nueva Columna», tal como se muestra a continuación:

Al hacerlo, aparecerá un cuadro de texto donde se puede escribir la fórmula. En este momento está escrito «Columna = » completamente seleccionado.

Borremos eso y escribamos la fórmula para el nombre del mes (en algunos casos, en lugar de punto y coma el separador es solamente una coma):

Mes = FORMAT(Fecha[Fecha]; "mmm")

En las fórmulas, el separador puede ser el punto y coma o la coma, dependiendo de la configuración de tu máquina.

Repitamos el proceso para crear dos columnas más: Año y Número de Mes. Esta última columna se necesita para que, al usar el nombre de mes en un gráfico, el orden del mismo no sea alfabético sino el calendario. Esto último se explica con claridad en este artículo que publiqué hace algún tiempo. Las fórmulas son las que siguen:

Numero de Mes = MONTH(Fecha[Fecha])
Año = YEAR(Fecha[Fecha])
Día = DAY(Fecha[Fecha])

Nótese que puede ser necesario seleccionar el menú «Herramientas de Tabla» para que aparezca el botón. Esto lo muestro aquí:

Luego hay que ordenar la columna «Mes» por la columna «Numero de Mes». La interfaz ha cambiado algo respecto de la fecha en la que publiqué el artículo mencionado hace un par de párrafos. Ahora hay que hacer los clics referidos aquí:

Listo. Regresemos a la vista de Reporte, y eliminemos la tabla que hicimos antes que mostraba «Fecha» y «# Casos». Construyamos ahora una tabla con «Año», «Mes» y «# Casos». Les recuerdo los pasos aquí:

Ahora, como prometimos antes, tenemos mayor «riqueza» de análisis en Fecha: mes, año, día.

Saber cuántos casos «nuevos» sucedieron en un día nos sirve para saber la «velocidad de contagio». Si el número en lugar de subir comienza a bajar, entonces significa que las cosas -relativamente- comienzan a mejorar. Sin embargo, no queremos solo saber el número de casos nuevos que ocurrieron en un día, sino sumar todos los casos desde el inicio (los 27 del 31 de diciembre de 2019 que anoté líneas arriba). Este análisis acumulado, se realiza con la siguiente fórmula DAX:

Total Casos = 
CALCULATE( 
    [# Casos]; 
    FILTER( 
        ALL(Fecha); 
        Fecha[Fecha] <= MAX(Fecha[Fecha]) 
    )
)

No es una fórmula fácil, pero explicarla escapa del alcance de este artículo. Valga decir que es muy útil, al escribir fórmulas medio complejas, usar la indentación automática que ofrece Power BI. Eso hace la fórmula más legible y hace fácil dectectar algún paréntesis o algún punto y coma mal puesto. Para escribir indentado, al final de una línea apretamos SHIFT + ENTER. Por otro lado, habrán notado que las líneas se numeran automáticamente. Eso permitiría saber en qué línea de una fórmula ocurre un error. En sus pantallas se debe ver así:

Para usar indentación al escribir fórmulas, se usa SHIFT + ENTER al final de cada línea

Luego de crear la medida y darle el formato como a las anteriores, podemos incluir ese campo en la tabla. Ahora esa tabla se ve así:

Tabla de casos diarios y acumulados

Efectivamente, verificamos que el acumulado «Total Casos» funciona perfectamente. Haremos lo mismo para crear dos nuevas medidas: «# Muertes» y «Total Muertes».

# Muertes = SUM(Contagio[Muertes])

Total Muertes =
CALCULATE(
    [# Muertes];
    FILTER(
        ALL(Fecha);
        Fecha[Fecha] <= MAX(Fecha[Fecha])
    )
)

Luego de crear las medidas y darles formato, inmediatamente después hemos de validar que funcionan bien. Para ello las incluimos en la tabla anterior. Ahora la tabla se ve así:

Listo. Algunos se habrán dado cuenta ya de que el campo «Casos» y el campo «Muertes» de la tabla «Contagio» no serán nunca utilizados en un gráfico y solo sirven para ser usados por medidas. Eso es correcto. Por ello, vamos a ocultarlos como ocultáramos antes otros campos de la tabla «Contagio». Esa tabla se vería ahora así:

Listo. Podemos elaborar algunos gráficos. Si bien no hemos planificado (importante) el diseño del dashboard, por ahora nos interesa aprovechar lo avanzado para -al fin- realizar algún análisis. Para ello, seleccionamos la tabla que estamos usando para validar nuestras medidas y la borramos:

Anoto aquí que esa tabla es uno de los muchos tipos de gráficos que existe en Power BI. Dicho de otra manera, debemos pensar en todos los objetos de Power BI como gráficos, incluso esta útil tabla es un gráfico.

En un informe de Power BI, todos los objetos (tablas numéricas incluidas) son en realidad gráficos.

Creemos un gráfico de casos nuevos por día, como sigue:

Cómo crear un gráfico de Total Casos por Fecha

Acto seguido, demos clic en un espacio en blanco del reporte (el área en blanco o lienzo que cubre toda la parte izquierda y central de la pantalla) para que no esté seleccionado el gráfico ya creado, y creemos ahora un segmentador (especie de filtro) para seleccionar un país y nos salgan los datos de ese lugar. Hagamos lo que indica la pantalla:

Si en este nuevo segmentador de País seleccionamos Perú saldrán los datos respectivos. En la siguiente imagen, he movido un poco los gráficos para que se vean uno al lado del otro.

Bien, hasta aquí llega esta tercera parte. Pueden ya crear los gráficos que deseen combinando las cuatro medidas que hemos creado hasta ahora y filtrar el país del caso. En la siguiente parte de esta serie, retomaremos desde aquí para agrupar países en Continentes e incluir la población de cada país para calcular -por ejemplo- casos por millón de habitantes.

Un comentario sobre “Cómo elaborar un Dashboard sobre el COVID-19 – parte 3

Deja un comentario