Sélectionner une page

Tuto Power BI

Comprendre la différence entre colonne calculée et mesure

 

Si vous traitez des calculs dans Power BI, vous êtes probablement confronté  régulièrement au choix entre colonne calculée et mesure. Il est important de comprendre les différences entre ces deux, car une utilisation inadéquate de l’un ou de l’autre peut entraîner divers problèmes : de mauvaises performances à des résultats incorrects.

Les colonnes calculées et les mesures sont créées à l’aide de DAX, mais elles ne sont pas créées dans le même contexte. Nous détaillons dans cet article les différences entre les deux notions et tentons de donner les éléments qui vous permettront de choisir la meilleure solution dans toutes les situations.

1. Les Colonnes calculées

Lorsque vous modifiez vos tables de données dans Power BI, vous avez la possibilité de créer de nouvelles colonnes. Le contenu des colonnes est défini par une expression DAX évaluée ligne par ligne, on parle alors de contexte de ligne. La notion de contexte est primordiale dans Power BI et si vous voulez maîtriser totalement le DAX, il est nécessaire de comprendre ses implications. Nous ne rentrons pas dans le détail dans cet article.

L’expression DAX définie pour une colonne calculée fonctionne dans le contexte de la ligne actuelle de cette table. Toute référence à une colonne renvoie la valeur de cette colonne pour la ligne actuelle. Vous ne pouvez pas accéder directement aux valeurs des autres lignes.

Une colonne calculée est comme n’importe quelle autre colonne d’une table; il est possible de l’utiliser dans n’importe quelle partie d’un rapport comme toutes autres colonnes originales. Vous pouvez également l’utiliser  pour définir une relation avec une autre table de votre fichier Power BI si nécessaire.

La colonne est calculées au moment de l’importation des colonnes « originales » de la table de données. Elle est par conséquent stockée de la même façon que les autres colonnes. Ainsi, plus vous créez de colonnes calculées, plus votre fichier sera lourd. En d’autres termes, le nombre de colonnes calculées impacte le temps de traitement du fichier et non le temps de requête.

Ce comportement est utile lorsque vous créez des colonnes calculées très complexes. Le temps nécessaire pour les calculer est toujours le temps de traitement et non le temps de requête, ce qui se traduit par une meilleure expérience utilisateur. Attention toutefois à ne pas multiplier les colonnes calculées pour faire des calculs intermédiaires car vous alourdirez le modèle Power BI.

2. Les Mesures

Il est possible de résumer simplement  en affirmant que les mesures permettent de faire des calculs sur plusieurs lignes comme par exemple des agrégations (somme, moyenne etc..).

Contrairement aux colonnes calculées, les mesures sont évaluées dans un contexte de filtre (et non de ligne). Le contexte du filtre est défini par les filtres appliqués dans le rapport, tels que la sélection de lignes, la sélection de colonnes, les filtres de rapport et les segments appliqués. Ainsi la mesure est calculée a chaque changement de contexte de filtre, par exemple un utilisateur interagit avec un slicer du rapport. 

On sent ainsi l’autre différence venir ici : les mesures sont (re)calculées à chaque requête et non lors du traitement des données. La formule DAX qui définit la mesure est stockée comme metadonnée puis effectivement calculée lorsqu’un résultat (requête) est demandé par un utilisateur. Les mesures n’alourdissent donc pas le fichier mais peuvent être la cause de ralentissement lors de l’utilisation du fichier Power BI.

3. Comment choisir entre les deux

Pour résumer ce que l’on a vu plus haut : D’un côté la valeur d’une colonne calculée est calculée lors de l’actualisation des données et utilise la ligne actuelle comme contexte ; elle ne dépend pas de l’interaction de l’utilisateur dans le rapport. De l’autre, une mesure fonctionne sur des agrégations de données définies par le contexte actuel, qui dépend du filtre appliqué dans le rapport, tel qu’un segment, une sélection de lignes dans un tableau etc.

Vous pouvez choisir une colonne calculée dans les situations suivantes:

  • Votre calcul est strictement lié à une seule et même ligne d’une table ;
  • Vous souhaitez segmenter chaque ligne de votre dataset (par exemple en affectant une plage d’âge 0-18 / 18-25 à chacun de vos clients) ;
  • Vous avez besoin de placer les valeurs dans un axe d’un visuel (ligne ou colonne d’une matrice par exemple) ou dans un slicer.

Dans les autres cas, nous vous conseillons d’utiliser les mesures qui vous permettent d’appliquer les calculs sur différents niveau de granularité selon le contexte de filtre appliqué.