En otras entradas, ya veníamos hablando de Power BI como herramienta de visualización de datos. Recomendamos el post que hizo nuestro compañero Jose León donde trataba las principales líneas de la visualización de datos en la herramienta. Para esta entrada, he rescatado algunas ideas que podemos implementar en nuestros cuadros de mando. ¡Vamos a ello!
1. Crear una tabla de calendario o maestro de fechas
Normalmente, debería de ser el primer paso en todo informe que se precie. Si tu base de datos tiene una columna de fechas, deberías, igualmente crear una tabla maestra de fechas para poder jugar con estas y crear distintas variaciones de la misma para explotar al máximo la información disponible.
Es bastante sencillo de implementar, ya que únicamente deberemos de acudir a la opción de “Crear Tabla” resaltada en la imagen, agregarla y marcarla como tabla de fechas.

Para crear nuestro calendario podemos utilizar dos funciones creadas a partir de DAX
- CALENDAR: esta función insertará en nuestra tabla una columna que contiene fechas continuadas en el tiempo. El intervalo de fechas puede llevar una fecha de inicio y otra de fin. Por ejemplo, para insertar todo el año 2019 utilizaríamos una función como esta que vemos a continuación:
- =CALENDAR (DATE (2019, 1, 1), DATE (2019, 12, 31))
Si queremos hacer referencia a nuestra columna de fecha insertada dentro de nuestra base de datos, a la que hemos llamado “fecha”, utilizaremos la fórmula que sigue:
- = CALENDAR([Fecha])
- CALENDARAUTO: establece una columna automática de calendario sin necesidad de tener una referencia de fecha de inicio y otra de fecha de fin. La fórmula a insertar en nuestra tabla sería la que vemos a continuación:
- =CALENDARAUTO()
Una vez creada la tabla de fechas deberemos de relacionarla con la columna “fecha” de nuestra base de datos principal, en esta captura de pantalla que vemos a continuación sería en concreto la de meses. Lo haremos desde la pestaña Modelo de nuestro libro de datos de Power BI Desktop, y arrastraremos nuestra columna de fechas hasta la de calendario para relacionarlas. Lo más común es establecer una relación 1:1 y en ambas direcciones.

Hagamos un repaso por el término de cardinalidad
- Varios a uno: es el valor predeterminado en cuanto a relación en la herramienta. En este tipo de relaciones, la columna escogida de una tabla puede tener más de un ítem (instancia) de un valor. Por su parte, la tabla relacionada solo tiene una instancia de un valor. Por ejemplo, si mapeáramos las transacciones por id de usuario, podríamos establecer este tipo de relación ya que habría varias instancias de transacción para un mismo id.
- Uno a uno: las instancias de los valores de cada una de las tablas son parejas. Siguiendo el ejemplo anterior, contaríamos con una única transacción por id de usuario.
- Relaciones de varios a varios: se suele utilizar en modelos compuestos, pudiendo establecerse varios a varios entre tablas, eliminando los requisitos de los valores únicos de las tablas, descartando valores anteriores.
En cuanto a direcciones de filtro
- Ambas direcciones: en ambas tablas se tratan como si fuera una sola tabla.
- Único: las opciones de filtrado en las tablas conectadas trabajan sobre la tabla donde se agregan los valores.
Una vez hayamos establecido las relaciones, podremos insertar columnas en nuestra tabla de datos de calendario con distintos formatos. A continuación vemos las fórmulas DAX para insertarlas en columnas dentro de la tabla de calendario.
Para obtener semanas:
- Semana = WEEKNUM(‘Calendario'[Fecha])
Para obtener días:
- Días = DAY(‘Calendario'[Fecha])
Para meses:
- Mes = MONTH(‘Calendario'[Fecha])
Para tener años:
- Año = YEAR(‘Calendario'[Fecha])
2. Distinguir entre días laborables o fines de semana
Imaginemos que nuestro producto o servicio a vender cuenta con estacionalidad en las ventas, una buena manera de extraer insights sería analizar el rendimiento de las compras realizadas, entre días laborables y fines de semana.
Nuestro aliado en este caso será la función WEEKDAY para distinguir los días de la semana. Esta función, tras insertarla en una columna calculada dentro de nuestra tabla de datos, nos devolverá un número de 1 al 7 (salvo en las de tipo 3 que va de 0 a 6). Y, que dará un valor numérico que se corresponde con la columna de fechas, que tengamos (siempre que la granularidad del dato sea diaria)
Power Bi nos permite determinar tres maneras distintas de catalogar el comienzo de semana, es decir, podemos determinar si queremos que nuestra semana empiece en domingo en lugar del lunes insertando un código numérico en la fórmula. Las opciones disponibles son las siguientes:
- Tipo 1: la semana comienza en domingo y termina en sábado
- Tipo 2: la semana comienza en lunes y termina en domingo.
- Tipo 3: la semana comienza en lunes y termina en domingo.
En nuestro caso, queremos que la semana sea la más común (de lunes a viernes), por lo que utilizaremos el tipo 2. Para esta situación, la fórmula a crear en una columna calculada dentro de nuestra tabla de datos sería la que sigue (¡Ojo! Recuerda darle un nombre distintivo a la columna)
- Laborables vs no laborables = WEEKDAY([Fecha],2)
Una vez insertada la columna con la fórmula deberíamos de contar con una columna nueva como la que vemos a continuación:

Como vemos, para cada día del año nos asigna un índice numérico del 1 a 7, siendo lunes el día 1. Para el 13 de septiembre, vemos que tenemos un valor 4 que sería jueves y para el domingo sería 7, Si validamos las fechas que vemos en la tabla con el calendario de septiembre del año pasado vemos que se corresponden perfectamente.

Fuente:Imagen Propia
¿Y cómo podemos utilizar esta fórmula en nuestros reportes? Por ejemplo, sería muy útil como control de filtros o bien como filtro a nivel de componentes en hojas separadas por si quisiéramos aislar el rendimiento de los principales indicadores. A continuación, vemos una visualización de un KPI en formato de tarjeta de resultados con el filtro de fin de semana (en este caso especificamos que es mayor o igual que 6 para que solo recoja el dato que se corresponde a sábados y domingos)

3.- Filtrar una métrica por una dimensión
Imaginemos que tienes una tabla de este tipo, donde cada una de las columnas es una métrica y necesitas aislarla por el atributo, en este caso, el país, que es una dimensión.

Para solucionar este tipo de handicaps sin tener que recurrir a reordenar los datos, podemos recurrir a la función SUMX. Eso sí, será necesario crear una métrica calculada dentro de la herramienta por cada país para sesiones y para tasa de rebote, lo que hará que tengamos que construir un total de 6 métricas calculadas.
Esta función buscará el país en la tabla de datos, a través de la función filter, y que está especificado en el primer argumento de la función, para devolvernos el valor correspondiente a la métrica. Una vez creada la métrica calculada, deberemos recordar comprobar el modelado del dato. Por ejemplo, en el caso de la tasa de rebote del ejemplo anterior, deberemos de establecer un modelo numérico de Average (promedio) y formato de porcentaje.
La función para sesiones y tasa de rebote si quisiéramos extraer Canadá serían las que siguen:
Ejemplo de función DAX SUMX para Sesiones
- Canada_Sessions = SUMX(FILTER('Tabla_basica', 'Tabla_basica'[Country]="Canada" ),'Tabla_basica'[Sessions])
Ejemplo de función DAX SUMX para Bounce Rate
- Canada_Sessions = SUMX(FILTER('Tabla_basica', 'Tabla_basica'[Country]="Canada" ),'Tabla_basica'[Bounce Rate])
Y hasta aquí estas tres ideas, la verdad es que Power BI es una herramienta llena de posibilidades.Y para ti, ¿cuáles son tus tres imprescindibles?