Utiliser des variables pour améliorer les performances et la résolution des problèmes

Effectué

Vous pouvez utiliser des variables dans vos formules DAX pour essayer d’écrire des calculs moins complexes et plus efficaces. 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 par défaut quand vous créez des mesures.

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 de leurs problèmes. Si vous utilisez des variables, vous pouvez économiser du temps de traitement des requêtes. Ce changement est une étape dans la bonne direction pour optimiser les performances d'un modèle sémantique.

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

  • Amélioration des performances : les variables peuvent rendre les mesures plus efficaces, car Power BI n’a plus besoin d’évaluer plusieurs fois la même expression. Vous pouvez obtenir les mêmes résultats dans une requête en environ moitié moins de temps par rapport au traitement d’origine.

  • Lisibilité améliorée : les variables ont des noms courts et autodescriptifs et sont utilisées à la place d’une expression à plusieurs mots ambiguë. Il peut s’avérer plus facile de lire et de comprendre les formules quand des variables sont utilisées.

  • Simplification du débogage : vous pouvez utiliser des variables pour déboguer une formule et des expressions de test, 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 des fonctions DAX EARLIER ou EARLIEST, qui sont difficiles à comprendre. Ces fonctions étaient nécessaires avant l’introduction des variables et étaient é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.

Utiliser des variables pour améliorer les performances

Pour illustrer la façon dont vous pouvez utiliser une variable afin de rendre une mesure plus efficace, 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 normale, tandis que la seconde utilise des variables dans le calcul.

La seconde ligne du tableau montre la définition de la mesure dans une version améliorée. Cette définition utilise le mot clé VAR pour introduire une variable nommée SalesPriorYear et utilise une expression pour attribuer le résultat « même période l’année précédente » à cette nouvelle variable. Elle utilise ensuite la variable à deux reprises dans l’expression 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 la mesure dans le tableau, la formule n’est pas efficace, car elle nécessite que Power BI évalue deux fois la même expression. La seconde définition est plus efficace car, grâce à la variable, Power BI ne doit évaluer l’expression PARALLELPERIOD qu’une seule fois.

Si votre modèle sémantique a plusieurs requêtes avec plusieurs mesures, l'utilisation de variables peut réduire la durée globale de traitement des requêtes de moitié et améliorer les performances globales du modèle de données. En outre, cette solution est simple ; imaginez les économies au fur et à mesure que les formules deviennent plus compliquées, par exemple, quand vous manipulez des pourcentages et des totaux cumulés.

Utiliser des variables pour améliorer la lisibilité

En plus d’améliorer les performances, l’utilisation de variables peut s’avérer efficace pour simplifier la lecture du code.

Quand des variables sont utilisées, il est recommandé de leur attribuer des noms descriptifs. Dans l’exemple précédent, la variable est appelée SalesPriorYear (Ventes de l’année antérieure), indiquant clairement ce qu’elle calcule. En revanche, l’utilisation d’une variable appelée X, temp ou variable1 n’aurait pas du tout mis en évidence l’objectif de la variable.

L’utilisation de noms clairs, concis et explicites vous permet de mieux comprendre ce que vous essayez de calculer, et il sera beaucoup plus simple pour d’autres développeurs de gérer le rapport par la suite.

Utiliser des variables pour résoudre plusieurs étapes

Vous pouvez utiliser des variables pour essayer de déboguer une formule et identifier le problème. Vous pouvez simplifier la résolution des problèmes de votre calcul DAX à l’aide de variables en évaluant chacune d’elles séparément et en les rappelant après l’expression RETURN.

Dans l’exemple suivant, vous testez une expression qui est attribuée à une variable. À des fins de débogage, vous réécrivez provisoirement l’expression RETURN à écrire dans la variable. La définition de la mesure retourne 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%

L’expression RETURN affiche uniquement la valeur SalesPriorYear%. Cette technique vous permet de rétablir l’expression quand 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.