Uso de relaciones y cardinalidad

Completado

A diferencia de otros sistemas de administración de bases de datos, Power BI tiene el concepto de direccionalidad para una relación. Esta direccionalidad desempeña un papel importante en el filtrado de datos entre varias tablas. Al cargar datos, Power BI busca de forma automática las relaciones que existen dentro de ellos mediante la coincidencia de los nombres de columna. También puede usar Administrar relaciones para editar estas opciones manualmente.

Por ejemplo, ha recuperado muchas tablas de la base de datos Ventas y la imagen siguiente es un ejemplo del modelo semántico. Power BI ha detectado automáticamente varias relaciones, pero no puede discernir lo que significan. Quiere asegurarse de que las relaciones reflejan con precisión las que existen en los datos.

Captura de pantalla del modelo semántico de ejemplo

Relaciones

A continuación se muestran diferentes tipos de relaciones que encontrará en Power BI.

Relación de varios a uno (*:1) o de uno a varios (1: *)

  • Describe una relación en la que se tienen muchas instancias de un valor en una columna que están relacionadas con una sola instancia correspondiente en otra columna.

  • Describe la direccionalidad entre las tablas de hechos y las de dimensiones.

  • Es el tipo de direccionalidad más común y la predeterminada de Power BI cuando se crean relaciones de forma automática.

Un ejemplo de una relación de uno a varios sería entre las tablas CountryName (NombreDePaís) y Territory (Territorio), donde puede tener muchos territorios asociados a un único país.

Captura de pantalla de la relación de varios a uno.

Relación uno a uno (1:1):

  • Describe una relación en la que solo una instancia de un valor es común entre dos tablas.

  • Requiere valores únicos en las dos tablas.

  • No se recomienda porque esta relación almacena información redundante y sugiere que el modelo no está diseñado correctamente. Se recomienda combinar las tablas.

Un ejemplo de relación uno a uno sería si tuviera productos e identificadores de producto en dos tablas diferentes. La creación de una relación uno a uno es redundante y estas dos tablas se deben combinar.

Captura de pantalla de la relación de uno a uno.

Relación de varios a varios (.):

  • Describe una relación en la que muchos valores son comunes entre dos tablas.

  • No requiere valores únicos en ninguna de las tablas de una relación.

  • No se recomienda; la falta de valores únicos genera ambigüedad y es posible que los usuarios no sepan a qué hace referencia cada columna de valores.

Por ejemplo, en la imagen siguiente se muestra una relación de varios a varios entre las tablas Sales (Ventas) y Order (Pedido) por la columna OrderDate (FechaDePedido), porque varias ventas pueden tener varios pedidos asociados. Se genera ambigüedad porque las dos tablas pueden tener la misma fecha de pedido.

Captura de pantalla de una relación de varios a varios.

Dirección de filtro cruzado

Los datos se pueden filtrar en uno o en los dos lados de una relación.

Con una dirección de filtro cruzado única:

  • Solo se puede usar una tabla de una relación para filtrar los datos. Por ejemplo, la Tabla 1 se puede filtrar por la Tabla 2, pero la Tabla 2 no se puede filtrar por la Tabla 1.

    Sugerencia

    Siga la dirección de la flecha de la relación entre las tablas para saber en qué dirección fluirá el filtro. Normalmente querrá que estas flechas apunten a la tabla de hechos.

  • En el caso de una relación de uno a varios o de varios a uno, la dirección del filtro cruzado será desde el lado "uno", lo que significa que el filtrado se producirá en la tabla que tiene muchos valores.

Con ambas direcciones de filtro cruzado o el filtrado cruzado bidireccional:

  • Una tabla de una relación se puede usar para filtrar la otra. Por ejemplo, se puede filtrar una tabla de dimensiones a través de la tabla de hechos y las tablas de hechos se pueden filtrar a través de la tabla de dimensiones.

  • Es posible que el rendimiento sea menor al usar el filtrado cruzado bidireccional con relaciones de varios a varios.

Una advertencia con respecto al filtrado cruzado bidireccional: las relaciones de filtrado cruzado bidireccionales no se deben habilitar a menos que se comprendan totalmente las consecuencias de hacerlo. Si se habilitan, se pueden provocar ambigüedades, sobremuestreos, resultados inesperados y una posible degradación del rendimiento.

La cardinalidad y la dirección del filtro cruzado

En el caso de las relaciones uno a uno, la única opción disponible es el filtrado cruzado bidireccional. Los datos se pueden filtrar en cualquier lado de esta relación y generar un valor distinto e inequívoco. Por ejemplo, puede filtrar por un identificador de producto y obtener un único producto, y puede filtrar por un producto y obtener un identificador de producto único.

En el caso de las relaciones de varios a varios, puede elegir filtrar por una sola dirección única o las dos mediante el filtrado cruzado bidireccional. La ambigüedad asociada con el filtrado cruzado bidireccional se amplifica en una relación de varios a varios porque existen varias rutas entre diferentes tablas. Si crea una medida, un cálculo o un filtro, se pueden producir consecuencias no deseadas en las que se filtran los datos y, en función de la relación que elija el motor de Power BI al aplicar el filtro, el resultado final podría ser diferente. Esta situación también se produce con las relaciones bidireccionales y es un motivo para tener cuidado al usarlas.

Por esta razón, las relaciones de varios a varios o las relaciones bidireccionales son complicadas. A menos que esté seguro del aspecto que tienen los datos al agregarlos, estos tipos de relaciones abiertas con varias direcciones de filtrado pueden generar varias rutas en los datos.

Creación de relaciones de varios a varios

Imagine un escenario en el que se le encarga crear un objeto visual que examine los presupuestos de clientes y cuentas. Puede tener varios clientes en la misma cuenta y varias cuentas con el mismo cliente, por lo que sabe que tendrá que crear una relación de varios a varios.

Captura de pantalla de la relación de varios a varios.

Para crear esta relación, vaya a Administrar relaciones>Nueva. En la ventana que se abre, cree una relación entre la columna Customer ID (Id. de cliente) en CustomerTable (TablaDeClientes) y AccountTable (TablaDeCuentas). La relación se establece en varios a varios y el tipo de filtro es bidireccional. Se le advertirá inmediatamente de que solo debe usar este tipo de relación si se espera que ninguna de las columnas tenga valores únicos, ya que podría obtener valores inesperados. Como quiere filtrar en ambas direcciones, elija filtrado cruzado bidireccional.

Seleccione Aceptar. Ahora ha creado correctamente una relación de varios a varios.

Captura de pantalla de la relación de varios a varios en Administrar relación.

Para obtener más información, vea Relaciones de varios a varios en Power BI.