Améliorer les performances et la résolution des problèmes à l’aide de variables

Effectué

Vous pouvez écrire plus facilement des calculs moins complexes et plus efficaces à l’aide de variables dans vos formules DAX. Les variables sont sous-utilisées par les développeurs qui débutent dans Power BI Desktop, mais elles sont efficaces et vous devez les utiliser chaque fois que vous le pouvez.

Certaines expressions impliquent l’utilisation de nombreuses fonctions imbriquées et la réutilisation de la logique d’expression. Le traitement de ces expressions prend plus de temps et celles-ci sont difficiles à lire, ce qui complique la résolution des problèmes associés. Si vous utilisez des variables, vous pouvez gagner du temps de traitement des requêtes. Ce changement est un pas dans la bonne direction vers l’optimisation des performances d’un modèle sémantique.

L’utilisation de variables dans votre modèle sémantique offre les avantages suivants :

  • Amélioration des performances : les variables peuvent rendre les mesures plus efficaces, car elles suppriment la nécessité pour Power BI d’évaluer la même expression plusieurs fois. Vous pouvez obtenir les mêmes résultats dans une requête en environ moitié moins de temps par rapport au traitement d’origine.
  • Amélioration de la lisibilité : les variables ont des noms courts et autodescriptifs et sont utilisées à la place d’une expression ambiguë à plusieurs mots. Il peut s’avérer plus facile de lire et comprendre les formules lorsque des variables sont utilisées.
  • Simplification du débogage : vous pouvez déboguer une formule et des expressions de test à l’aide de variables, ce qui peut être utile lors de la résolution des problèmes.
  • Réduction de la complexité : les variables ne nécessitent pas l’utilisation de fonctions EARLIER ou EARLIEST, qui sont difficiles à comprendre. Ces fonctions étaient nécessaires avant l’introduction des variables et écrites dans des expressions complexes qui introduisaient de nouveaux contextes de filtre. Comme vous pouvez désormais utiliser des variables au lieu de ces fonctions, vous pouvez écrire moins de formules complexes.

Améliorer les performances à l’aide de variables

Pour illustrer la façon dont vous pouvez rendre une mesure plus efficace à l’aide d’une variable, le tableau suivant présente une définition de mesure de deux manières différentes. Notez que la formule répète l’expression qui calcule « même période l’année précédente », mais de deux façons différentes : la première instance utilise la méthode de calcul DAX standard, tandis que la seconde utilise des variables dans le calcul.

La seconde ligne du tableau affiche la définition de la mesure dans une version améliorée. Cette définition introduit une variable nommée SalesPriorYear à l’aide du mot clé VAR et affecte le résultat « même période l’année précédente » à cette nouvelle variable à l’aide d’une expression. Elle utilise ensuite la variable deux fois dans la fonction DIVIDE.

Sans la variable

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

Avec la variable

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

Dans la première définition de mesure, la formule est inefficace, car elle nécessite que Power BI évalue deux fois la même expression. La deuxième définition est plus efficace, car Power BI ne doit évaluer la fonction PARALLELPERIOD qu’une seule fois grâce à la variable.

Si votre modèle sémantique comporte plusieurs requêtes avec plusieurs mesures, l’utilisation de variables peut réduire de moitié le temps global de traitement des requêtes et améliorer les performances globales du modèle sémantique. En outre, cette solution est simple ; imaginez les économies au fur et à mesure que les formules deviennent plus compliquées, par exemple, lorsque vous utilisez des pourcentages et des totaux cumulés.

Améliorer la lisibilité à l’aide de variables

Outre l’amélioration des performances, vous remarquerez peut-être que l’utilisation de variables rend votre code plus simple à lire.

Lorsque des variables sont utilisées, il est recommandé de leur affecter des noms descriptifs. Dans l’exemple précédent, la variable est nommée SalesPriorYear, ce qui indique clairement ce que la variable calcule. Imaginez le résultat de l’utilisation d’une variable nommée X, temp ou variable1 : l’objectif de la variable ne serait pas clair du tout.

L’utilisation de noms clairs, concis et parlants vous permet de comprendre et documenter plus facilement ce que vous calculez, et il est bien plus facile pour les autres développeurs de le gérer à l’avenir.

Résoudre les problèmes liés à plusieurs étapes à l’aide de variables

Vous pouvez déboguer une formule et identifier le problème plus facilement à l’aide de variables. Les variables vous permettent de résoudre plus facilement les problèmes liés à votre calcul DAX en évaluant chaque variable séparément et en les rappelant dans la clause RETURN.

Dans l’exemple suivant, vous testez une expression affectée à une variable. Afin de procéder à un débogage, vous devez réécrire temporairement la clause RETURN pour renvoyer la variable. La définition de mesure renvoie uniquement la variable SalesPriorYear, car c’est ce qui vient après l’expression RETURN.

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

La clause RETURN renvoie uniquement la variable SalesPriorYear%. Cette technique vous permet de rétablir l’expression lorsque vous avez terminé le débogage. En outre, elle simplifie la compréhension des calculs en raison de la réduction de la complexité du code DAX.