Nivel 1 · Ingresos línea por línea con SUMX
¿Es nuevo para ti? Lee primero el concepto: Iteradores, contexto de fila y transición de contexto
0 de 3
La solicitud

De Laura Mitchell, Controladora financiera
Tu objetivo
La matriz tiene products[category] en las filas y una segmentación deja solo los pedidos completados. Crea una medida llamada Net Revenue que sume, para cada línea de pedido, order_items[quantity] × order_items[unit_price] × (1 − order_items[discount_pct] / 100). No uses line_total.
- Llena
[Net Revenue]en cada fila del visualpendiente - También la fila Total correctapendiente
Tu medida
- Visual
- A matrix: rows = products[category]; values = [Net Revenue]
- Segmentaciones
- 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
| category | Net Revenue |
|---|---|
| Decor | |
| Furniture | |
| Kitchen | |
| Lighting | |
| Outdoor | |
| Textiles | |
| Total |
Mote revisa tu resultado
Presiona Comprobar. Mote completa tu respuesta y la compara con lo que necesita el informe.
Lo que recibe Laura, y por qué
La lección
SUM solo puede sumar una columna que ya existe. Laura quiere un número que ya no existe como
columna: cantidad × precio × (1 − descuento) en cada línea de pedido, y luego la suma. Ese es el
trabajo de un iterador.
Dónde estás trabajando
Esta página es un informe de práctica, no Power BI: Power BI Desktop solo funciona en Windows. El
motor DAX que está detrás de la matriz se creó para este sitio y sigue las reglas de Power BI, así
que la medida que escribas aquí funciona igual allí. En Power BI Desktop: selecciona order_items
en el panel Datos (Data), Inicio → Nueva medida (Home → New measure), escribe la fórmula,
pulsa Enter y arrastra la medida al pozo Valores (Values) de la matriz.
SUMX: calcula en cada fila y luego suma
Net Revenue =
SUMX(
order_items,
order_items[quantity] * order_items[unit_price] * (1 - order_items[discount_pct] / 100)
)
SUMX(tabla, expresión) recibe dos argumentos:
- La tabla que se recorre. Aquí
order_items, ya filtrada por la celda: la fila Kitchen solo le deja ver las líneas de Kitchen de los pedidos completados. - Una expresión que se evalúa una vez por fila. Dentro de ella,
order_items[quantity]significa “la cantidad de esta fila”. Esa vista por fila se llama contexto de fila, y solo los iteradores (y las columnas calculadas) lo crean.
SUMX suma después los resultados de cada fila. AVERAGEX, MINX, MAXX y COUNTX funcionan igual y terminan con otra agregación.
Por qué SUM × SUM está mal
El atajo tentador es SUM(order_items[quantity]) * SUM(order_items[unit_price]). Multiplica el
total de unidades de la categoría por el total del precio de todas las líneas, un número miles de
veces demasiado grande. Los totales solo se pueden multiplicar cuando todas las filas tienen el
mismo multiplicador. Los precios y los descuentos cambian de una línea a otra, así que la
multiplicación tiene que ocurrir primero dentro de cada línea.
Los descuentos se guardan como porcentajes
discount_pct guarda 15 para un descuento del 15 %, así que la línea conserva 1 - 15 / 100 = 85 %
de su precio. Si olvidas el / 100 obtienes 1 - 15 = −14, y los ingresos se vuelven negativos en
cada línea con descuento.
¿Por qué no conservar line_total?
Guardar una columna calculada cuesta memoria en cada fila y queda desactualizada si cambia la
lógica. Un SUMX sobre las columnas de origen se calcula al consultar, a partir de las columnas que ya
cargas. Además no se redondea por línea, así que tu total de Kitchen quedará a un dólar o poco más de
SUM(order_items[line_total]). Esa diferencia es el redondeo del ERP, no un error.
Errores comunes
- Multiplicar sumas. Agrega después de la operación por fila, nunca antes.
- Una columna sola en una medida.
order_items[quantity] * order_items[unit_price]fuera de un iterador no tiene ninguna fila de la que leer y falla. - El descuento como fracción. Divide
discount_pctentre 100 una sola vez.
¡Linterna encendida!
Practicaste: sumxiteratorrow contextmeasure
- Resuelto
- Sin pistas
- Al primer intento
