1. Faro

Nivel 7 · Una relación inactiva para las fechas de registro

La solicitud

De Samantha Price, Gerente de Marketing de Ciclo de Vida

“Además de las ventas por mes del pedido, necesito los nuevos registros por mes en el mismo informe, usando el mismo calendario. ¿Puede la tabla Date conectarse también con customers por la fecha de registro? No quiero que cambien los números de ventas.”

Tu objetivo

El modelo ya relaciona order_items → orders → customers y orders → 'Date' (todas activas), y 'Date' está marcada. Añade la relación de customers[signup_date] a 'Date'[Date], varios a uno, dirección única, y hazla inactiva para que las rutas existentes sigan funcionando.

  • Todas las relaciones que el informe necesita, bien configuradaspendiente
  • La tabla de fechas marcadapendiente

Tu modelo

Vista de 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), customers (customer_id, first_name, last_name, email, city, state, signup_date, segment, referral_source), Date (Date, Year, Quarter, Month Number, Month, Year Month, Year Quarter, Day, Weekday Number, Weekday).

Ya relacionadas: order_items[order_id] > orders[order_id] | many-to-one | single | activeorders[customer_id] > customers[customer_id] | many-to-one | single | activeorders[order_date] > 'Date'[Date] | many-to-one | single | active

Cargando el editor…

    ResultadoPresiona Comprobar para comparar tu modelo

    Mote revisa tu resultado

    Presiona Comprobar. Mote completa tu respuesta y la compara con lo que necesita el informe.

    La lección

    Un calendario puede describir varias fechas: cuándo se hizo un pedido, cuándo se envió, cuándo se registró el cliente. Una tabla Date usada así se llama dimensión con varios roles (role-playing dimension), y solo uno de sus roles puede estar activo entre las mismas tablas.

    En qué estás trabajando

    Este es un diagrama de práctica creado para este sitio; Power BI Desktop solo funciona en Windows. Las relaciones existentes están dibujadas y bloqueadas. Añade la nueva con el formulario, incluido el ajuste active; el diagrama rechaza una segunda ruta activa como lo hace Power BI.

    En Power BI Desktop: Modeling → Manage relationships → New, elige customers y signup_date, luego Date y Date, Many to one (*:1), Single, y desmarca Make this relationship active. En la vista Modelo una relación inactiva se dibuja como una línea discontinua.

    Por qué solo puede haber una ruta activa

    Traza hoy los filtros desde 'Date':

    'Date' → orders            (order_date, active)
    orders → customers?        no: filters flow from customers to orders, not back

    Pero añade customers[signup_date] > 'Date'[Date] como activa y 'Date' se relaciona tanto con orders como con customers, mientras que customers también se relaciona con orders. Ahora un filtro para marzo de 2025 podría llegar a orders directamente (pedidos hechos en marzo) o a través de customers (pedidos de clientes que se registraron en marzo). Dos respuestas a una pregunta: Power BI lo llama ruta ambigua y no la crea como activa.

    Inactiva, no inútil

    Una relación inactiva se queda en el modelo sin hacer nada hasta que una medida la pide:

    New Signups =
    CALCULATE(
        COUNTROWS(customers),
        USERELATIONSHIP(customers[signup_date], 'Date'[Date])
    )

    Dentro de ese CALCULATE la relación de registro está activa y la ruta de la fecha del pedido se aparta, así que 'Date'[Month] en las filas da los registros por mes. Todas las demás medidas siguen usando la fecha del pedido. Escribirás medidas como esta en el capítulo de DAX avanzado.

    ¿Cuál debería ser la activa?

    La que necesitan la mayoría de las medidas. Ventas, unidades y pedidos siguen la fecha del pedido, así que esa se queda activa; la fecha de registro sirve a una o dos medidas.

    Errores comunes

    • Hacerla activa de todos modos. Power BI la rechaza o apaga otra relación, y las ventas por mes cambian sin avisar.
    • Una segunda tabla Date «para evitar el problema». Funciona, pero duplica el calendario y las segmentaciones. Un calendario más USERELATIONSHIP es la respuesta habitual.
    • Olvidar que existe. Una relación inactiva nunca filtra nada por sí sola. Si un gráfico de registros muestra meses de pedidos, a la medida le falta USERELATIONSHIP.

    Elige qué puede ejecutarse en este sitio. Puedes cambiarlo cuando quieras desde "Configurar cookies", al pie de cada página.