La solicitud

De Jessica Moore, Analista de Marketing
Tu objetivo
La matriz tiene orders[channel] en las filas y una segmentación 'Date'[Year Month] en 2025-12. Crea una medida llamada Big Order Sales: Sales de los pedidos completados cuyo propio Sales supera 500. Usa CALCULATE con FILTER sobre VALUES(orders[order_id]).
- Llena
[Big Order Sales]en cada fila del visualpendiente - También la fila Total correctapendiente
Tu medida
- Visual
- A matrix: rows = orders[channel]; values = [Sales], [Big Order Sales]
- Segmentaciones
- 'Date'[Year Month] = 2025-12
- Medidas del informe
Sales = CALCULATE(SUM(order_items[line_total]), orders[status] = "completed")
Panel de datos: tablas y columnas
- 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
- customers customer_id, first_name, last_name, email, city, state, signup_date, segment, referral_source
- returns return_id, order_item_id, returned_on, reason, refund_amount
- Date Date, Year, Quarter, Month Number, Month, Year Month, Year Quarter, Day, Weekday Number, Weekday
Cargando el editor…
Solución de referencia
| channel | Sales | Big Order Sales |
|---|---|---|
| app | $130,426 | |
| marketplace | $45,739 | |
| web | $112,181 | |
| Total | $288,346 |
Mote revisa tu resultado
Presiona Comprobar. Mote completa tu respuesta y la compara con lo que necesita el informe.
Lo que recibe Jessica, y por qué
La lección
Un filtro booleano como orders[status] = "completed" prueba una columna. La condición de Jessica
es distinta: un pedido cuenta cuando su total supera $500, y el total es una medida calculada
a partir de muchas líneas de pedido. Para eso necesitas un filtro de tabla construido con
FILTER.
En qué estás trabajando
Esta página ejecuta un motor DAX de práctica creado para este sitio. Evalúa tu medida en cada
celda de la matriz y la comprueba. En Power BI Desktop: Home → New measure, escribe la fórmula
y añade junto a la matriz una segmentación sobre 'Date'[Year Month] en 2025-12.
FILTER devuelve una tabla
FILTER(VALUES(orders[order_id]), [Sales] > 500)
VALUES(orders[order_id])devuelve los ID de pedido visibles en el contexto de filtro actual: un canal, un mes. Es una tabla de una columna.FILTER(table, condition)es un iterador: evalúa la condición una vez por fila y conserva las filas donde es verdadera.[Sales] > 500se evalúa para un pedido a la vez. Cuando una medida se llama dentro de un iterador, DAX convierte primero la fila actual en un filtro (transición de contexto), así que[Sales]ve solo las líneas de ese pedido.
El resultado es una tabla de ID de pedido. Pasada a CALCULATE, se convierte en un filtro como cualquier otro:
Big Order Sales =
CALCULATE(
[Sales],
FILTER(VALUES(orders[order_id]), [Sales] > 500)
)
¿Por qué no un filtro booleano?
CALCULATE([Sales], [Sales] > 500) se rechaza: un filtro booleano debe tratar de columnas, y
[Sales] es una medida cuyo valor depende del contexto. Y order_items[line_total] > 500 es un
filtro válido que responde otra pregunta: conserva líneas caras, así que un pedido de $550
hecho de dos artículos más baratos queda fuera.
Itera la tabla más pequeña
FILTER hace trabajo real por cada fila que visita. Aquí visita como mucho unos 330 pedidos de
diciembre por celda. FILTER(order_items, …) con una medida dentro visitaría cada línea de
pedido, cada una con su propia transición de contexto, que es lo que hace que los informes se
arrastren. VALUES de una columna clave del lado «uno» da la misma respuesta con muchos menos
pasos. El mismo consejo vale en Power BI: nunca hagas FILTER de toda una tabla de hechos cuando
basta una columna.
Errores comunes
- FILTER(orders, …) en lugar de VALUES(orders[order_id]). Da el mismo número aquí, pero itera
filas enteras y convierte cada columna de
ordersen un filtro. Es más pesado, y se vuelve difícil de predecir cuando otras medidas empiezan a quitar filtros. Una columna clave basta. - Usar la medida fuera de CALCULATE.
FILTER(…)sola es una tabla, no un número. Tiene que ir dentro de CALCULATE (o de una función como COUNTROWS). - Probar líneas en lugar de pedidos. Lee el ticket: «pedidos de más de $500» trata de totales.
¡Linterna encendida!
Practicaste: filtervaluescalculatecontext transitiontable filter
- Resuelto
- Sin pistas
- Al primer intento
