Administrar relaciones entre tablas en Power BI Desktop
Al importar los datos en Power BI Desktop, sabemos que es importante contar con un modelo capaz de responder a las preguntas del negocio y es por lo que las relaciones entre las tablas deben estar bien definidas, ya que ellas nos ayudan a mostrar resultados claros en los informes. Power BI Desktop facilita la creación de relaciones realizando una detección automática durante la carga, estableciendo cardinalidad, dirección de filtro cruzado y activación de relación, sin embargo, sabemos que es posible que estas deban ser modificadas o crear nuevas relaciones no identificadas, es por ello por lo que resulta importante saber crearlas o editarlas.
Para crear relaciones basta con:
- Dirigirnos a la sección de Modelo en Power BI Desktop.
- Seleccionar la columna a relacionar.
- Arrastrar hasta la columna de la tabla con la que debería existir relación.
- Una vez que se muestren líneas punteadas de color amarillo alrededor de la columna a relacionar, soltamos y veremos que la relación ha sido creada.
Si se requiere modificar alguna característica de la relación, debemos posicionarnos en la línea de relación, dar clic derecho y seleccionar propiedades. Con ello se nos abrirá una nueva ventana en donde podremos editar características definidas en la relación.
Otra opción es utilizar el Manage Relationships ubicado en la parte superior de la sección Modelo, en donde podrá seleccionar las tablas a relacionar y la columna por la cual estas se relacionan, así como definir la cardinalidad, tipo de filtro cruzado y si esta relación debe o no estar activa.
Descripción de las relaciones y sus componentes
Las relaciones de Power BI, propagan el filtro que se aplica en las columnas de las tablas de un modelo hacia otras tablas, usando la dirección definida en dicha relación, sin embargo, esta relación puede deshabilitarse o se puede modificar el contexto de filtro utilizando funciones DAX.
Para establecer una relación se debe configurar principalmente la Cardinalidad, la dirección de filtro cruzado y la activación de dicha relación.
1. Cardinalidad
Las relaciones que existen de una tabla a otra deben definirse con un tipo de cardinalidad, las cuales podrían ser:
- Uno a Varios (1:*)
- Varios a Uno (*:1)
- Uno a Uno (1:1)
- Varios a Varios (*:*)
En donde el lado “Uno” significa que la columna relacionada tiene valores únicos y el “Varios” que la columna tiene valores duplicados.
Como lo mencioné al inicio del artículo, Power BI detecta automáticamente relaciones en el modelo y establece la cardinalidad con la dirección de la propagación del filtro.
2. Dirección de Filtro Cruzado
Las relaciones del modelo se definen con una dirección de filtro cruzado las cuales dependen del tipo de cardinalidad:
Único: Esta dirección es la más común, la cual significa que el filtro viaja en una única dirección hacia la otra tabla.
Para este ejemplo vemos que al filtrar una columna (Nombre) de la tabla productos la propagación, nos dará como resultado la información de venta de dicho producto.
Ambos: Esta dirección implica que la relación entre las tablas viaje en ambos sentidos, es también conocida como “Bidireccional”.
Para este ejemplo vemos, que antes de activar el bidireccional, al seleccionar un código de producto proveniente de la tabla de Ventas no impacta en los nombres de producto.
Si procedemos a activar el bidireccional, veremos que al seleccionar el mismo código de producto anterior, afecta y filtra los nombres provenientes de la tabla productos.
La opción Ambos permite que Power BI Desktop, trate todas las variables de las tablas conectadas como si fueran una sola tabla, sin embargo, existen situaciones en las que Power BI Desktop no puede establecer la dirección de filtro cruzado bidireccional, y ello suele ser porque se crearía ambigüedad, por lo que será necesario asignar una relación única y definir que tabla filtrará a la otra.
El filtrado cruzado bidireccional funciona bien con un modelo estrella, similar al siguiente:
Sin embargo, no sucede lo mismo si trabajamos con un modelo como el siguiente:
Podemos ver como al intentar activar el bidireccional entre productos y tabla de ventas Detalle, nos sale un mensaje advirtiendo que esto no es posible, debido a que podría ocasionarse ambigüedad en los datos.
Si tiene un modelo como este, con bucles, el filtro cruzado puede crear un conjunto ambiguo de relaciones. Por ejemplo, si activará todos los bidireccionales, al sumar un campo de Tabla Ventas y aplicar un filtro usando un campo de la tabla detalle, no será claro cómo o por dónde debe viajar el filtro.
Si bien en un modelo estrella no hay problemas de ambigüedad, se recomienda minimizar el uso de bidireccionales ya que pueden afectar negativamente al rendimiento de la consulta que necesitemos realizar al modelo, sin embargo, existe una función DAX llamada CROSSFILTER, la cual permite modificar las direcciones de filtro durante la evaluación de alguna expresión en donde se requiera la habilitación o incluso inhabilitación de la dirección del filtro.
3. Activación de Relación
La activación de relación define si debe o no existir propagación de filtro entre una y otra tabla. Solo puede existir una relación activa entre dos tablas del modelo, sin embargo se pueden generar más relaciones inactivas y activarlas durante la evaluación de una expresión utilizando la función USERRELATIONSHIP
Conclusiones
En esta entrada se intentó cubrir los componentes más importantes al momento de establecer una relación entre tablas dentro del modelo de Power BI desktop, así como conocer características propias de cada componente. Para mayor información sobre la administración de relaciones puede dirigirse al siguiente enlace.
¿Buscas soluciones para tus datos? Cuéntanos cómo podemos ayudarte aquí, o conversemos por info@kaitsconsulting.com. Da el primer paso para conectar con tu información de una manera eficaz y te ayudaremos a lograr resultados asombrosos.
Sobre el autor:
July Torres es Ingeniera de sistemas y consultor BI en Kaits Consulting.