Applies ToExcel pour Microsoft 365 Excel 2024 Excel 2021 Excel 2019 Excel 2016

Les tables de dates dans Power Pivot sont essentielles pour la navigation et le calcul des données au fil du temps. Cet article fournit une compréhension approfondie des tables de dates et de la façon dont vous pouvez les créer dans Power Pivot. En particulier, cet article décrit :

  • Pourquoi une table de dates est importante pour la navigation et le calcul des données par date et heure.

  • Comment utiliser Power Pivot pour ajouter une table de dates au modèle de données.

  • Comment créer des colonnes de date telles que Year, Month et Period dans une table de dates.

  • Comment créer des relations entre les tables de dates et les tables de faits.

  • Comment travailler avec le temps.

Cet article est destiné aux utilisateurs qui débutent avec Power Pivot. Toutefois, il est important d’avoir déjà une bonne compréhension de l’importation de données, de la création de relations et de la création de colonnes et de mesures calculées.

Cet article ne décrit pas comment utiliser les fonctions d'Time-Intelligence DAX dans les formules de mesure. Pour plus d’informations sur la création de mesures avec les fonctions Time Intelligence DAX, voir Time Intelligence dans Power Pivot dans Excel.

Remarque : Dans Power Pivot, les noms « measure » et « calculated field » sont synonymes. Nous utilisons la mesure de nom tout au long de cet article. Pour plus d’informations, consultez Mesures dans Power Pivot.

Sommaire

Présentation des tables de dates

Presque toutes les analyses de données impliquent la navigation et la comparaison des données sur des dates et des heures. Par exemple, vous pouvez additionner les montants des ventes pour le dernier trimestre fiscal, puis comparer ces totaux avec d’autres trimestres, ou calculer un solde de clôture de fin de mois pour un compte. Dans chacun de ces cas, vous utilisez des dates comme moyen de regrouper et d’agréger des transactions ou des soldes de ventes pour une période donnée dans le temps.

Rapport Power View

Tableau croisé dynamique Total des ventes par trimestre d’exercice

Une table de dates peut contenir de nombreuses représentations différentes de dates et d’heure. Par exemple, une table de dates comporte souvent des colonnes telles que l’année fiscale, le mois, le trimestre ou la période que vous pouvez sélectionner en tant que champs dans une liste de champs lors du découpage et du filtrage de vos données dans des tableaux croisés dynamiques ou des rapports Power View.

Liste des champs Power View

Liste de champs Power View

Pour que les colonnes de date telles que Year, Month et Quarter incluent toutes les dates dans leur plage respective, la table de dates doit avoir au moins une colonne avec un ensemble contigu de dates. Autrement dit, cette colonne doit avoir une ligne par jour pour chaque année incluse dans la table de dates.

Par exemple, si les données que vous souhaitez parcourir ont des dates comprises entre le 1er février 2010 et le 30 novembre 2012 et que vous signalez une année civile, vous souhaiterez une table de dates avec au moins une plage de dates comprise entre le 1er janvier 2010 et le 31 décembre 2012. Chaque année dans votre table de dates doit contenir tous les jours de chaque année. Si vous actualisez régulièrement vos données avec des données plus récentes, vous souhaiterez peut-être exécuter la date de fin d’un an ou de deux, de sorte que vous n’ayez pas à mettre à jour votre table de dates au fil du temps.

Table de dates avec un ensemble contigu de dates

Table de dates avec des dates contiguës

Si vous créez un rapport sur un exercice, vous pouvez créer une table de dates avec un ensemble contigu de dates pour chaque exercice. Par exemple, si votre exercice commence le 1er mars et que vous disposez de données pour les exercices 2010 jusqu’à la date actuelle (par exemple, dans l’exercice 2013), vous pouvez créer une table de dates qui commence le 01/03/2009 et inclut au moins tous les jours de chaque année fiscale jusqu’à la dernière date de l’année fiscale 2013.

Si vous souhaitez créer des rapports sur l’année civile et l’année fiscale, vous n’avez pas besoin de créer des tables de dates distinctes. Une table de dates unique peut inclure des colonnes pour une année civile, une année fiscale et même un calendrier de période de 4 semaines. L’important est que votre table de dates contient un ensemble contigu de dates pour toutes les années incluses.

Ajout d’une table de dates au modèle de données

Il existe plusieurs façons d’ajouter une table de dates à votre modèle de données :

  • Importez à partir d’une base de données relationnelle ou d’une autre source de données.

  • Créez un tableau de dates dans Excel, puis copiez ou créez un lien vers un nouveau tableau dans Power Pivot.

  • Importez à partir de Microsoft Azure Marketplace.

Examinons chacun de ces éléments de plus près.

Importer à partir d’une base de données relationnelle

Si vous importez une partie ou la totalité de vos données à partir d’un entrepôt de données ou d’un autre type de base de données relationnelle, il est probable qu’il existe déjà une table de dates et des relations entre celle-ci et le reste des données que vous importez. Les dates et le format correspondent probablement aux dates de vos données de faits, et les dates commencent probablement bien dans le passé et vont loin dans l’avenir. La table de dates que vous souhaitez importer peut être très volumineuse et contenir une plage de dates au-delà de ce que vous devez inclure dans votre modèle de données. Vous pouvez utiliser les fonctionnalités de filtre avancées de l’Assistant Importation de table de Power Pivot pour choisir uniquement les dates et les colonnes particulières dont vous avez vraiment besoin. Cela peut réduire considérablement la taille de votre classeur et améliorer les performances.

Assistant Importation de table

Boîte de dialogue de l’Assistant Importation de table

Dans la plupart des cas, vous n’avez pas besoin de créer de colonnes supplémentaires telles que l’année fiscale, la semaine, le nom du mois, etc. car elles existent déjà dans la table importée. Toutefois, dans certains cas, une fois la table de dates importée dans votre modèle de données, vous devrez peut-être créer des colonnes de date supplémentaires, en fonction d’un besoin particulier de création de rapports. Heureusement, cela est facile à faire à l’aide de DAX. Vous en apprendrez plus sur la création de champs de table de dates ultérieurement. Chaque environnement est différent. Si vous ne savez pas si vos sources de données ont une date ou une table de calendrier associée, contactez votre administrateur de base de données.

Créer un tableau de dates dans Excel

Vous pouvez créer une table de dates dans Excel, puis la copier dans une nouvelle table du modèle de données. C’est vraiment assez facile à faire et cela vous donne beaucoup de flexibilité.

Lorsque vous créez une table de dates dans Excel, vous commencez par une seule colonne avec une plage de dates contiguë. Vous pouvez ensuite créer des colonnes supplémentaires telles que Année, Trimestre, Mois, Année fiscale, Période, etc. dans la feuille de calcul Excel à l’aide de formules Excel, ou, après avoir copié le tableau dans le modèle de données, vous pouvez les créer sous forme de colonnes calculées. La création de colonnes de date supplémentaires dans Power Pivot est décrite dans la section Ajout de nouvelles colonnes de date à la table de dates plus loin dans cet article.

Guide pratique pour créer une table de dates dans Excel et la copier dans le modèle de données

  1. Dans Excel, dans une feuille de calcul vide, dans la cellule A1, tapez un nom d’en-tête de colonne pour identifier une plage de dates. En règle générale, il s’agitde quelque chose comme Date, DateTime ou DateKey.

  2. Dans la cellule A2, tapez une date de début. Par exemple, 1/1/2010.

  3. Cliquez sur la poignée de remplissage et faites-la glisser vers le bas vers un numéro de ligne qui inclut une date de fin. Par exemple, 31/12/2016.

    Colonne de date dans Excel

  4. Sélectionnez toutes les lignes de la colonne Date (y compris le nom de l’en-tête dans la cellule A1).

  5. Dans le groupe Styles , cliquez sur Mettre en forme en tant que tableau, puis sélectionnez un style.

  6. Dans la boîte de dialogue Mettre en forme en tant que tableau , cliquez sur OK.

    Colonne de date dans Power Pivot

  7. Copiez toutes les lignes, y compris l’en-tête.

  8. Dans Power Pivot, sous l’onglet Accueil , cliquez sur Coller.

  9. Dans Coller l’aperçu > Nom de la table , tapez un nom tel que Date ou Calendrier. Laissez l’option Utiliser la première ligne comme en-têtesde colonne cochée, puis cliquez sur OK.

    Aperçu de collage

    La nouvelle table de dates (nommée Calendrier dans cet exemple) dans Power Pivot ressemble à ceci :

    Table de dates dans Power Pivot

    Remarque : Vous pouvez également créer une table liée à l’aide de Ajouter au modèle de données. Toutefois, cela rend votre classeur inutilement volumineux, car il a deux versions de la table de dates ; un dans Excel et un dans Power Pivot.

Remarque : La date du nom est un mot clé dans Power Pivot. Si vous nommez la table que vous créez dans Power Pivot Date, vous devez placer le nom de la table entre guillemets simples dans toutes les formules DAX qui la référencent dans un argument. Tous les exemples d’images et de formules de cet article font référence à une table de dates créée dans Power Pivot nommée Calendrier.

Vous disposez maintenant d’une table de dates dans votre modèle de données. Vous pouvez ajouter de nouvelles colonnes de date telles que Année, Mois, etc. à l’aide de DAX.

Ajout de nouvelles colonnes de date à la table de dates

Une table de dates avec une colonne de date unique qui a une ligne par jour pour chaque année est importante pour définir toutes les dates d’une plage de dates. Elle est également nécessaire pour créer une relation entre la table de faits et la table de dates. Toutefois, cette colonne de date unique avec une ligne pour chaque jour n’est pas utile lors de l’analyse par dates dans un rapport de tableau croisé dynamique ou Power View. Vous souhaitez que votre table de dates inclue des colonnes qui vous aident à agréger vos données pour une plage ou un groupe de dates. Par exemple, vous pouvez additionner les montants des ventes par mois ou trimestre, ou créer une mesure qui calcule la croissance d’une année à l’autre. Dans chacun de ces cas, votre table de dates a besoin de colonnes année, mois ou trimestre qui vous permettent d’agréger vos données pour cette période.

Si vous avez importé votre table de dates à partir d’une source de données relationnelle, elle peut déjà inclure les différents types de colonnes de date souhaités. Dans certains cas, vous pouvez modifier certaines de ces colonnes ou créer des colonnes de date supplémentaires. Cela est particulièrement vrai si vous créez votre propre table de dates dans Excel et que vous la copiez dans le modèle de données. Heureusement, la création de colonnes de date dans Power Pivot est assez facile avec les fonctions date et heure dans DAX.

Conseil : Si vous n’avez pas encore travaillé avec DAX, un excellent point de départ est l’aide de Démarrage rapide : Découvrir les principes de base de DAX en 30 minutes sur Office.com.

Fonctions date et heure DAX

Si vous avez déjà travaillé avec des fonctions de date et d’heure dans des formules Excel, vous connaissez probablement les fonctions date et heure. Bien que ces fonctions soient similaires à leurs équivalents dans Excel, il existe quelques différences importantes :

  • Les fonctions Date et Heure DAX utilisent un type de données datetime.

  • Ils peuvent prendre des valeurs d’une colonne en tant qu’argument.

  • Ils peuvent être utilisés pour retourner et/ou manipuler des valeurs de date.

Ces fonctions sont souvent utilisées lors de la création de colonnes de date personnalisées dans une table de dates. Il est donc important de les comprendre. Nous allons utiliser un certain nombre de ces fonctions pour créer des colonnes pour Year, Quarter, FiscalMonth, etc.

Remarque : Les fonctions Date et Heure dans DAX ne sont pas identiques aux fonctions Time Intelligence. En savoir plus sur Time Intelligence dans Power Pivot dans Excel.

DAX inclut les fonctions Date et Heure suivantes :

Vous pouvez également utiliser de nombreuses autres fonctions DAX dans vos formules. Par exemple, la plupart des formules décrites ici utilisent des fonctions mathématiques et trigonométriques comme MOD et TRUNC, des fonctions logiques comme SI et des fonctions de texte comme FORMAT Pour plus d’informations sur d’autres fonctions DAX, consultez la section Ressources supplémentaires plus loin dans cet article.

Exemples de formules pour une année civile

Les exemples suivants décrivent les formules utilisées pour créer des colonnes supplémentaires dans une table de dates nommée Calendrier. Une colonne nommée Date existe déjà et contient une plage contiguë de dates comprise entre le 1/1/2010 et le 31/12/2016.

Année

=YEAR([date])

Dans cette formule, la fonction YEAR retourne l’année à partir de la valeur de la colonne Date. Étant donné que la valeur de la colonne Date est de type datetime, la fonction YEAR sait comment retourner l’année à partir de celle-ci.

Colonne Année

Mois

=MONTH([date])

Dans cette formule, comme avec la fonction YEAR, nous pouvons simplement utiliser la fonction MONTH pour renvoyer une valeur de mois à partir de la colonne Date.

Colonne Mois

Trimestre

=INT(([Mois]+2)/3)

Dans cette formule, nous utilisons la fonction INT pour retourner une valeur de date sous forme d’entier. L’argument que nous spécifions pour la fonction INT est la valeur de la colonne Month, ajoutez 2, puis divisez-la par 3 pour obtenir notre trimestre, 1 à 4.

Colonne Trimestre

Month Name

=FORMAT([date],"mmmm »)

Dans cette formule, pour obtenir le nom du mois, nous utilisons la fonction FORMAT pour convertir une valeur numérique de la colonne Date en texte. Nous spécifions la colonne Date comme premier argument, puis le format ; nous voulons que le nom du mois affiche tous les caractères, donc nous utilisons « mmmm ». Notre résultat ressemble à ceci :

Colonne Nom de mois

Si nous voulons retourner le nom de mois abrégé en trois lettres, nous utilisons « mmm » dans l’argument format.

Jour de la semaine

=FORMAT([date],"ddd »)

Dans cette formule, nous utilisons la fonction FORMAT pour obtenir le nom du jour. Étant donné que nous voulons simplement un nom de jour abrégé, nous spécifions « ddd » dans l’argument format.

Colonne Jour de la semaine
Exemple de tableau croisé dynamique

Une fois que vous avez des champs pour des dates telles que Année, Trimestre, Mois, etc., vous pouvez les utiliser dans un tableau croisé dynamique ou un rapport. Par exemple, l’image suivante montre le champ SalesAmount de la table de faits Sales dans VALUES, et l’année et le trimestre de la table de dimension Calendrier dans ROWS. SalesAmount est agrégé pour le contexte de l’année et du trimestre.

Exemple de tableau croisé dynamique

Exemples de formules pour un exercice

Année fiscale

=SI([Mois]<= 6,[Année],[Année]+1)

Dans cet exemple, l’exercice commence le 1er juillet.

Il n’existe aucune fonction qui peut extraire un exercice à partir d’une valeur de date, car les dates de début et de fin d’un exercice sont souvent différentes de celles d’une année civile. Pour obtenir l’année fiscale, nous utilisons d’abord une fonction SI pour tester si la valeur de Month est inférieure ou égale à 6. Dans le deuxième argument, si la valeur de Month est inférieure ou égale à 6, retournez la valeur de la colonne Year. Si ce n’est pas le cas, retournez la valeur de Year et ajoutez 1.

Colonne Exercice

Une autre façon de spécifier une valeur de fin de mois d’exercice consiste à créer une mesure qui spécifie simplement le mois. Par exemple, FYE :=6. Vous pouvez ensuite référencer le nom de la mesure à la place du numéro de mois. Par exemple, =SI([Mois]<=[FYE],[Année],[Année]+1). Cela offre plus de flexibilité lors du référencement du mois de fin d’exercice dans plusieurs formules différentes.

Mois fiscal

=SI([Mois]<= 6, 6+[Mois], [Mois]- 6)

Dans cette formule, nous spécifions si la valeur de [Month] est inférieure ou égale à 6, puis prenons 6 et ajoutez la valeur de Month, sinon soustrayez 6 de la valeur de [Month].

Colonne Mois d’exercice

Trimestre fiscal

=INT(([FiscalMonth]+2)/3)

La formule que nous utilisons pour FiscalQuarter est pratiquement la même que pour trimestre de notre année civile. La seule différence est que nous spécifions [FiscalMonth] au lieu de [Month].

Colonne Trimestre d’exercice

Jours fériés ou dates spéciales

Vous pouvez inclure une colonne de date qui indique que certaines dates sont des jours fériés ou une autre date spéciale. Par exemple, vous pouvez additionner les totaux des ventes pour le Jour de l’an en ajoutant un champ Jour férié à un tableau croisé dynamique, en tant que segment ou filtre. Dans d’autres cas, vous pouvez exclure ces dates d’autres colonnes de date ou d’une mesure.

Inclure des jours fériés ou des jours spéciaux est assez simple. Vous pouvez créer un tableau dans Excel contenant les dates que vous souhaitez inclure. Vous pouvez ensuite copier ou utiliser Ajouter au modèle de données pour l’ajouter au modèle de données en tant que table liée. Dans la plupart des cas, il n’est pas nécessaire de créer une relation entre la table et la table Calendrier. Toutes les formules qui y font référence peuvent utiliser la fonction LOOKUPVALUE pour retourner des valeurs.

Voici un exemple de tableau créé dans Excel qui inclut des jours fériés à ajouter à la table de dates :

Date

Jour férié

1/1/2010

Nouvelle année

11/25/2010

Action de grâce

12/25/2010

Noël

1/1/2011

Nouvelle année

11/24/2011

Action de grâce

12/25/2011

Noël

01/01/2012

Nouvelle année

22.11.12

Action de grâce

12/25/2012

Noël

1/1/2013

Nouvelle année

11/28/2013

Action de grâce

12/25/2013

Noël

11/27/2014

Action de grâce

12/25/2014

Noël

01/01/2014

Nouvelle année

11/27/2014

Action de grâce

12/25/2014

Noël

1/1/2015

Nouvelle année

11/26/2014

Action de grâce

12/25/2015

Noël

01.01.16

Nouvelle année

11/24/2016

Action de grâce

12/25/2016

Noël

Dans la table de dates, nous créons une colonne nommée Congé et utilisons une formule comme celle-ci :

=LOOKUPVALUE(Holidays[Holiday],Holidays[date],Calendar[date])

Examinons cette formule plus attentivement.

Nous utilisons la fonction LOOKUPVALUE pour obtenir des valeurs à partir de la colonne Congés de la table Jours fériés. Dans le premier argument, nous spécifions la colonne où sera notre valeur de résultat. Nous spécifions la colonne Congé dans la table Jours fériés , car il s’agit de la valeur que nous voulons retourner.

=LOOKUPVALUE(Holidays[Holiday],Holidays[date],Calendar[date])

Nous spécifions ensuite le deuxième argument, la colonne de recherche qui contient les dates que nous voulons rechercher. Nous spécifions la colonne Date dans la table Jours fériés , comme suit :

=LOOKUPVALUE(Holidays[Holiday],Holidays[date],Calendar[date])

Enfin, nous spécifions la colonne dans notre table Calendrier qui contient les dates que nous voulons rechercher dans la table Congés . Il s’agit bien sûr de la colonne Date dans la table Calendrier .

=LOOKUPVALUE(Holidays[Holiday],Holidays[date],Calendar[date])

La colonne Jour férié renvoie le nom du jour férié pour chaque ligne dont la valeur de date correspond à une date dans la table Jours fériés.

Table Jours fériés

Calendrier personnalisé : treize périodes de quatre semaines

Certaines organisations, comme la vente au détail ou la restauration, font souvent rapport sur des périodes différentes, comme treize périodes de quatre semaines. Avec un calendrier de treize périodes de quatre semaines, chaque période est de 28 jours ; par conséquent, chaque période contient quatre lundis, quatre mardis, quatre mercredis, et ainsi de suite. Chaque période contient le même nombre de jours et, en règle générale, les jours fériés se situent dans la même période chaque année. Vous pouvez choisir de commencer une période n’importe quel jour de la semaine. Tout comme pour les dates d’un calendrier ou d’un exercice, vous pouvez utiliser DAX pour créer des colonnes supplémentaires avec des dates personnalisées.

Dans les exemples ci-dessous, la première période complète commence le premier dimanche de l’exercice. Dans ce cas, l’exercice commence le 7/1.

Semaine

Cette valeur nous donne le numéro de semaine commençant par la première semaine complète de l’exercice. Dans cet exemple, la première semaine complète commence le dimanche. Ainsi, la première semaine complète de la première année fiscale de la table Calendrier commence le 4/07/2010 et se poursuit jusqu’à la dernière semaine complète dans la table Calendrier. Bien que cette valeur elle-même ne soit pas très utile dans l’analyse, il est nécessaire de calculer pour une utilisation dans d’autres formules de période de 28 jours.

=INT([date]-40356)/7)

Examinons cette formule plus attentivement.

Tout d’abord, nous créons une formule qui retourne les valeurs de la colonne Date sous la forme d’un entier, comme suit :

=INT([date])

Nous voulons ensuite rechercher le premier dimanche du premier exercice. Nous voyons que c’est le 04/07/2010.

Colonne Semaine

À présent, soustrayez 40356 (qui est l’entier du 27/06/2010, le dernier dimanche de l’exercice précédent) de cette valeur pour obtenir le nombre de jours depuis le début des jours dans notre table Calendrier, comme suit :

=INT([date]-40356)

Ensuite, divisez le résultat par 7 (jours dans une semaine), comme suit :

=INT(([date]-40356)/7)

Le résultat ressemble à ceci :

Colonne Semaine

Point

La période de ce calendrier personnalisé contient 28 jours et commence toujours un dimanche. Cette colonne retourne le numéro de la période commençant par le premier dimanche du premier exercice.

=INT(([Semaine]+3)/4)

Examinons cette formule plus attentivement.

Tout d’abord, nous créons une formule qui retourne une valeur de la colonne Week sous forme d’entier, comme suit :

=INT([Semaine])

Ajoutez ensuite 3 à cette valeur, comme suit :

=INT([Semaine]+3)

Divisez ensuite le résultat par 4, comme suit :

=INT(([Semaine]+3)/4)

Le résultat ressemble à ceci :

Colonne Période

Exercice fiscal de la période

Cette valeur retourne l’année fiscale d’une période.

=INT(([Période]+12)/13)+2008

Examinons cette formule plus attentivement.

Tout d’abord, nous créons une formule qui retourne une valeur de Point et ajoute 12 :

= ([Période]+12)

Nous divisons le résultat par 13, car il y a treize périodes de 28 jours dans l’exercice financier :

=(([Période]+12)/13)

Nous ajoutons 2010, car il s’agit de la première année du tableau :

=(([Période]+12)/13)+2010

Enfin, nous utilisons la fonction INT pour supprimer toute fraction du résultat et retourner un nombre entier, divisé par 13, comme suit :

=INT(([Période]+12)/13)+2010

Le résultat ressemble à ceci :

Colonne Période d’exercice

Période dans FiscalYear

Cette valeur retourne le nombre de périodes, 1 à 13, en commençant par la première période complète (à compter du dimanche) de chaque exercice.

=SI(MOD([Période],13), MOD([Période],13),13)

Cette formule étant un peu plus complexe, nous allons d’abord la décrire dans un langage que nous comprenons mieux. Cette formule indique : divisez la valeur de [Période] par 13 pour obtenir un nombre de période (1-13) dans l’année. Si ce nombre est 0, retournez 13.

Tout d’abord, nous créons une formule qui retourne le reste de la valeur de Period par 13. Nous pouvons utiliser mod ( fonctions mathématiques et trigonométriques) comme suit :

=MOD([Période],13)

Ceci, pour la plupart, nous donne le résultat souhaité, sauf si la valeur de Période est 0, car ces dates ne tombent pas dans le premier exercice, comme dans les cinq premiers jours de notre exemple de table de dates calendrier. Nous pouvons nous en occuper avec une fonction SI. Si notre résultat est 0, nous renvoyons 13, comme suit :

=SI(MOD([Période],13),MOD([Période],13),13)

Le résultat ressemble à ceci :

Colonne Période de l’exercice

Exemple de tableau croisé dynamique

L’image ci-dessous montre un tableau croisé dynamique avec le champ SalesAmount de la table de faits Sales dans VALUES, et les champs PeriodFiscalYear et PeriodInFiscalYear de la table de dimension date calendrier dans ROWS. SalesAmount est agrégé pour le contexte par année fiscale et par période de 28 jours de l’exercice.

Exemple tableau croisé dynamique pour l’exercice

Relations

Après avoir créé une table de dates dans votre modèle de données, pour commencer à parcourir vos données dans les tableaux croisés dynamiques et les rapports, et pour agréger des données en fonction des colonnes de votre table de dimension de date, vous devez créer une relation entre la table de faits avec vos données de transaction et la table de dates.

Étant donné que vous devez créer une relation basée sur des dates, vous devez vous assurer de créer cette relation entre les colonnes dont les valeurs sont du type de données datetime (Date).

Pour chaque valeur de date dans la table de faits, la colonne de recherche associée dans la table de dates doit contenir des valeurs correspondantes. Par exemple, une ligne (enregistrement de transaction) dans la table de faits Sales avec une valeur de 8/15/2012 12:00 AM dans la colonne DateKey doit avoir une valeur correspondante dans la colonne Date associée dans la table date (nommée Calendrier). C’est l’une des raisons les plus importantes pour lesquelles vous souhaitez que votre colonne date de la table de dates contienne une plage contiguë de dates qui inclut toute date possible dans votre table de faits.

Relations en mode Diagramme

Remarque : Bien que la colonne date de chaque table doit être du même type de données (Date), le format de chaque colonne n’a pas d’importance..

Remarque : Si Power Pivot ne vous permet pas de créer des relations entre les deux tables, les champs de date peuvent ne pas stocker la date et l’heure au même niveau de précision. Selon la mise en forme des colonnes, les valeurs peuvent être identiques, mais être stockées différemment. En savoir plus sur l’utilisation du temps.

Remarque : Évitez d’utiliser des clés de substitution d’entier dans les relations. Lorsque vous importez des données à partir d’une source de données relationnelle, les colonnes de date et d’heure sont souvent représentées par une clé de substitution, qui est une colonne entière utilisée pour représenter une date unique. Dans Power Pivot, vous devez éviter de créer des relations en utilisant des clés de date/heure entières, et à la place, utiliser des colonnes qui contiennent des valeurs uniques avec un type de données date. Bien que l’utilisation de clés de substitution soit considérée comme une bonne pratique dans les entrepôts de données traditionnels, les clés entières ne sont pas nécessaires dans Power Pivot et peuvent rendre difficile le regroupement de valeurs dans les tableaux croisés dynamiques par différentes périodes de date.

Si vous obtenez une erreur d’incompatibilité de type lors de la tentative de création d’une relation, c’est probablement parce que la colonne de la table de faits n’est pas de type de données Date. Cela peut se produire lorsque Power Pivot ne peut pas convertir automatiquement une date différente (généralement un type de données texte) en type de données date. Vous pouvez toujours utiliser la colonne dans votre table de faits, mais vous devrez convertir les données avec une formule DAX dans une nouvelle colonne calculée. Consultez Conversion de dates de type de données texte en type de données date plus loin dans l’annexe.

Relations multiples

Dans certains cas, il peut être nécessaire de créer plusieurs relations ou de créer plusieurs tables de dates. Par exemple, s’il existe plusieurs champs de date dans la table de faits Sales, tels que DateKey, ShipDate et ReturnDate, ils peuvent tous avoir des relations avec le champ Date de la table Date du calendrier, mais un seul de ces champs peut être une relation active. Dans ce cas, étant donné que DateKey représente la date de la transaction, et donc la date la plus importante, il est préférable de servir de relation active . Les autres ont des relations inactives.

Le tableau croisé dynamique suivant calcule le total des ventes par année fiscale et trimestre fiscal. Une mesure nommée Total Sales, avec la formule Total Sales :=SUM([SalesAmount]) est placée dans VALEURS, et les champs FiscalYear et FiscalQuarter de la table de dates Calendrier sont placés dans ROWS.

Tableau croisé dynamique Total des ventes par trimestre d’exercice Liste des champs du tableau croisé dynamique

Ce tableau croisé dynamique simple fonctionne correctement, car nous voulons additionner nos ventes totales par date de transaction dans DateKey. Notre mesure Total Sales utilise les dates dans DateKey et est additionnée par année fiscale et trimestre d’exercice, car il existe une relation entre DateKey dans la table Sales et la colonne Date dans la table Date de calendrier.

Relations inactives

Mais que se passe-t-il si nous voulions additionner nos ventes totales non par date de transaction, mais par date d’expédition ? Nous avons besoin d’une relation entre la colonne ShipDate de la table Sales et la colonne Date dans la table Calendrier. Si nous ne créons pas cette relation, nos agrégations sont toujours basées sur la date de transaction. Toutefois, nous pouvons avoir plusieurs relations, même si une seule peut être active, et comme la date de transaction est la plus importante, elle obtient la relation active avec la table Calendrier.

Dans ce cas, ShipDate a une relation inactive. Par conséquent, toute formule de mesure créée pour agréger des données en fonction des dates d’expédition doit spécifier la relation inactive à l’aide de la fonction USERELATIONSHIP .

Par exemple, étant donné qu’il existe une relation inactive entre la colonne ShipDate dans la table Sales et la colonne Date dans la table Calendrier, nous pouvons créer une mesure qui additionne le total des ventes par date d’expédition. Nous utilisons une formule comme celle-ci pour spécifier la relation à utiliser :

Total Sales by Ship Date :=CALCULATE(SUM(Sales[SalesAmount]), USERELATIONSHIP(Sales[ShipDate], Calendar[Date]))

Cette formule indique simplement : Calculez une somme pour SalesAmount, mais filtrez en utilisant la relation entre la colonne ShipDate dans la table Sales et la colonne Date dans la table Calendar.

À présent, si nous créons un tableau croisé dynamique et que nous mettons la mesure Total Sales by Ship Date dans VALEURS, et Fiscal Year and Fiscal Quarter on ROWS, nous voyons le même total général, mais tous les autres montants pour l’année fiscale et le trimestre fiscal sont différents, car ils sont basés sur la date d’expédition et non sur la date de transaction.

Tableau croisé dynamique Total des ventes par date d’expédition Liste des champs du tableau croisé dynamique

L’utilisation de relations inactives vous permet d’utiliser une seule table de dates, mais elle nécessite que toutes les mesures (comme Total Sales by Ship Date) référencent la relation inactive dans sa formule. Il existe une autre alternative, c’est-à-dire utiliser plusieurs tables de dates.

Tables de dates multiples

Une autre façon d’utiliser plusieurs colonnes de date dans votre table de faits consiste à créer plusieurs tables de dates et à créer des relations actives distinctes entre elles. Examinons à nouveau notre exemple de table Sales. Nous avons trois colonnes avec des dates sur lesquelles nous pourrions vouloir agréger des données :

  • DateKey avec la date de vente de chaque transaction.

  • ShipDate : avec la date et l’heure auxquelles les articles vendus ont été expédiés au client.

  • ReturnDate : avec la date et l’heure de réception d’un ou de plusieurs éléments retournés.

N’oubliez pas que le champ DateKey avec la date de transaction est le plus important. Nous allons effectuer la plupart de nos agrégations en fonction de ces dates. Nous souhaitons donc certainement une relation entre celle-ci et la colonne Date de la table Calendrier. Si nous ne voulons pas créer de relations inactives entre ShipDate et ReturnDate et le champ Date dans la table Calendrier, ce qui nécessite des formules de mesures spéciales, nous pouvons créer des tables de dates supplémentaires pour la date d’expédition et la date de retour. Nous pouvons ensuite créer des relations actives entre eux.

Relations avec plusieurs tables dans la vue de diagramme

Dans cet exemple, nous avons créé une autre table de dates nommée ShipCalendar. Bien sûr, cela signifie également créer des colonnes de date supplémentaires, et étant donné que ces colonnes de date se trouvent dans une table de dates différente, nous voulons les nommer de manière à les différencier des mêmes colonnes de la table Calendrier. Par exemple, nous avons créé des colonnes nommées ShipYear, ShipMonth, ShipQuarter, etc.

Si nous créons notre tableau croisé dynamique et placez notre mesure Total Sales dans VALEURS, et ShipFiscalYear et ShipFiscalQuarter sur ROWS, nous voyons les mêmes résultats que lorsque nous avons créé une relation inactive et un champ calculé Total Sales by Ship Date.

Tableau croisé dynamique Total des ventes selon la date d’expédition avec calendrier d’expédition Liste de champs de tableau croisé dynamique

Chacune de ces approches nécessite une attention particulière. Lorsque vous utilisez plusieurs relations avec une seule table de dates, vous devrez peut-être créer des mesures spéciales qui transitent par des relations inactives à l’aide de la fonction USERELATIONSHIP. En revanche, la création de plusieurs tables de dates peut prêter à confusion dans une liste de champs, et comme vous avez plus de tables dans le modèle de données, cela nécessite plus de mémoire. Expérimentez ce qui vous convient le mieux.

Propriété Date Table

La propriété Date Table définit les métadonnées nécessaires au bon fonctionnement des fonctions Time-Intelligence telles que TOTALYTD, PREVIOUSMONTH et DATESBETWEEN. Lorsqu’un calcul est exécuté à l’aide de l’une de ces fonctions, le moteur de formule de Power Pivot sait où aller pour obtenir les dates dont il a besoin.

Avertissement : Si cette propriété n’est pas définie, les mesures utilisant des fonctions DAX Time-Intelligence peuvent ne pas retourner des résultats corrects.

Lorsque vous définissez la propriété Table de dates, vous spécifiez une table de dates et une colonne date du type de données Date (datetime) qu’elle contient.

Boîte de dialogue Marquer en tant que table de dates

Guide pratique pour définir la propriété Table de dates

  1. Dans la fenêtre PowerPivot, sélectionnez la table Calendrier .

  2. Sous l’onglet Création , cliquez sur Marquer comme table de dates.

  3. Dans la boîte de dialogue Marquer comme table de dates, sélectionnez une colonne avec des valeurs uniques et le type de données Date.

Utilisation du temps

Toutes les valeurs de date avec un type de données Date dans Excel ou SQL Server sont en fait un nombre. Ce nombre comprend des chiffres qui font référence à une heure. Dans de nombreux cas, cette heure pour chaque ligne est minuit. Par exemple, si un champ DateTimeKey dans une table de faits Sales a des valeurs telles que 19/10/2010 12:00:00 AM, cela signifie que les valeurs sont au niveau de précision du jour. Si les valeurs du champ DateTimeKey ont une heure incluse, par exemple, 19/10/2010 8:44:00 AM, cela signifie que les valeurs sont au niveau de précision des minutes. Les valeurs peuvent également correspondre à la précision au niveau de l’heure, voire au niveau de précision en secondes. Le niveau de précision de la valeur de temps aura un impact significatif sur la façon dont vous créez votre table de dates et les relations entre celle-ci et votre table de faits.

Vous devez déterminer si vous agrégez vos données à un niveau de précision quotidien ou à un niveau de précision de temps. En d’autres termes, vous pouvez utiliser des colonnes dans votre table de dates, telles que matin, après-midi ou heure, comme champs de date d’heure dans les zones Ligne, Colonne ou Filtre d’un tableau croisé dynamique.

Remarque : Les jours sont la plus petite unité de temps avec laquelle les fonctions DAX Time Intelligence peuvent fonctionner. Si vous n’avez pas besoin de travailler avec des valeurs de temps, vous devez réduire la précision de vos données pour utiliser les jours comme unité minimale.

Si vous envisagez d’agréger vos données au niveau de l’heure, votre table de dates aura besoin d’une colonne de date avec l’heure incluse. En fait, il aura besoin d’une colonne de date avec une ligne pour chaque heure, ou peut-être même chaque minute, de chaque jour, pour chaque année dans la plage de dates. En effet, pour créer une relation entre la colonne DateTimeKey de la table de faits et la colonne date de la table de dates, vous devez avoir des valeurs correspondantes. Comme vous pouvez l’imaginer, si vous incluez beaucoup d’années, cela peut faire pour une très grande table de date.

Toutefois, dans la plupart des cas, vous souhaitez agréger vos données uniquement à la journée. En d’autres termes, vous allez utiliser des colonnes comme Année, Mois, Semaine ou Jour de la semaine comme champs dans les zones Ligne, Colonne ou Filtre d’un tableau croisé dynamique. Dans ce cas, la colonne date de la table de dates ne doit contenir qu’une seule ligne pour chaque jour d’une année, comme nous l’avons décrit précédemment.

Si votre colonne de date inclut un niveau d’heure de précision, mais que vous agrégez uniquement à un niveau jour, pour créer la relation entre la table de faits et la table de dates, vous devrez peut-être modifier votre table de faits en créant une colonne qui tronque les valeurs de la colonne date en valeur de jour. En d’autres termes, convertissez une valeur telle que 19/10/2010 8:44:00AM en 19/10/2010 12:00:00 AM. Vous pouvez ensuite créer la relation entre cette nouvelle colonne et la colonne de date dans la table de dates, car les valeurs correspondent.

Examinons un exemple. Cette image montre une colonne DateTimeKey dans la table de faits Sales. Toutes les agrégations pour les données de cette table doivent être uniquement au niveau jour, en utilisant les colonnes de la table Date du calendrier comme Année, Mois, Trimestre, etc. L’heure incluse dans la valeur n’est pas pertinente, mais uniquement la date réelle.

Colonne CléDateHeure

Étant donné que nous n’avons pas besoin d’analyser ces données au niveau de l’heure, nous n’avons pas besoin que la colonne Date de la table Date du calendrier inclue une ligne pour chaque heure et chaque minute de chaque jour de chaque année. Par conséquent, la colonne Date de notre table de dates ressemble à ceci :

Colonne de date dans Power Pivot

Pour créer une relation entre la colonne DateTimeKey de la table Sales et la colonne Date de la table Calendrier, nous pouvons créer une colonne calculée dans la table de faits Sales et utiliser la fonction TRUNC pour tronquer la valeur de date et d’heure de la colonne DateTimeKey en une valeur de date qui correspond aux valeurs de la colonne Date de la table Calendrier. Notre formule ressemble à ceci :

=TRUNC([DateTimeKey],0)

Cela nous donne une nouvelle colonne (nommée DateKey) avec la date de la colonne DateTimeKey et une heure de 12:00:00 AM pour chaque ligne :

Colonne CléDate

Nous pouvons maintenant créer une relation entre cette nouvelle colonne (DateKey) et la colonne Date dans la table Calendrier.

De même, nous pouvons créer une colonne calculée dans la table Sales qui réduit la précision de l’heure dans la colonne DateTimeKey au niveau horaire de précision. Dans ce cas, la fonction TRUNC ne fonctionnera pas, mais nous pouvons toujours utiliser d’autres fonctions Date et Heure DAX pour extraire et re-concaténer une nouvelle valeur à un niveau de précision horaire. Nous pouvons utiliser une formule comme celle-ci :

= DATE (YEAR([DateTimeKey]), MONTH([DateTimeKey]), DAY([DateTimeKey]) ) + TIME (HOUR([DateTimeKey]), 0, 0)

Notre nouvelle colonne ressemble à ceci :

Colonne CléDateHeure

À condition que notre colonne Date dans la table de dates ait des valeurs au niveau de précision de l’heure, nous pouvons ensuite créer une relation entre elles.

Rendre les dates plus utilisables

La plupart des colonnes de date que vous créez dans votre table de dates sont nécessaires pour d’autres champs, mais ne sont pas très utiles dans l’analyse. Par exemple, le champ DateKey de la table Sales que nous avons référencée et montrée tout au long de cet article est important, car pour chaque transaction, cette transaction est enregistrée comme ayant lieu à une date et une heure particulières. Mais du point de vue de l’analyse et de la création de rapports, cela n’est pas très utile, car nous ne pouvons pas l’utiliser comme ligne, colonne ou champ de filtre dans un tableau croisé dynamique ou un rapport.

De même, dans notre exemple, la colonne Date de la table Calendrier est très utile et critique en fait, mais vous ne pouvez pas l’utiliser comme dimension dans un tableau croisé dynamique.

Pour que les tables et les colonnes qu’elles contiennent soient aussi utiles que possible, et pour faciliter la navigation dans les listes de champs de rapport de tableau croisé dynamique ou de rapport Power View, il est important de masquer les colonnes inutiles des outils clients. Vous pouvez également masquer certaines tables. La table Jours fériés indiquée précédemment contient des dates de congé qui sont importantes pour certaines colonnes de la table Calendrier, mais vous ne pouvez pas utiliser les colonnes Date et Jour férié de la table Jours fériés comme champs dans un tableau croisé dynamique. Là encore, pour faciliter la navigation dans les listes de champs, vous pouvez masquer l’ensemble de la table Jours fériés.

Un autre aspect important de l’utilisation des dates est les conventions de nommage. Vous pouvez nommer des tables et des colonnes dans Power Pivot comme vous le souhaitez. Toutefois, gardez à l’esprit que, en particulier si vous partagez votre classeur avec d’autres utilisateurs, une bonne convention de nommage facilite l’identification des tables et des dates, non seulement dans les listes de champs, mais également dans Power Pivot et dans les formules DAX.

Une fois que vous disposez d’une table de dates dans votre modèle de données, vous pouvez commencer à créer des mesures qui vous aideront à tirer le meilleur parti de vos données. Certaines peuvent être aussi simples que la somme des totaux des ventes pour l’année en cours, tandis que d’autres peuvent être plus complexes, où vous devez filtrer sur une plage particulière de dates uniques. Pour en savoir plus, consultez Mesures dans power pivot et fonctions Time Intelligence.

Annexe

Conversion de dates de type de données texte en type de données date

Dans certains cas, une table de faits avec des données de transaction peut contenir des dates de type texte. Autrement dit, une date qui apparaît sous la forme 2012-12-04T11:47:09 n’est en fait pas une date du tout, ou du moins pas le type de date que Power Pivot peut comprendre. C’est vraiment juste du texte qui se lit comme une date. Pour créer une relation entre une colonne de date dans la table de faits et une colonne de date dans une table de dates, les deux colonnes doivent être du type de données Date .

En règle générale, lorsque vous essayez de modifier le type de données d’une colonne de dates de type texte en type de données date, Power Pivot peut interpréter les dates et les convertir automatiquement en type de données date réelle. Si Power Pivot ne peut pas effectuer une conversion de type de données, vous obtiendrez une erreur d’incompatibilité de type.

Toutefois, vous pouvez toujours convertir les dates en un type de données date true. Vous pouvez créer une colonne calculée et utiliser une formule DAX pour analyser l’année, le mois, le jour, l’heure, etc. à partir des chaînes de texte, puis la concaténer de nouveau de manière à ce que Power Pivot puisse lire comme une date vraie.

Dans cet exemple, nous avons importé une table de faits nommée Sales dans Power Pivot. Il contient une colonne nommée DateTime. Les valeurs s’affichent comme suit :

Colonne Date/Heure dans une table de faits

Si nous examinons Type de données dans l’onglet Accueil du groupe mise en forme Power Pivot, nous voyons qu’il s’agit du type de données Texte.

Type de données dans le ruban

Nous ne pouvons pas créer de relation entre la colonne DateTime et la colonne Date dans notre table de dates, car les types de données ne correspondent pas. Si nous essayons de remplacer le type de données par Date, nous obtenons une erreur d’incompatibilité de type :

Erreur d’incompatibilité

Dans ce cas, Power Pivot n’a pas pu convertir le type de données du texte en date. Nous pouvons toujours utiliser cette colonne, mais pour l’obtenir dans un type de données date réel, nous devons créer une colonne qui analyse le texte et le recrée en une valeur que Power Pivot peut créer un type de données Date.

N’oubliez pas, dans la section Utilisation du temps plus haut dans cet article ; Sauf s’il est nécessaire que votre analyse corresponde à un niveau de précision de l’heure de la journée, vous devez convertir les dates de votre table de faits en un niveau de précision jour. Dans cette optique, nous voulons que les valeurs de notre nouvelle colonne soient au niveau de précision du jour (à l’exception de l’heure). Nous pouvons à la fois convertir les valeurs de la colonne DateTime en type de données date et supprimer le niveau de précision de l’heure avec la formule suivante :

=DATE(LEFT([DateTime],4), MID([DateTime],6,2), MID([DateTime],9,2))

Cela nous donne une nouvelle colonne (dans ce cas, nommée Date). Power Pivot détecte même que les valeurs sont des dates et définit automatiquement le type de données sur Date.

Colonne de date d’une table de faits

Si nous voulons conserver le niveau de précision du temps, nous étendons simplement la formule pour inclure les heures, les minutes et les secondes.

=DATE(LEFT([DateTime],4), MID([DateTime],6,2), MID([DateTime],9,2)) +

TIME(MID([DateTime],12,2), MID([DateTime],15,2), MID([DateTime],18,2))

Maintenant que nous avons une colonne Date du type de données Date, nous pouvons créer une relation entre celle-ci et une colonne de date dans une date.

Ressources supplémentaires

Dates dans Power Pivot

Calculs dans Power Pivot

Démarrage rapide : découvrir les fondamentaux de DAX en 30 minutes

Informations de référence sur les expressions d’analyse des données

Centre de ressources DAX

Besoin d’aide ?

Vous voulez plus d’options ?

Explorez les avantages de l’abonnement, parcourez les cours de formation, découvrez comment sécuriser votre appareil, etc.

Les communautés vous permettent de poser des questions et d'y répondre, de donner vos commentaires et de bénéficier de l'avis d'experts aux connaissances approfondies.