La solicitud

De Victoria Grant, Directora comercial (CCO)
Tu objetivo
Paso 1 de 3. Crea una medida llamada Discount Given: el dinero descontado del precio de lista en cada línea de pedido, order_items[quantity] × order_items[unit_price] × order_items[discount_pct] / 100, sumado.
- Llena
[Discount Given]en cada fila del visualpendiente - También la fila Total correctapendiente
Paso 2 de 3. Añade una medida llamada Channel Rank: la posición de cada canal según [Sales] entre todos los canales, 1 para el mayor. La fila Total está oculta.
- Llena
[Channel Rank]en cada fila del visualpendiente
Paso 3 de 3. Ahora una segmentación de canal deja web y app. Añade una medida llamada vs Selected Avg: ([Sales] − el promedio de [Sales] de los canales seleccionados) / ese promedio. Guarda las ventas de la fila y el promedio en VAR; el promedio es AVERAGEX sobre los canales seleccionados. La fila Total está oculta.
- Llena
[vs Selected Avg]en cada fila del visualpendiente
Paso 1 · tu medida
- Visual
- A matrix: rows = orders[channel]; values = [Sales], [Discount Given]
- Segmentaciones
- orders[status] = completed'Date'[Year Quarter] = 2025 Q4
- 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 | Discount Given |
|---|---|---|
| app | $329,316 | |
| marketplace | $121,886 | |
| web | $304,108 | |
| Total | $755,310 |
Mote revisa tu resultado
Presiona Comprobar. Mote completa tu respuesta y la compara con lo que necesita el informe.
Paso 2 · tu medida
- Visual
- A matrix: rows = orders[channel]; values = [Sales], [Channel Rank]
- Segmentaciones
- orders[status] = completed'Date'[Year Quarter] = 2025 Q4
- 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 | Channel Rank |
|---|---|---|
| app | $329,316 | |
| marketplace | $121,886 | |
| web | $304,108 |
Mote revisa tu resultado
Presiona Comprobar. Mote completa tu respuesta y la compara con lo que necesita el informe.
Paso 3 · tu medida
- Visual
- A matrix: rows = orders[channel]; values = [Sales], [vs Selected Avg]
- Segmentaciones
- orders[status] = completed'Date'[Year Quarter] = 2025 Q4orders[channel] = web, app
- 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 | vs Selected Avg |
|---|---|---|
| app | $329,316 | |
| web | $304,108 |
Mote revisa tu resultado
Presiona Comprobar. Mote completa tu respuesta y la compara con lo que necesita el informe.
Lo que recibe Victoria, y por qué
La lección
Las tres preguntas de Victoria usan tres patrones distintos de este capítulo, todos en un mismo visual: una matriz de los tres canales de venta del trimestre de fiestas, solo pedidos completados.
Dónde estás trabajando
Como en todos los niveles de esta ruta, este es un informe de práctica creado para este sitio: Power BI Desktop solo funciona en Windows, y un motor DAX en la página rellena cada celda siguiendo las reglas de Power BI. Cada paso comprueba la última medida del editor; conserva ahí las anteriores. En Power BI Desktop añadirías cada una con Inicio → Nueva medida (Home → New measure) y la soltarías en Valores (Values) de la matriz.
Paso 1: descuentos, línea por línea
Un descuento se calcula por línea con tres de sus columnas: quantity × unit_price × discount_pct / 100.
Es un iterador sobre order_items, igual que Net Revenue antes en el capítulo, pero con la parte del
descuento en lugar de la parte que paga el cliente. La fila del canal y las dos segmentaciones deciden
qué líneas recorre SUMX.
Paso 2: un ranking que ignora la fila
RANKX(ALL(orders[channel]), [Sales]) evalúa [Sales] para cada uno de los tres canales y devuelve la
posición de la fila actual. ALL es lo que permite que compitan los tres; sin él, cada fila compite
solo consigo misma. La fila Total está oculta porque un ranking no tiene sentido ahí.
Paso 3: frente al promedio de lo seleccionado
Marketplace se revisa por separado, así que la página ahora tiene una segmentación de canal con web y app. La medida compara cada fila con el promedio de los canales seleccionados:
vs Selected Avg =
VAR ThisSales = [Sales]
VAR AvgSales = AVERAGEX(ALLSELECTED(orders[channel]), [Sales])
RETURN
DIVIDE(ThisSales - AvgSales, AvgSales)
ALLSELECTED(orders[channel])elimina el filtro de canal de la fila pero conserva el de la segmentación, así que la lista es web y app.- AVERAGEX evalúa
[Sales]para cada uno y los promedia: un número por canal y luego la media. - Las dos VAR ponen nombre a las piezas, de modo que RETURN se lee como la definición del ticket.
Un resultado positivo significa que el canal vende más que el promedio de los canales seleccionados; uno negativo, menos. Con dos canales los resultados son espejo: uno está tan por encima del promedio como el otro por debajo.
Qué comprobar antes del lunes
Lee la matriz, no solo la marca verde: ¿Discount Given parece plausible junto a Sales (unos pocos puntos porcentuales, no la mitad)? ¿El ranking coincide con el orden de la columna Sales? ¿Los resultados del paso 3 suman cero entre los canales seleccionados? Comprobaciones de sentido común como estas atrapan los errores que un verificador no puede.
¡Linterna encendida!
Practicaste: sumxrankxallselectedaveragexvarboss
- Resuelto
- Sin pistas
- Al primer intento
