1. Faro

Nivel 5 · Ventas de los cinco mejores productos con TOPN

La solicitud

De Samantha Price, VP de Merchandising

“La junta no deja de preguntar cuánto dependemos de unos pocos éxitos. Para cada año, ¿cuánto aportaron los cinco productos más vendidos de ese año? Lo pondré junto a las ventas totales.”

Tu objetivo

La matriz tiene 'Date'[Year] en las filas y la medida [Sales] del informe. Crea una medida llamada Top 5 Sales: el [Sales] de los cinco productos (por products[name]) con el [Sales] más alto en el periodo de la celda.

  • Llena [Top 5 Sales] en cada fila del visualpendiente
  • También la fila Total correctapendiente

Tu medida

DAX
Visual
A matrix: rows = 'Date'[Year]; values = [Sales], [Top 5 Sales]
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…

    Visual[Top 5 Sales] fills in when you press Check
    El visual antes de tu respuesta
    YearSalesTop 5 Sales
    2,023$1,600,511
    2,024$1,993,604
    2,025$2,300,170
    Total$5,894,284

    Mote revisa tu resultado

    Presiona Comprobar. Mote completa tu respuesta y la compara con lo que necesita el informe.

    La lección

    La pregunta de Samantha es de concentración: si los cinco productos más vendidos generan una gran parte del año, el negocio queda expuesto a que cualquiera de ellos se agote. El número que necesita es “ventas, pero solo de los cinco mejores productos”, y esos cinco cambian de un año a otro.

    Dónde estás trabajando

    Este es un informe de práctica creado para este sitio, no Power BI: Power BI Desktop solo funciona en Windows. Un motor DAX en la página evalúa tu medida en cada celda de la matriz siguiendo las reglas de Power BI. En Power BI Desktop: Inicio → Nueva medida (Home → New measure), escribe la fórmula y suelta Top 5 Sales junto a Sales en la matriz.

    TOPN devuelve una tabla

    TOPN(5, ALL(products[name]), [Sales])
    • 5 es cuántas filas conservar.
    • ALL(products[name]) es la tabla de la que se elige: todos los nombres de producto.
    • [Sales] es la expresión que la ordena, evaluada una vez por nombre. Como cualquier referencia a una medida dentro de un iterador, recibe una transición de contexto, así que cada nombre obtiene sus propias ventas. El orden predeterminado es descendente: primero el más alto.

    TOPN no devuelve un número; devuelve una tabla de cinco filas. Los empates en el punto de corte pueden devolver más de cinco filas. Una tabla sola no cabe en la celda de una matriz, así que la usas como filtro.

    Una tabla como filtro de CALCULATE

    Top 5 Sales =
    CALCULATE(
        [Sales],
        TOPN(5, ALL(products[name]), [Sales])
    )

    CALCULATE acepta una tabla como argumento de filtro: los cinco nombres pasan a ser los únicos permitidos, y [Sales] se calcula para esos productos. Todo lo demás del contexto de la celda se mantiene. En la fila de 2024 el filtro de año sigue ahí, así que TOPN clasifica los productos por sus ventas de 2024 y el [Sales] exterior suma sus ventas de 2024.

    Por qué el Total no es la suma de las filas

    La fila Total no tiene filtro de año. TOPN elige los cinco mejores productos entre 2023 y 2025, que no son los mismos cinco de ningún año por separado, y suma sus ventas de los tres años. Es correcto para esa pregunta, y es distinto de sumar las tres filas.

    Convertirlo en una participación

    Divide entre el todo para obtener la razón de concentración que la junta leerá de verdad:

    Top 5 Share = DIVIDE([Top 5 Sales], [Sales])

    Errores comunes

    • Sin ALL. Si los productos están en las filas del visual, VALUES(products[name]) contiene un nombre y el “top 5” es solo ese producto.
    • Ordenar por una columna. TOPN(5, ALL(products[name]), products[unit_price]) no puede leer un precio de una lista de nombres, y aun con la tabla products completa clasificaría por precio, no por lo que se vendió.
    • TOPN solo, como medida. Una medida debe devolver un valor; TOPN devuelve una tabla.

    Elige qué puede ejecutarse en este sitio. Puedes cambiarlo cuando quieras desde "Configurar cookies", al pie de cada página.