Introduction

Effectué

Vous pouvez écrire une formule Data Analysis Expressions (DAX) pour ajouter une table calculée à votre modèle. La formule peut dupliquer ou transformer des données de modèle existantes pour produire une nouvelle table.

Notes

Une table calculée ne peut pas se connecter à des données externes ; vous devez utiliser Power Query pour accomplir cette tâche.

Une formule de table calculée doit retourner un objet de table. La formule la plus simple peut dupliquer un modèle de table existant.

Les tables calculées ont un coût : Elles augmentent la taille de stockage du modèle et peuvent allonger le délai d’actualisation des données. Cela est dû au fait que les tables calculées sont recalculées lorsqu’elles contiennent des dépendances de formules liées à des tables actualisées.

Dupliquer une table

La section suivante décrit un problème de conception courant qui peut être résolu en créant une table calculée. Tout d’abord, vous devez télécharger et ouvrir le fichier Adventure Works DW 2020 M03.pbix, puis basculer vers le modèle de diagramme.

Dans le modèle de diagramme, notez que la table Sales (Ventes) comporte trois relations avec la table Date.

Image montrant deux tables : Sales et Date. Il existe trois relations entre les tables. Une seule relation est active.

Le modèle de diagramme affiche trois relations car la table Sales (Ventes) stocke les données de ventes par date de commande, date d’expédition et date d’échéance. Si vous examinez les colonnes OrderDateKey, ShipDateKey et DueDateKey, notez qu’une relation est représentée par une ligne pleine : il s’agit de la relation active. Les autres relations, représentées par des lignes en pointillés, sont les relations inactives.

Notes

Une seule relation active peut exister entre deux modèles de tables.

Dans le diagramme, placez le curseur sur la relation active pour mettre en surbrillance les colonnes associées pour lesquelles vous souhaitez obtenir plus d’informations. Dans ce cas, la relation active filtre la colonne OrderDateKey dans la table Sales (Ventes). Ainsi, les filtres appliqués à la table Date sont propagés à la table Sales (Ventes) pour filtrer les données par date de commande ; ils ne seront jamais filtrés par date d’expédition ou date d’échéance.

L’étape suivante consiste à supprimer les deux relations inactives entre la table Date et la table Sales (Ventes). Pour supprimer une relation, cliquez dessus avec le bouton droit, puis sélectionnez Supprimer dans le menu contextuel. Veillez à supprimer les deux relations inactives.

Ajoutez ensuite une nouvelle table pour permettre aux utilisateurs du rapport de filtrer les ventes par date d’expédition. Passez à la vue Rapport puis, dans l’onglet du ruban Modélisation, dans le groupe Calculs, sélectionnez Nouvelle table.

Image montrant l’onglet du ruban Modélisation dans Power BI Desktop. Dans le groupe Calculs, la commande Nouvelle table est mise en surbrillance.

Dans la barre de formule (située sous le ruban), entrez la définition de la table calculée suivante, puis appuyez sur Entrée.

Ship Date = 'Date'

La définition de la table calculée duplique les données de la table Date pour produire une nouvelle table nommée Ship Date (Date d’expédition). La table Ship Date (Date d’expédition) comporte exactement les mêmes colonnes et les mêmes lignes que la table Date. Quand les données de la table Date sont actualisées, celles de la table Ship Date (Date d’expédition) sont également recalculées afin d’être toujours synchronisées.

Basculez vers le modèle de diagramme, puis notez l’ajout de la table Ship Date (Date d’expédition).

Image affichant la table Ship Date (Date d’expédition), qui comprend les mêmes colonnes que la table Date.

Créez ensuite une relation entre la colonne DateKey de la table Ship Date (Date d’expédition) et la colonne ShipDateKey de la table Sales (Ventes). Vous pouvez créer la relation en faisant glisser la colonne DateKey de la table Ship Date (Date d’expédition) vers la colonne ShipDateKey de la table Sales (Ventes).

Une table calculée ne duplique que les données ; elle ne duplique pas les objets ou les propriétés de modèle tels que la visibilité des colonnes ou les hiérarchies. Vous devrez les configurer pour la nouvelle table, si nécessaire.

Conseil

Vous pouvez renommer les colonnes d’une table calculée. Dans cet exemple, il est judicieux de renommer les colonnes afin qu’elles décrivent mieux leur objectif. Par exemple, vous pouvez renommer la colonne Fiscal Year (Année fiscale) de la table Ship Date (Date d’expédition) en Ship Fiscal Year (Année fiscale d’expédition). Ainsi, quand des champs de la table Ship Date (Date d’expédition) sont utilisés dans des visuels, leurs noms sont automatiquement inclus dans les légendes, par exemple le titre du visuel ou les étiquettes de l’axe.

Pour terminer la conception de la table Ship Date (Date d’expédition), vous pouvez :

  • Renommer les colonnes suivantes :
    • Date en Ship Date (Date d’expédition)
    • Fiscal Year (Année fiscale) en Ship Fiscal Year (Année fiscale d’expédition)
    • Fiscal Quarter (Trimestre fiscal) en Ship Fiscal Quarter (Trimestre fiscal d’expédition)
    • Month (Mois) en Ship Month (Mois d’expédition)
    • Full Date (Date complète) en Ship Full Date (Date complète d’expédition)
  • Triez la colonne Ship Full Date (Date complète d’expédition) par la colonne Ship Date (Date d’expédition).
  • Triez la colonne Ship Month (Mois d’expédition) par la colonne MonthKey.
  • Masquez la colonne MonthKey.
  • Créez une hiérarchie nommée Fiscal, avec les niveaux suivants :
    • Ship Fiscal Year (Année fiscale d’expédition)
    • Ship Fiscal Quarter (Trimestre fiscal d’expédition)
    • Ship Month (Mois d’expédition)
    • Ship Full Date (Date complète d’expédition)
  • Marquez la table Ship Date (Date d’expédition) comme une table de dates à l’aide de la colonne Ship Date (Date d’expédition).

Les tables calculées sont utiles dans les scénarios où plusieurs relations existent entre deux tables, comme décrit précédemment. Elles permettent également d’ajouter une table de dates à votre modèle. Des tables de dates sont requises pour appliquer des filtres de temps spéciaux, connus sous le nom de Time Intelligence.

Créer une table de dates

Dans l’exemple suivant, une deuxième table calculée est créée, cette fois à l’aide de la fonction DAX CALENDARAUTO.

Créez la table calculée Due Date (Date d’échéance) en utilisant la définition suivante.

Due Date = CALENDARAUTO(6)

La fonction DAX CALENDARAUTO accepte un seul argument facultatif, qui est le dernier mois de l’année, et retourne une table à une seule colonne. Si vous n’indiquez pas de numéro de mois, le numéro 12 (pour décembre) est utilisé par défaut. Par exemple, chez Adventure Works, l’année fiscale se termine le 30 juin de chaque année, la valeur 6 (pour juin) est donc utilisée.

La fonction analyse toutes les colonnes de dates et dates/heures de votre modèle pour déterminer les valeurs de date stockées les plus anciennes et les plus récentes. Elle génère ensuite un ensemble complet de dates qui couvrent toutes les dates de votre modèle, ce qui permet de s’assurer que des années entières de dates sont chargées. Par exemple, si la date la plus ancienne stockée dans votre modèle est le 15 octobre 2021, la première date retournée par la fonction CALENDARAUTO sera le 1er juillet 2021. Si la dernière date stockée dans le modèle est le 15 juin 2022, la dernière date retournée par la fonction CALENDARAUTO sera le 30 juin 2022.

En effet, la fonction CALENDARAUTO garantit que les conditions suivantes pour marquer une table de dates sont remplies :

  • La table doit inclure une colonne de type de données Date.
  • La colonne doit contenir des années complètes.
  • La colonne ne doit pas avoir de dates manquantes.

Conseil

Vous pouvez également créer une table de dates en utilisant la fonction DAX CALENDAR et en passant deux valeurs de date, qui représentent la plage de dates. La fonction génère une ligne pour chaque date de la plage. Vous pouvez passer des valeurs de date statiques ou des expressions qui récupèrent les dates les plus anciennes/les plus récentes à partir de colonnes spécifiques de votre modèle.

Basculez ensuite vers la vue de données puis, dans le volet Champs, sélectionnez la table Due Date (Date d’échéance). À présent, passez en revue la colonne de dates. Vous souhaiterez peut-être les classer pour afficher la date la plus ancienne de la première ligne en sélectionnant la flèche à l’intérieur de l’en-tête de colonne Date, puis en triant les dates par ordre croissant.

Notes

Le classement ou le filtrage des colonnes ne modifie pas la manière dont les valeurs sont stockées. Ces fonctions vous permettent d’explorer et de comprendre les données.

Image montrant la table Due Date (Date d’échéance) dans la vue des données. Il existe une colonne nommée Date et, lorsque les données sont triées de la valeur la plus ancienne à la valeur la plus récente, la première date est le 1er juillet 2017.

Maintenant que la colonne Date est sélectionnée, examinez le message affiché dans la barre d’état (située dans le coin inférieur gauche). Il indique le nombre de lignes stockées dans la table et le nombre de valeurs distinctes trouvées dans la colonne sélectionnée.

Image montrant le message d’état : TABLE : COLONNE Due Date (Date d’échéance) (1 461 lignes) : Date (1 461 valeurs distinctes).

Quand les lignes de la table et les valeurs distinctes sont identiques, cela signifie que la colonne contient des valeurs uniques. Ce facteur est important pour deux raisons : Il répond aux conditions requises pour marquer une table de dates et permet l’utilisation de cette colonne dans un modèle de relation pour la partie « un ».

La table calculée Due Date (Date d’échéance) est recalculée chaque fois qu’une table contenant une colonne de dates est actualisée. En d’autres termes, quand une ligne est chargée dans la table Sales (Ventes) avec une date de commande au 1er juillet 2022, la table Due Date (Date d’échéance) s’étend automatiquement pour inclure les dates jusqu’à la fin de l’année suivante : 30 juin 2023.

La table Due Date (Date d’échéance) requiert des colonnes supplémentaires pour prendre en charge les exigences de filtrage et de regroupement connues, en particulier par année, trimestre et mois.