Instrucciones para relaciones bidireccionales
Este artículo está dirigido a modeladores de datos que trabajan con Power BI Desktop. Le proporciona instrucciones sobre cuándo crear relaciones de modelo bidireccionales. Una relación bidireccional es aquella que se filtra en ambas direcciones.
Nota
En este artículo no se incluye una introducción a las relaciones de modelo. Si no está familiarizado con las relaciones, sus propiedades o cómo configurarlas, se recomienda que primero lea el artículo Relaciones de modelos en Power BI Desktop.
También es importante que conozca el diseño del esquema de estrella. Para más información, vea Descripción de un esquema de estrella e importancia para Power BI.
Por lo general, se recomienda minimizar el uso de relaciones bidireccionales. Esto se debe a que pueden afectar negativamente al rendimiento de las consultas del modelo y, posiblemente, ofrecer experiencias confusas para los usuarios del informe.
Sin embargo, hay tres escenarios en los que el filtrado bidireccional puede resolver requisitos específicos:
- Relaciones de modelos especiales
- Opciones de segmentación "con datos"
- Análisis de dimensión a dimensión
Relaciones de modelos especiales
Las relaciones bidireccionales desempeñan un rol importante al crear los dos tipos de relaciones de modelos especiales siguientes:
- Uno a uno: todas las relaciones uno a uno deben ser bidireccionales; no es posible ninguna otra configuración. En general, no recomendamos crear estos tipos de relaciones. Para obtener una explicación completa y patrones de diseño alternativos, consulte la guía de relación uno a uno .
- De varios a varios: cuando se relacionan dos tablas de dimensión, se requiere una tabla puente. Se requiere un filtro bidireccional para asegurarse de que los filtros se propagan a través de la tabla de puente. Para obtener más información, consulte Guía de relación de varios a varios.
Opciones de segmentación "con datos"
Las relaciones bidireccionales pueden proporcionar segmentaciones de datos que limiten las opciones a dónde existen los datos. (Si está familiarizado con las tablas dinámicas y segmentaciones de Excel, es el comportamiento predeterminado al obtener datos de un modelo semántico de Power BI o de un modelo de Analysis Services). Para ayudar a explicar lo que significa, considere primero el siguiente diagrama de modelos.
La primera tabla se denomina Customer
., y contiene tres columnas: Country-Region
, Customer
y CustomerCode
. La segunda tabla se denomina Product
y contiene tres columnas: Color
, Product
y SKU
. La tercera tabla se denomina Sales
y contiene cuatro columnas: CustomerCode
, OrderDate
, Quantity
y SKU
. Las tablas Customer
y Product
son tablas de dimensiones y cada una tiene una relación uno a varios con la tabla de Sales
. Cada relación filtra en una sola dirección.
Para facilitar la descripción de cómo funciona el filtrado bidireccional, se ha modificado el diagrama del modelo para mostrar las filas de la tabla. Todos los ejemplos de este artículo se basan en estos datos.
Los detalles de las filas de las tres tablas se describen en la siguiente lista con viñetas:
- La tabla
Customer
tiene dos filas:CustomerCode
CUST-01,Customer
Customer-1,Country-Region
Estados UnidosCustomerCode
CUST-02,Customer
Customer-2,Country-Region
Australia
- La tabla
Product
tiene tres filas:SKU
CL-01,Product
T-shirt,Color
GreenSKU
CL-02,Product
Jeans,Color
BlueSKU
AC-01,Product
Hat,Color
Blue
- La tabla
Sales
tiene tres filas:OrderDate
1 de enero de 2019,CustomerCode
CUST-01,SKU
CL-01,Quantity
10OrderDate
2 de febrero de 2019,CustomerCode
CUST-01,SKU
CL-02,Quantity
20OrderDate
3 de marzo de 2019,CustomerCode
CUST-02,SKU
CL-01,Quantity
30
Ahora suponga la siguiente página de informe.
La página se compone de dos segmentaciones y un objeto visual de tarjeta. La primera segmentación se basa en el campo Country-Region
, y tiene dos opciones: Australia y United States. Actualmente se segmenta por Australia. La segunda segmentación se basa en el campo Product
y tiene tres opciones: Hat, Jeans y T-shirt. No se selecciona ningún elemento (lo que significa no se filtra ningún producto). El objeto visual muestra una cantidad de treinta.
Cuando los usuarios de informes segmentan por Australia, es posible que desee limitar la segmentación de productos para mostrar opciones en las que los datos se relacionan con las ventas australianas. Esto es lo que se entiende por mostrar las opciones de segmentación "con datos". Puede lograr este comportamiento estableciendo la relación entre las tablas Product
y Sales
para filtrar en ambas direcciones.
La segmentación de productos muestra ahora una única opción: T-shirt. Esta opción representa el único producto vendido a los clientes australianos.
En primer lugar, se recomienda considerar detenidamente si este diseño funciona para los usuarios del informe. Algunos usuarios informan de que la experiencia les resulta confusa porque no entienden por qué las opciones de segmentación aparecen o desaparecen dinámicamente cuando interactúan con otras segmentaciones.
Si decide mostrar opciones de segmentación "con datos", no le recomendamos que establezca relaciones bidireccionales. Las relaciones bidireccionales requieren más procesamiento y, por tanto, pueden afectar negativamente al rendimiento de las consultas, especialmente a medida que aumenta el número de relaciones bidireccionales en el modelo.
Hay una mejor manera de conseguir el mismo resultado: en lugar de usar filtros bidireccionales, puede aplicar un filtro de nivel visual a la propia segmentación de productos.
Consideremos ahora que la relación entre las tablas Product
y Sales
ya no filtra en ambas direcciones. Además, se ha agregado la siguiente definición de medida a la tabla Sales
.
Total Quantity = SUM(Sales[Quantity])
Para mostrar las opciones de segmentación de productos "con datos", simplemente hay que filtrar por la medida Total Quantity
utilizando la condición "no está en blanco".
Análisis de dimensión a dimensión
Un escenario diferente que implica relaciones bidireccionales trata una tabla de hechos como una tabla puente . De este modo, admite el análisis de datos de tabla de dimensiones dentro del contexto de filtro de una tabla de dimensiones diferente.
Mediante el modelo de ejemplo en este artículo, considere cómo se pueden responder las siguientes preguntas:
- ¿Cuántos colores se vendieron a clientes australianos?
- ¿Cuántos países/regiones compraron pantalones vaqueros?
Ambas preguntas pueden responderse sin resumir los datos en la tabla de hechos de puente. Sin embargo, requieren que los filtros se propaguen de una tabla de dimensiones a la otra. Cuando los filtros se propagan a través de la tabla de hechos, el resumen de las columnas de la tabla de dimensiones puede lograrse utilizando la función DISTINCTCOUNT de DAX, y posiblemente las funciones DAX MIN y MAX. DAX.
Como la tabla de hechos se comporta como una tabla puente, puede aplicar la guía de relaciones de varios a varios para relacionar dos tablas de dimensiones. Requerirá configurar al menos una relación para filtrar en ambas direcciones. Para obtener más información, consulte Guía de relación de varios a varios.
Sin embargo, como ya se describió en este artículo, es probable que este diseño tenga un impacto negativo en el rendimiento y que el usuario experimente consecuencias relacionadas con las opciones de segmentación "con datos". Por lo tanto, le recomendamos que active el filtrado bidireccional en una definición de medida utilizando la función DAX CROSSFILTER en su lugar. Puede usar la función CROSSFILTER para modificar las direcciones de filtro (o incluso deshabilitar la relación) durante la evaluación de una expresión.
Tenga en cuenta la siguiente definición de medida agregada a la tabla Sales
. En este ejemplo, la relación modelo entre las tablas Customer
y Sales
se ha configurado para filtrar en una dirección única.
Different Countries Sold =
CALCULATE(
DISTINCTCOUNT(Customer[Country-Region]),
CROSSFILTER(
Customer[CustomerCode],
Sales[CustomerCode],
BOTH
)
)
Durante la evaluación de la medida Different Countries Sold
, la relación entre las tablas Customer
y Sales
se filtra en ambas direcciones.
El siguiente objeto visual de tabla presenta estadísticas para cada producto vendido. La columna Quantity
es simplemente la suma de valores de cantidad. La columna Different Countries Sold
representa el recuento distinto de valores de región de país de todos los clientes que han comprado el producto.
Contenido relacionado
Para obtener más información sobre este artículo, consulte los recursos siguientes:
- Relaciones de modelos en Power BI Desktop
- Descripción de un esquema de estrella e importancia para Power BI
- Instrucciones para relaciones uno a uno
- Instrucciones para relaciones de varios a varios
- Instrucciones para solución de problemas de relaciones
- ¿Tiene alguna pregunta? Intente preguntar a la comunidad de Fabric.
- ¿Sugerencias? Contribuir con ideas para mejorar Fabric