Aller au contenu

Créer une table de dates personnalisée

La création d'une table de dates personnalisée est une étape importante dans la conception du modèle de données dans Power BI. Dans cet article, je vous montre comment en créer une.

Défnition

Une table de dates ou un calendrier est une table de dimension des dates. Elle fournit des informations supplémentaires sur les dates telles que le jour de la semaine, le numéro du jour, la semaine, le mois, le trimestre, le semestre, l'année et bien d'autres. La table de dates a pour objectif de faciliter l'analyse temporelle.

Pourquoi créer un calendrier

Par défaut, lorsque Power BI détecte des dates dans les données, il génère automatquement des colonnes de détails telle que l'année, le trimestre et le mois. D'une part, les détails ne sont pas exhaustifs et d'autre part, elles sont difficiles à utiliser. D'autre part, il se peut qu'il y ait des dates manquantes dans vos données, ce qui peut causer des soucis dans l'analyse des données. Par convention, il est commun et recommandé de désactiver ce mécanisme en désactivant l'option Time Intelligence afin de gérer vous-mêmes les dates, d'où la table de dates.

Désactiver l'option Time Intelligence

Comme expliqué plutôt, nous allons désactiver l'option Time Intelligence. Pour cela, suivez les instructions suivantes

Cliquez sur l'onglet Fichier

Séléctionnez Options et paramètres

Séléctionnez Options

Il y a deux façons de procéder, vous pouvez désactiver l'option glablement dans Power BI ou uniquement dans le fichier actif. Je vous recommande de désactiver l'option globalement.

Créer une nouvelle table

La table de date est une table qui sera générer à partir d'une formule DAX, plus précisement par la fonction CALENDAR. La fonction CALENDAR prend en entrée deux paramètres:

  • StartDate : Date de début
  • EndDate : Date de fin

Elle retourne une table d'une colonne Date.

Dans la barre de formule, insérer la formule ci-dessous.

calendar = CALENDAR(MIN(myTable[date]), MAX(myTable[date]))

Ajouter de nouvelles colonnes

Colonne Formule
Mois Mois = FORMAT('calendar'[Date], "yyyy-mm")
Année Année = FORMAT('calendar'[Date], "yyyy")
Jour du mois N°Jour = FORMAT('calendar'[Date], "dd")
Jour de la semaine N°Jour = FORMAT('calendar'[Date], "w")
Date corrigée Date Corrigée = IF( 'calendar'[Date] = 'calendar'[Dernière Date], "Last Day", "" & FORMAT('calendar'[Date], "yyyy-MM-dd"))
Mois corrigé Mois Corrigé = IF('calendar'[mth] = 'calendar'[Dernier Mois], "Last Month", 'calendar'[Mois])

Il est possible d'ajouter toutes les colonnes

Calendar
calendar = 
ADDCOLUMNS (
    CALENDAR(
        MIN(rech_combined_kpi[dt]),
        MAX(rech_combined_kpi[dt])
    ),
    "Date (Bis)", [Date],
    "Date (Bis1)", [Date],
    "Date (Bis2)", [Date],
    "Date (Bis3)", [Date],
    "Date (Bis4)", [Date],
    "Date (Bis5)", [Date],
    "Mois", FORMAT([Date], "yyyy-mm"),
    "Année", FORMAT([Date], "yyyy"),
    "N°Jour", FORMAT([Date], "dd"),
    "N°Jour Semaine", FORMAT([Date], "w"),
    "Jour Semaine", FORMAT([Date], "w. ddd"),
    "Semaine", FORMAT([Date], "yyyy") & "-S" & IF(WEEKNUM([Date])<10,"0" & WEEKNUM([Date]), WEEKNUM([Date]))
)

Marquer comme table de dates

La dernière étape consiste à indiquer à Power BI que la table que l'on vient de créer est une table de date. Pour cela, on se rend dans vue Données. Pour cela, suivez les instructions suivantes.

Indiquer la relation

Notre table de date ne sera opérationnelle que lorsqu'elle sera liée à la table de faits myTable.

Cacher la colonne de date

Étant donné que nous avons notre propre table de dates, la colonne de date de la table myTable ne sera plus nécessaire, je vous suggère de la cacher pour éviter toute confusion. Pour cela, suivez les instructions suivantes.

Créer des mesures utilitaires

Il peut être très intéressant d'indiquer dans votre rapport l'historique des données disponibles. Cela permet aux utilisateurs de savoir si le rapport est à jour par exemple. Pour cela je vous propose de mettre en place quelques mesures.

La première date de l'historique

Permière Date = CALCULATE(
    MIN('calendar'[Date]),
    ALL('calendar')
)

La dernière date de l'historique

Dernière Date = CALCULATE(
    MAX('calendar'[Date]),
    ALL('calendar')
)

Message la dernère date de l'historique

Dernière mise à jour = 
"Dernière mise à jour : " & FORMAT ( 'calendar'[Dernière Date], "dd-MM-yyyy" )

Le dernier mois de données

Dernier Mois = CALCULATE( MAX('calendar'[Mois]), ALL('calendar') )


Bravo, votre table de dates est prête pour l'utilisation. Cette étape est très importante et vous le comprendrez par la suite. Vous l'aurez compris, vous pouvez rajouter autant de détails que vous voulez.