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

Related Articles

Responses

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *