La solicitud

De Ryan Patel, Desarrollador BI sénior
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
- 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…
Solución de referencia
| category | Sales | Sales 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.
Lo que recibe Ryan, y por qué
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ónevalú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ónes 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
- 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.
- Se evalúa una vez. El motor calcula SalesLY una vez por celda en lugar de dos. En modelos grandes eso es velocidad real.
- 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 LYes 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.
¡Linterna encendida!
Practicaste: varreturnvariablesyoysameperiodlastyearreadability
- Resuelto
- Sin pistas
- Al primer intento
