[PowerBI] Efecto visual sobre las cards para “rellenarlas” o “vaciarlas”

Hola, ¿cómo están? Soy Guido y trabajo en el área de BI en PI Data Strategy & Consulting hace casi un año. A lo largo de los años me fui interesando más en los aspectos visuales y como, con algunos cambios y un poco de creatividad, podemos llamar la atención de los usuarios finales a la hora de crear nuestros reportes.

En esta oportunidad les quiero compartir una técnica sencilla para jugar con las formas y poder generar un efecto de relleno sobre las cards de un tablero que tienen uno o mas elementos de un slicer seleccionado.

Para ir al ejemplo les doy un poco mas de contexto. En el siguiente slicer vas a ver varios ítems para elegir que están relacionados con cada una de las cards en forma de burbujas que veras después.

image

La idea de esto es generar un efecto que genere que las burbujas se rellenen, dejando las no seleccionadas vacías, de la siguiente manera:

image

Estas burbujas las creé a partir de formas, dejando la visual adelante. Normalmente para generar un efecto de relleno tendríamos que crear una medida para el formato y configurarla en la parte del relleno de la forma. De esa forma podemos agregarle una condición para que responda y cambie de color en caso de que el ítem relacionado a esa card este seleccionado.

Para ello podríamos crear, para cada card, una condición que valide si el ítem seleccionado corresponde a la card o no. Por ejemplo:

Formato_seleccion_60_dias =
VAR _filtro =
    SELECTEDVALUE ( Partidas_Abiertas_CxP[Anticuacion] )
RETURN
    IF ( _filtro = "60 días", "#E6E6E6", "#FFFFFF00" )

Y luego agregarlo como condición en el relleno de la forma.

image

De esta manera podemos generar un efecto al tener seleccionada la opción de "60 días"

image

EL PROBLEMA

Hasta ahí todo perfecto, el problema surge cuando hay más de una opción seleccionada.

La función SELECTEDVALUE resolvía bien el caso anterior donde solo había una opción seleccionada. El problema surge cuando hay más de una opción seleccionada.

Para eso vamos a explicar como funciona con un ejemplo:

Creamos una medida de filtro:   

Filtro = SELECTEDVALUE ( Partidas_Abiertas_CxP[Anticuacion] )

image

Pero al seleccionar 2 o más ítems, la salida de filtro por defecto es BLANK(). Con lo cual esto no nos va a permitir rellenar más de una burbuja a la vez.

image

LA SOLUCIÓN

Si queremos que funcione para más de una selección una solución posible es crear una medida utilizando la siguiente función:

Siguiendo con el ejemplo, Vamos a crear tantas medidas de formato como valores tengamos dentro de ese filtro (en el caso del ejemplo son 5). Tiene que rellenar la burbuja (#E6E6E6) y sino dejarla transparente (#FFFFFF00). Una de las medidas que usamos para dar este formato es la siguiente:

_formato_seleccion_anticuacion_60_dias =
IF (
    "60 dias" IN VALUES (Partidas_Abiertas_CxP[Anticuacion])
    , "#E6E6E6"
    , "#FFFFFF00"
 ) 

Luego de crearla, la asignamos el tipo de dato como texto:

image

Y luego la configuramos como condición dentro del relleno de la forma:

image

image

Finalmente se puede ver que cada burbuja se rellena en función de la selección del campo

image

Y cuando no hay filtro de anticuación seleccionado (all), rellena todas las burbujas:

image

Espero que les sirva el tip y puedan aplicarlo pronto. Les dejo un ejemplo de la solución en el Github público de Pi.

Escrito por Guido Maroneo,