La solicitud

De Jordan Hayes, Director de categorías
Tu objetivo
La matriz lista products[category] por orden alfabético, con una segmentación en 'Date'[Year] = 2025 y la medida [Sales] del informe a su lado. Crea una medida llamada Sales Rank que dé a cada categoría su posición según [Sales] entre las seis categorías: 1 para la mayor.
- Llena
[Sales Rank]en cada fila del visualpendiente
Tu medida
- Visual
- A matrix: rows = products[category]; values = [Sales], [Sales Rank]
- Segmentaciones
- 'Date'[Year] = 2025
- 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
| category | Sales | Sales Rank |
|---|---|---|
| Decor | $290,301 | |
| Furniture | $573,131 | |
| Kitchen | $292,808 | |
| Lighting | $385,145 | |
| Outdoor | $507,358 | |
| Textiles | $251,426 |
Mote revisa tu resultado
Presiona Comprobar. Mote completa tu respuesta y la compara con lo que necesita el informe.
Lo que recibe Jordan, y por qué
La lección
Ordenar un visual por Sales muestra el orden, pero solo mientras dure esa ordenación. Los lectores de Jordan ordenan por nombre. Una medida de ranking pone la posición en una columna propia, así que sigue siendo correcta sin importar cómo se ordene la tabla.
Dónde estás trabajando
La matriz de abajo es un informe de práctica creado para este sitio. Power BI Desktop solo funciona en Windows, así que un motor DAX en la página rellena cada celda, siguiendo las reglas de Power BI. En Power BI Desktop: Inicio → Nueva medida (Home → New measure), escribe la fórmula y suelta Sales Rank en Valores (Values) de la matriz, junto a Sales.
RANKX en dos argumentos
Sales Rank = RANKX(ALL(products[category]), [Sales])
RANKX(tabla, expresión):
- Quién compite. Una tabla con una fila por competidor.
ALL(products[category])es la lista de las seis categorías con todos los filtros de esa columna eliminados. - Qué decide el orden. RANKX evalúa la expresión una vez por competidor, cada uno en su propio contexto, y la evalúa una vez más en la celda actual y devuelve su posición.
Siguen argumentos opcionales: un valor que clasificar en lugar del actual, el orden (DESC, el
predeterminado, hace que el mayor sea 1; ASC hace que el menor sea 1) y cómo se tratan los empates
(SKIP, el predeterminado, da 1, 2, 2, 4; DENSE da 1, 2, 2, 3).
Por qué ALL es obligatorio
Dentro de la fila Furniture, el contexto de filtro solo contiene Furniture. VALUES(products[category])
ahí devuelve una categoría, así que RANKX compara Furniture con Furniture y devuelve 1. Todas las
filas valen 1. ALL( ) elimina el filtro de la fila sobre esa columna, y así compiten las seis.
Los demás filtros siguen aplicándose. La segmentación de 2025 filtra la tabla Date, no la columna de
categoría, así que el [Sales] de cada categoría son sus ventas de 2025. El ranking se calcula dentro
de lo que el lector haya seleccionado en otras columnas.
Clasifica por una medida, no por una columna
El segundo argumento debería ser una medida, [Sales]. Dentro de RANKX, una referencia a una medida
aplica el competidor actual como filtro, así que cada categoría obtiene su propio número. Un
SUM(order_items[line_total]) sin más no recibe ese filtro y devuelve el mismo total para cada
competidor, así que todos los rankings valen 1. Si tienes que escribir la expresión directamente,
envuélvela en CALCULATE.
La fila Total
En una fila Total no hay categoría actual, y RANKX clasificaría el total general frente a las seis
categorías, devolviendo 1. Este visual oculta la fila Total. En tus propios informes, envuelve el
ranking en IF(ISINSCOPE(products[category]), RANKX( … )) para que la celda Total quede vacía.
Errores comunes
- VALUES en lugar de ALL. Un competidor, ranking 1 en todas partes.
- ALL(products). Elimina todos los filtros de la tabla products y clasifica frente a 120 productos, no a seis categorías.
- Esperar que 1 sea el menor. El orden predeterminado es descendente.
¡Linterna encendida!
Practicaste: rankxallrankingfilter context
- Resuelto
- Sin pistas
- Al primer intento
