Hoy en Grupo Dapen vamos a ver cómo gestionar la relación de muchos a muchos en el programa Power BI.
Video
Cómo crear tabla puente en Power BI para obtener una relación muchos a muchos entre dos tablas
Si vamos a la vista de Tabla podemos observar la tabla Budget que contiene en su campo Region duplicados.

Igualmente, la tabla Sales, la tabla de hechos, en su campo Region también contiene duplicados.

Intentamos desde la vista del modelo relacionar la tabla Budget y la tabla Sales por el campo Region, moviendo un campo sobre el otro.

Observaremos que nos aparece un mensaje en pantalla indicando que esta relación tiene una cardinalidad de muchos para muchos.
Esto solo se debe usar si se espera que ninguna columna (Region y Region) contenga valores únicos y que se entienda el comportamiento significativamente diferente de las relaciones de muchos a muchos.

Lo que vamos a hacer es no relacionarlas de esta manera creando una tabla puente para evitar ese mensaje.
Es por ello por lo que crearemos esta tabla puente para poder conectar eficazmente varias tablas sin tener este tipo de problemas de duplicados o de relaciones complicadas.
Crear una tabla puente
Usaremos para ello una función UNION para combinar las regiones de ambas tablas y deberemos tener en cuenta que hay que evitar los duplicados que vamos a obtener porque tenemos las mismas regiones en las dos tablas.
Para evitar esa circunstancia con la función DISTINCT utilizaremos esta función y además tendremos que asegurarnos de no tener blanks o vacíos para lo cual usaremos la función FILTER para filtrar cualquier región que sea distinta a blank.
Para ello accedemos a Modelado y dentro de Modelado vamos a crear una Nueva Tabla. Vamos a aplicar un poco de zoom con Ctrl+. A esta tabla la vamos a llamar Bridge Region.

Hacemos un salto de carro con Alt+Enter y creamos variables. Una primera variable SalesRegion que va a ser justo con VALUES de nuestra tabla Sales la columna de Region. Esto son valores únicos de la columna Region de nuestra tabla Sales. Aplicamos Alt+Enter.
Una segunda variable que va a ser BudgetRegion. También utilizamos VALUES para quedarnos solamente con los valores únicos de la columna Región de nuestra tabla Budget.
El nombre de las variables puede ser el que queramos y los nombres de las variables no pueden contener espacios en blanco.
Vamos a crear una tercera variable, llamada, por ejemplo, Combine. Esta variable va a utilizar la función UNION para combinar las regiones de ambas tablas.
Abrimos paréntesis y nos pide la Tabla1 y le pasamos justo la variable BudgetRegion y de la Tabla2 le vamos a pasar la variable SalesRegion. Cerramos paréntesis y Alt+Enter, salto de carro. Imprimimos con un RETURN, otro salto de carro el uso con la función DISTINCT, justo para devolver una tabla con una sola columna que contenga valores distintos en una columna para este argumento. Abrimos paréntesis y aquí utilizamos el filtro con la función FILTER utilizando la tabla Combine, que viene a ser la variable anterior y en la expresión del filtro lo que vamos a hacer es que el campo de la Región sea distinto a Blank, controlando la situación antes comentada. Abrimos y cerramos paréntesis para el Blank y cerramos el paréntesis de la función FILTER y de la función DISTINCT. Aplicamos Enter.

Ahora vamos a poder conectar desde la vista del Modelo (aparecerá aquí la nueva tabla, la tabla Bridge Region), vamos a poder conectar Region de la tabla puente con el campo Region de la tabla Budget, será una relación de uno a muchos, guardamos;


y también con el campo Region de la tabla Sales, será una relación de uno a muchos, guardamos.


Con esto, cualquier filtro que venga aplicado a la tabla puente Bridge Region, va a ser capaz de filtrar la tabla Budget como igualmente la tabla Sales y habremos tenido ya la solución para evitar ese conflicto que surge al tener relaciones de muchos a muchos.

Esto ha sido la explicación de cómo crear una tabla puente en Power BI para evitar este tipo de conflictos.