Función RANKX 🏆
¡Domina RANKX en DAX para crear rankings dinámicos en Power BI! Aprende a ordenar productos, ventas o categorías y crea tablas de posiciones personalizadas. Descubre cómo usar ALL, ALLEXCEPT, CALCULATE, y las opciones Dense vs. Skip. Descarga las tablas y practica. 💻📊
En este video aprenderás:
- Qué hace RANKX
- Cómo aplicarlo con ALL, ALLEXCEPT, y CALCULATE
- Diferencias entre orden Dense y Skip
- Ejemplos prácticos para tus reportes
Paso 1: Crear una medida base con SUMX ➕
Calcula el total de ventas por producto multiplicando Cantidad por PrecioUnitario.
- Ve a Inicio > Introducir Datos, crea una tabla llamada MedidasDAX y cárgala.
- En MedidasDAX, haz clic derecho > Nueva Medida.
- Nómbrala Total Ventas y escribe:
Total Ventas =
SUMX(Venta,Venta[Cantidad]*Venta[PrecioUnitario])
- Explicación: Itera cada fila de Ventas, multiplica Cantidad por PrecioUnitario y suma los resultados.
- Presiona Enter, crea una Tabla en Vista de Informe con:
- NombreProducto (de Productos).
- Cantidad y PrecioUnitario (de Ventas).
- TotalVentas (por ejemplo, Zapatos: 3 * 20 = 60).
- Resultado total en una Tarjeta: 310. 😎
Paso 2: Crear un ranking global con RANKX y ALL 🥇
Rankea los productos por ventas totales, ignorando filtros.
- En MedidasDAX, haz clic derecho > Nueva Medida.
- Nómbrala Ranking Global y escribe:
Ranking Global =
RANKX(
ALL(Producto),
[Total Ventas])
- Explicación:
- ALL(Productos): Elimina filtros de la tabla Productos, considerando todos los productos.
- [TotalVentas]: Evalúa el total de ventas por producto.
- Orden predeterminado: Descendente (mayor venta = rango 1).
- Nota: Sin ALL, RANKX evalúa una fila a la vez, dando siempre rango 1 (error común).
Presiona Enter, añade RankingGlobal a la tabla con NombreProducto.
- Resultado: Ranking 1, 2, 3, 4 (por ejemplo, Jeans = 1, Zapatos = 2).
Prueba con una Segmentación:
- Arrastra Categoría (de Productos).
- Selecciona Accesorios y Ropa: El ranking sigue mostrando posiciones globales (por ejemplo, 1 y 4), porque ALL ignora el filtro de categoría. 🌟
Paso 3: Crear un ranking por categoría con RANKX y ALL (columna) 🥈
Rankea productos dentro de las categorías seleccionadas.
- En Medidas DAX, haz clic derecho > Nueva Medida.
- Nómbrala Ranking x Producto y escribe:
RankingPorProducto = RANKX(ALL(Productos[NombreProducto]), [TotalVentas])
- Explicación:
- ALL(Productos[NombreProducto]): Elimina filtros solo de la columna NombreProducto, respetando otros filtros (como Categoría).
- [TotalVentas]: Evalúa las ventas por producto.
- Diferencia con RankingGlobal: Respeta filtros de otras columnas (por ejemplo, Categoría).
Presiona Enter, añade Ranking x Producto a la tabla con NombreProducto y Categoría.
Usa la segmentación de Categoría:
- Selecciona Calzados y Ropa: Ranking x Producto muestra 1, 2, 3, basado solo en las categorías seleccionadas.
- RankingGlobal muestra 1, 2, 4, ignorando el filtro. 🚀
Paso 4: Rankear por cantidad con RANKX y CALCULATE 🥉
Rankea productos por cantidad vendida, usando CALCULATE para iterar.
- En MedidasDAX, haz clic derecho > Nueva Medida.
- Nómbrala Ranking x Cantidad y escribe:
Ranking x Cantidad =
RANKX(
ALL(Producto),
CALCULATE(SUM(Venta[Cantidad])))
- Explicación:
- ALL(Productos): Considera todos los productos.
- CALCULATE(SUM(Ventas[Cantidad])): Fuerza la suma de Cantidad por producto, iterando fila por fila.
- Nota: Sin CALCULATE, SUM suma toda la columna (por ejemplo, 15), comparando el total consigo mismo (rango 1).
Presiona Enter, crea una nueva Tabla con NombreProducto, Cantidad, y Ranking x Cantidad.
- Resultado: Zapatos (6 = 1), Jeans (5 = 2), Camiseta (3 = 3), Reloj (1 = 4).
- Por qué CALCULATE: Convierte SUM (no iteradora) en una función que evalúa por producto, simulando iteración. 😄
Paso 5: Cambiar el orden con Ascendente 📈
Modifica el ranking para orden ascendente (menor valor = rango 1).
- Edita Ranking x Cantidad y añade el parámetro de orden:
Ranking x Cantidad =
RANKX(
ALL(Producto),
CALCULATE(SUM(Venta[Cantidad])),,ASC
)
- Explicación:
- ASC: Orden ascendente (menor cantidad = rango 1).
- Sin ASC o con DESC (o vacío): Orden descendente (predeterminado).
Presiona Enter, revisa la tabla.
Paso 6: Opciones Dense vs. Skip para empates ⚖️
Configura el manejo de empates en el ranking.
- Edita Ranking x Cantidad y añade el parámetro de empate:
Ranking x Cantidad =
RANKX(
ALL(Producto),
CALCULATE(SUM(Venta[Cantidad])),,DESC,Dense
)
- Explicación:
- Dense: No salta rangos en empates. Ejemplo: Si dos productos tienen Cantidad = 5 (rango 2), el siguiente es rango 3.
- Skip: Salta rangos en empates. Ejemplo: Si dos productos tienen Cantidad = 5 (rango 2), el siguiente es rango 4.
Presiona Enter, revisa la tabla.
Cierre 🎬
¡Listo! 🎉 Ahora dominas RANKX para crear rankings dinámicos en Power BI, usando ALL, CALCULATE, y opciones como Dense y Skip. Practica con las tablas y crea tablas de posiciones impactantes. ¿Dudas? Déjalas en los comentarios. ¡Nos vemos en el próximo capítulo! 👋
Notas Adicionales 📝
- Enlaces: Descarga el archivo y revisa el curso gratis en la descripción (módulo 9, capítulo 80). 😊
- ALL vs. ALL(Productos[Columna]): Usa ALL para rankings globales, o ALL(columna) para respetar filtros de otras columnas.
- CALCULATE con SUM: Necesario para funciones no iteradoras (como SUM) en RANKX.
- Errores: Si el ranking muestra solo 1, verifica que usaste ALL o CALCULATE. Revisa relaciones y nombres de columnas/medidas. 🔍
Módulo 9: Funciones DAX II
Descargar Tabla Calendario
Tabla Fechas .pbix
Tabla Productos, Ventas, Otra Tabla
Responses