La solicitud

De Chris Morgan, Responsable de merchandising
Tu objetivo
El diagrama tiene order_items, orders, products y Category Targets (una fila por categoría). order_items → orders ya está dibujada. Dibuja las dos relaciones que faltan como quiere un esquema en estrella: order_items a products, y products a Category Targets por category. Elige la cardinalidad correcta, una sola dirección, activa.
- Todas las relaciones que el informe necesita, bien configuradaspendiente
Tu modelo
Las tablas del modelo: order_items (order_item_id, order_id, product_id, quantity, unit_price, discount_pct, line_total), orders (order_id, customer_id, order_date, status, channel, shipping_fee, coupon_code), products (product_id, name, category, subcategory, unit_price, unit_cost, launched_on, is_active), Category Targets (category, target_2025).
Ya relacionadas: order_items[order_id] > orders[order_id] | many-to-one | single | active
Cargando el editor…
Solución de referencia
Mote revisa tu resultado
Presiona Comprobar. Mote completa tu respuesta y la compara con lo que necesita el informe.
Lo que recibe Chris, y por qué
La lección
Las relaciones son donde un modelo es rápido o lento, claro o ambiguo. Dos ajustes causan la mayoría de los problemas: la cardinalidad muchos a muchos y la dirección de filtro cruzado Both.
Dónde estás trabajando
Esta página es un diagrama de modelo de práctica, no Power BI. Añades relaciones con el formulario bajo el lienzo (o como líneas de texto), y el verificador compara tu diagrama con el esperado, relación por relación. Como Power BI, rechaza un lado de “uno” cuyos valores se repiten.
En Power BI Desktop: Vista de modelo (Model view), arrastra una columna sobre la columna correspondiente y luego haz doble clic en la línea (o Modelado → Administrar relaciones → Nueva; Modeling → Manage relationships → New) y fija la Cardinalidad (Cardinality) y la Dirección del filtro cruzado (Cross filter direction). Una dirección es Única (Single); en ambos sentidos es Ambas (Both).
Muchos a uno, no muchos a muchos
Category Targets tiene seis filas, una por categoría: su columna category es única. Muchos productos
comparten una categoría. Eso es exactamente muchos a uno: products (muchos) a Category Targets (uno).
Muchos a muchos es para cuando ninguno de los lados es único. Power BI entonces no puede usar una simple búsqueda de una fila a muchas; tiene que averiguar qué valores coinciden en ambos lados en cada consulta. Los totales también pueden verse mal: un valor del lado de “muchos” que coincide con varias filas del otro lado puede contarse en cada una, y el total general no es la suma de las filas. Cuando un lado es único, elige muchos a uno. Cuando ninguno lo es, una pequeña tabla puente con una fila por valor suele convertir el muchos a muchos en dos relaciones de muchos a uno.
Single, no Both
Con Single, los filtros fluyen del lado de uno al lado de muchos: elige una categoría en la tabla de metas, products se filtra, las líneas de pedido se filtran. Es todo lo que necesita un esquema en estrella.
Con Both, los filtros fluyen también hacia atrás, de los hechos a las dimensiones. Parece cómodo, y causa tres problemas:
- Velocidad. Cada filtro se extiende ahora en más direcciones, así que el motor hace más trabajo en cada visual, y el modelo se vuelve más lento a medida que crecen las tablas.
- Números sorprendentes. Elige un producto y la tabla de metas se filtra a su categoría, así que una tarjeta de “meta total” muestra de pronto la meta de una categoría.
- Ambigüedad. Con varias relaciones bidireccionales puede haber dos caminos entre las mismas tablas. Power BI se niega a activar un segundo camino, y los modelos acaban con relaciones inactivas que nadie entiende.
Cuando una medida realmente necesita que un filtro viaje hacia arriba, mantén la relación en Single y activa el filtrado en ambos sentidos solo para ese cálculo:
Customers Who Bought = CALCULATE(DISTINCTCOUNT(customers[customer_id]),
CROSSFILTER(orders[customer_id], customers[customer_id], Both))
Errores comunes
- Muchos a muchos porque una columna tiene repeticiones en un lado. Mira el otro lado: si es único, es muchos a uno.
- Both en todas partes después de que una segmentación pareciera no funcionar. Normalmente faltaba una relación.
- Relacionar products con metas por nombre. Relaciona por la columna por la que se definen las metas: category.
¡Linterna encendida!
Practicaste: relationshipcross filter directionbidirectionalmany to manystar schemaperformance
- Resuelto
- Sin pistas
- Al primer intento
