Uso de variables para mejorar el rendimiento y solucionar problemas
Puede usar variables en las fórmulas DAX para ayudarle a escribir cálculos menos complejos y más eficaces. Los nuevos desarrolladores de Power BI Desktop usan poco las variables, pero son eficaces y deberían usarse siempre que sea posible.
Algunas expresiones implican el uso de muchas funciones anidadas y la reutilización de la lógica de expresiones. Estas expresiones tardan más tiempo en procesarse y son difíciles de leer y, por tanto, es complicado solucionar problemas en ellas. Si usa variables, puede ahorrar tiempo de procesamiento de las consultas. Este cambio es un paso en la dirección correcta hacia la optimización del rendimiento de un modelo semántico.
El uso de variables en el modelo semántico proporciona las siguientes ventajas:
- Rendimiento mejorado: las variables pueden hacer que las medidas sean más eficientes, porque eliminan la necesidad de que Power BI evalúe la misma expresión varias veces. Puede lograr los mismos resultados en una consulta en, aproximadamente, la mitad del tiempo de procesamiento original.
- Mejora de la legibilidad: las variables tienen nombres cortos y autodescriptivos, y se usan en lugar de usar una expresión ambigua de varias palabras. Al usar variables, es posible que le resulte más fácil leer y comprender las fórmulas.
- Depuración simplificada: puede usar variables para depurar una fórmula y probar expresiones, lo que puede resultar útil durante la resolución de problemas.
-
Menos complejidad: las variables no requieren el uso de funciones
EARLIERoEARLIEST, que son difíciles de entender. Estas funciones eran necesarias antes de que aparecieran las variables, y se escribían en expresiones complejas que incorporaban nuevos contextos de filtro. Ahora que puede usar variables en lugar de esas funciones, puede escribir menos fórmulas complejas.
Uso de variables para mejorar el rendimiento
Para ilustrar cómo puede usar una variable para que una medida sea más eficaz, en la tabla siguiente se muestra una definición de medida de dos maneras diferentes. Observe que la fórmula repite la expresión que calcula "el mismo período del año pasado", pero de dos maneras distintas: en la primera instancia se usa el método de cálculo de DAX normal y en la segunda se usan variables.
En la segunda fila de la tabla se muestra la definición de la medida mejorada. Esta definición usa la palabra clave VAR para introducir una variable con nombre SalesPriorYear, y emplea una expresión para asignar el resultado "mismo periodo del año pasado" a esa nueva variable. Luego, usa la variable dos veces en la función DIVIDE.
Sin variable
Sales YoY Growth =
DIVIDE(
([Sales] - CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))),
CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
)
Con variable
Sales YoY Growth =
VAR SalesPriorYear =
CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
VAR SalesVariance =
DIVIDE(([Sales] - SalesPriorYear), SalesPriorYear)
RETURN
SalesVariance
En la primera definición de la medida, la fórmula es ineficaz porque requiere que Power BI evalúe la misma expresión dos veces. La segunda definición es más eficiente porque, gracias a la variable, Power BI solo necesita evaluar la función PARALLELPERIOD una vez.
Si su modelo semántico tiene varias consultas con múltiples medidas, el uso de variables podría reducir el tiempo total de procesamiento de consultas a la mitad y mejorar el rendimiento general del modelo semántico. Además, esta solución es sencilla; imagínese el ahorro a medida que las fórmulas son más complicadas, por ejemplo, al trabajar con porcentajes y totales acumulados.
Uso de variables para mejorar la legibilidad
Además de mejorar el rendimiento, es posible que se dé cuenta de que el uso de variables hace que su código sea más sencillo de leer.
Al utilizar variables, se recomienda usar nombres descriptivos. En el ejemplo anterior, se asigna un nombre SalesPriorYear a la variable, lo que indica claramente lo que la variable está calculando. Piense en el resultado de usar una variable con el nombre X, temp o variable1; no se sabría para qué sirve.
El uso de nombres claros, concisos y significativos ayudará a que le resulte más fácil comprender y documentar lo que está calculando, y será mucho más sencillo para otros desarrolladores mantenerlo en el futuro.
Uso de variables para solucionar problemas de varios pasos
Puede usar variables para depurar una fórmula e identificar cuál es el problema. Las variables ayudan a simplificar la tarea de solucionar problemas de cálculo de DAX, evaluando para ello cada variable por separado y recuperándolas en la cláusula RETURN.
En el ejemplo siguiente, se prueba una expresión asignada a una variable. Para depurar, vuelva a escribir temporalmente la cláusula RETURN para devolver la variable. La definición de medida devuelve solo la variable SalesPriorYear, ya que eso es lo que viene después de la expresión RETURN.
Sales YoY Growth % =
VAR SalesPriorYear = CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
VAR SalesPriorYear% = DIVIDE(([Sales] - SalesPriorYear), SalesPriorYear)
RETURN SalesPriorYear%
La cláusula RETURN solo devuelve la variable SalesPriorYear%. Esta técnica permite revertir la expresión cuando se ha completado la depuración. También hace que los cálculos sean más fáciles de comprender debido a la complejidad reducida del código de DAX.