Introduction
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.
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.
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).
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.
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.
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.