1. Faro

Nivel 8 · Arregla una medida con VAR y RETURN

La solicitud

De Ryan Patel, Desarrollador BI sénior

“Nuestro Sales YoY % repite dos veces las ventas del año pasado, y alguien 'arregló' una copia con DATEADD a un mes. Ahora Textiles muestra +22 % cuando creció cerca de 29 %. Reescríbelo para que las ventas del año pasado se escriban exactamente una vez, con un nombre, y los números vuelvan a ser correctos.”

Tu objetivo

La matriz tiene products[category] en las filas con una segmentación en 'Date'[Year] = 2025. El editor contiene la medida defectuosa. Reescribe Sales YoY % como ([Sales] − ventas del año pasado) / ventas del año pasado, donde las ventas del año pasado son CALCULATE([Sales], SAMEPERIODLASTYEAR('Date'[Date])). Guarda las ventas del año pasado en una VAR y úsala en RETURN.

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

Tu medida

DAX
Visual
A matrix: rows = products[category]; values = [Sales], [Sales YoY %]
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…

    Visual[Sales YoY %] fills in when you press Check
    El visual antes de tu respuesta
    categorySalesSales YoY %
    Decor$290,301
    Furniture$573,131
    Kitchen$292,808
    Lighting$385,145
    Outdoor$507,358
    Textiles$251,426
    Total$2,300,170

    Mote revisa tu resultado

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

    La lección

    La medida anterior no está mal porque la matemática sea difícil. Está mal porque la misma idea, “las ventas del año pasado”, se escribió dos veces, y dos copias de una idea acaban separándose. Las variables lo arreglan dándole un nombre a la idea.

    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, siguiendo las reglas de Power BI. En Power BI Desktop, selecciona la medida en el panel Datos (Data) y edítala en la barra de fórmulas; Shift+Enter añade una línea nueva. El motor de aquí comprueba los números, así que asegúrate de que la versión con VAR también sea la correcta.

    VAR … RETURN

    Sales YoY % =
    VAR SalesLY = CALCULATE([Sales], SAMEPERIODLASTYEAR('Date'[Date]))
    RETURN
        DIVIDE([Sales] - SalesLY, SalesLY)
    • VAR nombre = expresión evalúa la expresión y guarda el resultado. Puedes definir varias variables, cada una en su propia línea, y las posteriores pueden usar las anteriores.
    • RETURN expresión es el valor de la medida. Puede usar todas las variables que tiene encima.
    • Los nombres no llevan espacios ni corchetes: SalesLY, _lastYear. Las variables son locales a la medida; nada fuera de ella puede verlas.

    Por qué es más correcta, no solo más ordenada

    1. Una sola definición. Las ventas del año pasado existen una vez. Cámbialas a un año fiscal o a otra columna de fecha, y ambos usos las siguen.
    2. Se evalúa una vez. El motor calcula SalesLY una vez por celda en lugar de dos. En modelos grandes eso es velocidad real.
    3. Se evalúa donde se define. Una variable guarda un valor, tomado en el contexto de la línea donde está escrita. Envolverla después en CALCULATE no la recalcula. Es lo que quieres aquí, y sorprende a quien espera que se comporte como una medida.

    Leer el error antiguo

    El numerador usaba SAMEPERIODLASTYEAR: 2025 comparado con 2024. El denominador usaba DATEADD con un mes: de diciembre de 2024 a noviembre de 2025. Para Textiles, el crecimiento se dividió entre la base equivocada, así que +29.3 % se convirtió en +22.2 %. Nada da error, todos los números parecen plausibles y la medida sigue mal: el tipo de error más caro en un informe.

    VAR para depurar

    Cuando una medida larga da un resultado extraño, pon cada paso en una VAR y cambia la línea RETURN para mostrar una de ellas: RETURN SalesLY. Revisa ese número en la matriz y pasa a la siguiente variable. El equipo de Ryan ahora escribe todas las razones así: numerador, denominador, RETURN DIVIDE.

    Errores comunes

    • Espacios en el nombre. VAR Sales LY es un error de sintaxis.
    • Olvidar RETURN. Una medida con solo líneas VAR no tiene valor.
    • Una variable después de RETURN. Cada línea VAR va antes del RETURN que la usa.

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