¡Hola! Soy Pablo Deheza, trabajo como BI & Analytics
Consultant en PI Data Strategy & Consulting desde hace más de dos años, y
desde que empecé a usar Power BI me sentí intrigado por su versatilidad y
potencial a la hora de crear reportes. Me enfrento constantemente a situaciones
que me hacen investigar y llevar al límite la capacidad de esta herramienta,
por lo que cada día está lleno de posibilidades de aprendizaje (y por qué no,
entretenimiento), que me hacen disfrutar más mi trabajo.
Pero basta de intro, vamos a lo que nos compete.
Hace unos días, un usuario nos solicitó que un gráfico de líneas que muestra a nivel diario la cantidad de visitas a un reporte de Power BI, permita distinguir fácilmente entre las visitas realizadas los días de semana y las correspondientes a los fines de semana. La solución resultó ser muy sencilla, pero no tan intuitiva; por lo que se nos ocurrió hacer un breve post para compartirlo con la comunidad.
Buscamos colorear en un gráfico de líneas los marcadores (círculos) con un color diferente al de la línea y al de otros marcadores pertenecientes a la misma, bajo una condición dada. En palabras más técnicas, debemos darle formato condicional a los marcadores del grafico de líneas. En este caso, esa condición era marcar aquellos días calificados como Fin de Semana (Weekend) para que visualmente sea más rápido y sencillo identificarlos. Entonces, ¿cómo lo solucionamos?
Antes de empezar, cabe aclarar que en este post usaremos la solución para marcar Fines de Semana, pero el alcance es inmenso (Colorear Máximo, Mínimo, feriados, etc.)
Para esta solución crearemos una medida que nos dará como resultado los colores que nosotros deseemos ver en nuestro gráfico. Les voy a mostrar dos soluciones diferentes, la primera será utilizando una columna que nos indica si el día es perteneciente a la semana o al fin de semana. En la segunda, será para cuando carecemos de esta, y por una u otra razón no queremos/podemos crearla. De todos modos, en la segunda opción, necesitaremos como mínimo una columna que nos devuelva el nombre de cada día.
Solución 1:
Aquí utilizaremos una columna, en este caso será la columna llamada IS_WEEKDAY, que nos devuelve False, cuando el día es sábado o Domingo y True para el resto de los días.

Crearemos una medida compuesta por dos variables, en la primer variable alojaremos el valor de nuestra columna con la función SELECTEDVALUE(). Nuestro grafico estará a nivel de día, por lo tanto, el contexto de esta variable esta dado por cada día representado en nuestro gráfico. Luego utilizaremos el valor de esta variable en un simple IF() que nos devolverá como resultado el código hexadecimal del color deseado.
La medida final es la siguiente:
Is Week Day =
VAR _weekday =
SELECTEDVALUE( DIM_DATE[IS_WEEKDAY] )
VAR _result =
IF(
_weekday = FALSE(),
"Red",
"#717bc5"
)
RETURN
_result
NOTA:
El Hexadecimal puede ser reemplazado en los colores base por su nombre.
Solución 2:
Si no tenemos creada una columna como en el caso anterior, nos basaremos en otra columna que será la del nombre del día (asumimos que esta es esencial en una tabla calendario). De esta forma podremos saber qué días del mes corresponden a sábado y domingo. El proceso es prácticamente igual a la solución uno, la diferencia radica en que en este caso tendremos que crear la condición de que los días sábado y domingo sean clasificados como fines de semana dentro de la medida. Guardaremos en una variable el valor del nombre del día con la función SELECTEDVALUE() como lo hicimos anteriormente con IS_WEEDAY. Luego, utilizaremos el valor de la variable nuevamente en un IF() obteniendo el siguiente resultado:
Is Week Day =
VAR _dayname =
SELECTEDVALUE( DIM_DATE[DAY_NAME] )
VAR _result =
IF(
OR( _dayname = "Sat", _dayname = "Sun" ),
"Red",
"#717bc5"
)
RETURN
_result
Luego de esto procederemos a aplicar cualquiera de nuestras soluciones como formato condicional de color a un gráfico de barras, ya que los gráficos de línea no tienen esta opción disponible. Lo haremos de la siguiente forma:


Obtendremos un gráfico como el siguiente:

Estarán pensando "Pero el título del post dice grafico de líneas…", he aquí la frutilla del postre. El paso final es simplemente seleccionar el grafico de barras y cambiarlo por un gráfico de líneas, obteniendo lo siguiente:

Como pueden ver, el formato condicional se mantuvo a pesar de que la visualización por defecto no lo permite. De este modo podemos incorporar el formato condicional en el gráfico de líneas.
¡Espero les haya servido y gustado la solución!
¡Nos vemos la próxima!
Escrito por Pablo Deheza