En este post vamos a comentar la nueva funcionalidad de Power BI que nos permite hacer agrupaciones de filtros sincronizados entre sí para producir un efecto cascada hacia arriba y hacia abajo en los filtros de nuestro informe.

Explicación del problema con demo

Vamos a comenzar exponiendo la problemática: en ocasiones, cuando estamos modelando una solución de un cliente, nos encontramos con que ésta es muy compleja debido a los distintos niveles de granularidad que pueden existir y que puede provocar que no todas las dimensiones tengan todos los hechos asociados.

Cuando llegamos a este punto, en el que tenemos un enjambre de dimensiones y hechos con relaciones many-to-one, many-to-many, filtrado en una dirección, filtrado bidireccional, relaciones activas, relaciones inactivas… puede ser que tengamos problemas a la hora de añadir los filtros a nuestro informe, ya que éstos no van a tener el comportamiento que el usuario desearía debido a las complicadas relaciones existentes en el modelo provocadas por los distintos niveles de granularidad.

La solución a este problema que proponemos en este blog es una sincronización entre los slicers, jugando con las ocultaciones y la creación de grupos de filtros. Lo veremos más detalladamente en el siguiente apartado.

Para entender mejor el problema, vamos a explicarlo con un ejemplo en el que partimos de un modelo muy sencillo compuesto por 5 dimensiones (País, Almacén, Cliente, Producto y Empleado) y 1 tabla de hechos (Ventas).

Diagrama de relaciones del modelo de demo
Figura 1. Diagrama de relaciones del modelo de demo

 

Si vamos a nuestro informe y ponemos una gráfica que muestre el total de la línea por producto y añadimos filtros de país, almacén y empleado, tenemos lo siguiente:

Filtros y visualización de la demo
Figura 2. Filtros y visualización de la demo

 

Como vemos en el diagrama de relaciones (Figura 1), es de esperar que, si filtro por país, el filtro de almacenes me muestre únicamente aquellos almacenes que pertenecen a ese país. Hasta aquí todo correcto, pero ¿qué ocurre si en lugar de filtrar un país lo hacemos por un almacén? Lo que ocurriría en este caso es que el filtro de almacén no nos va a filtrar los países, ni por supuesto los empleados.

Una posible solución sería la creación de una relación both entre país y almacén. Sin embargo, debido a la complejidad del modelo, ésta solución a veces no es posible porque se crean relaciones circulares, además de ser costosas en cuanto a rendimiento se refiere.

El filtro de almacén no afecta al resto de filtros
Figura 3. El filtro de almacén no afecta al resto de filtros

 

Este es un caso que en muchas ocasiones los usuarios quieren corregir porque no quieren tener la posibilidad de seleccionar países que no corresponden al almacén seleccionado, por ejemplo. Para ello, proponemos la solución que estamos comentando en la que, como vemos en la siguiente imagen, los filtros tienen efecto los unos sobre los otros, facilitando la validación del dato al usuario y el manejo del informe.

El filtro de almacén sí afecta al resto de filtros. Filtrado en cascada
Figura 4. El filtro de almacén sí afecta al resto de filtros. Filtrado en cascada

 

De esta forma, el usuario puede ver de un vistazo que, el almacén plata únicamente está en Estados Unidos y que en él han trabajado Brenda Díaz, Juan Roca y Miguel Severino.

 

Explicación de la solución con demo

La solución que aquí proponemos es la creación de una tabla auxiliar aplanada en la que figuren todos los campos que deben filtrar el informe. Los campos de esta tabla serán los que usaremos en los filtros visibles de nuestro informe y, por detrás, estarán trabajando de manera sincronizada y oculta los filtros con los campos reales del modelo. Este efecto se consigue gracias a las opciones avanzadas de la sincronización de filtros que, como informa Microsoft:

“Esta función te permite crear un grupo personalizado de filtros para mantenerlos sincronizados. Se proporciona un nombre predeterminado, pero se puede usar cualquier otro nombre. El nombre del grupo proporciona flexibilidad adicional con los filtros. Puedes crear grupos separados para sincronizar los filtros que usan el mismo campo, o ponerlos para que usen diferentes campos en el mismo grupo.”

De esta manera, el usuario filtrará por un campo, y el resto de filtros visibles del informe se filtrarán acorde a la selección realizada ya que en esta tabla auxiliar se habrá generado un registro por cada una de las combinaciones posibles. De esta manera, implementamos un filtrado en cascada en nuestro informe.

Tabla auxiliar aplanada llamada “Filtros”
Figura 5. Tabla auxiliar aplanada llamada “Filtros”

 

Para conseguir el comportamiento en cascada deseado en los filtros, tenemos que jugar con la ocultación de filtros en el informe. Cada filtro estará duplicado en el informe, pero uno será visible y el otro no.

En la siguiente imagen podemos apreciar los filtros que van a componer nuestro informe.

    • En verde tenemos los campos de nuestra tabla auxiliar aplanada.
    • En rojo tenemos los campos que pertenecen a las tablas que se relacionan entre ellas.
Filtros que van a componer el informe
Figura 6. Filtros que van a componer el informe

 

A continuación, se selecciona cada par de filtros y se le asigna el mismo nombre al grupo. De esta manera, todos los filtros que tengan como nombre de grupo “Employee” se filtrarán entre sí.

    • En el lado izquierdo tenemos la asignación al filtro procedente de la tabla auxiliar aplanada.
    • En el lado derecho tenemos la asignación al filtro de la tabla procedente de DWH.
Creación de los grupos de filtros
Figura 7. Creación de los grupos de filtros

 

Después de repetir este procedimiento con las otras parejas de filtros (asignando un nombre de grupo diferente a cada una de ellas), tendremos el siguiente comportamiento en el que, al seleccionar un valor en algún filtro de los que están en la parte inferior, se filtran el resto de campos, tanto en sentido ascendente como descendente, teniendo así nuestro comportamiento en cascada.

Comportamiento de los filtros en el informe
Figura 8. Comportamiento de los filtros en el informe

 

Por último, solo nos queda ocultar los filtros procedentes del DWH que son los que verdaderamente filtran el dato, es decir, las visualizaciones. Los filtros procedentes de la tabla auxiliar aplanada solo se filtran entre sí. Ellos por sí solos (sin la creación de las agrupaciones) no tendrían ningún efecto sobre el informe.

Resultado final con los filtros que aplican a la visualización ocultos
Figura 9. Resultado final con los filtros que aplican a la visualización ocultos
0 Shares:
2 comments
  1. Hola!, es posible conseguir este mismo efecto en los filtros al seleccionar un valor en algún gráfico, es decir si en el gráfico selecciono la barra de Estados Unidos, que en el filtro muestre los almacenes que pertenecen a este país?

  2. Hola Óscar.

    Siento decirte que no es posible conseguir el efecto de que un elemento visual (barra de Estados Unidos) filtre un elemento slicer.

    Lo que podrías hacer es convertir tu slicer de almacenes en una tabla y, aplicándole formato, llegar a conseguir que se parezca visualmente a un slicer. De esta forma sí conseguirías ver los almacenes que pertenecen a ese país y podrías tener el “slicer” (tabla) en tu zona de filtros. Problema de esto: no podrás conseguir el checkbox que tiene el slicer por defecto.

    Un saludo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

You May Also Like
Leer más

Cómo refrescar un dataset de Power BI al finalizar el proceso de ETL

Power BI dispone de ciertas herramientas de administración: APIs administrativas, un SDK .NET y un módulo de PowerShell con cmdlets que permiten a los administradores ir más allá de lo que el portal de Power BI Admin ofrece. Vamos a ver las diferencias entre la API y los cmdlets y después mostraremos cómo usarlos en un caso práctico: resfrescar el dataset tras un evento, en este caso al finalizar la carga del datawarehouse.