Uso de variables para mejorar el rendimiento y solucionar problemas

Completado

Puede usar variables en las fórmulas DAX para ayudarle a escribir cálculos menos complejos y más eficaces. Los desarrolladores que empiezan en Power BI Desktop infrautilizan las variables, pero son eficaces y las deberían usar de forma predeterminada al crear medidas.

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 ventajas siguientes:

  • Rendimiento mejorado: las variables pueden hacer que las medidas sean más eficaces porque eliminan la necesidad de que Power BI evalúe varias veces la misma expresión. 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 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 solución de problemas.

  • Complejidad reducida: las variables no requieren el uso de las funciones DAX EARLIER o EARLIEST, que son difíciles de comprender. Estas funciones eran necesarias antes de que se introdujeran las variables y se escribieron 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 denominada SalesPriorYear y utiliza una expresión para asignar el resultado "el mismo período del año pasado" a esa variable nueva. Después, usa dos veces la variable en la expresión DIVIDE.

Sin la variable

Sales YoY Growth =
DIVIDE (
    ( [Sales] - CALCULATE ( [Sales], PARALLELPERIOD ( 'Date'[Date], -12, MONTH ) ) ),
    CALCULATE ( [Sales], PARALLELPERIOD ( 'Date'[Date], -12, MONTH ) )
)

Con la 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 medida de la tabla, la fórmula es ineficaz porque requiere que Power BI evalúe dos veces la misma expresión. La segunda definición es más eficiente porque, debido a la variable, Power BI solo debe evaluar la expresión PARALLELPERIOD una vez.

Si el modelo semántico tiene varias consultas con varias 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, cuando se trata de porcentajes y totales acumulados.

Uso de variables para mejorar la legibilidad

Además de mejorar el rendimiento, es posible que observe cómo el uso de variables hace que el código sea más fácil de leer.

Al utilizar variables, se recomienda usar nombres descriptivos. En el ejemplo anterior, la variable se denomina SalesPriorYear, lo que indica claramente lo que calcula. Imagine el resultado de usar una variable llamada X, temp o variable1; su propósito no quedaría claro en absoluto.

El uso de nombres claros, concisos y significativos le permiten entender mejor lo que intenta calcular y facilitará que otros desarrolladores puedan mantener el informe en el futuro.

Uso de variables para solucionar problemas de varios pasos

Puede usar variables para ayudarle a depurar una fórmula e identificar cuál es el problema. Las variables ayudan a simplificar la tarea de solucionar problemas del cálculo de DAX mediante la evaluación de cada variable por separado, que luego se vuelven a llamar después de la expresión RETURN.

En el ejemplo siguiente, se prueba una expresión asignada a una variable. Para realizar la depuración, se reescribe temporalmente la expresión RETURN para escribir en la variable. La definición de medida devuelve solo la variable SalesPriorYear porque 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 expresión RETURN solo mostrará el valor 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.