Se connecter avec Microsoft
S'identifier ou créer un compte.
Bonjour,
Sélectionnez un autre compte.
Vous avez plusieurs comptes
Choisissez le compte avec lequel vous voulez vous connecter.

Les tables de date dans Power Pivot sont essentielles pour la navigation et le calcul de données dans le temps. Cet article offre une compréhension approfondie des tables de dates et de la façon dont vous pouvez les créer dans Power Pivot. Cet article décrit notamment les sujets suivants :

  • 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 Année, Mois et Période 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 ne sont pas encore utilisateurs de Power Pivot. Il est toutefois important de bien comprendre l’importation de données, la création de relations et la création de colonnes et de mesures calculées.

Cet article ne décrit pas comment utiliser des 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 Excel.

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

Sommaire

Comprendre les tables de dates

Presque toutes les analyses de données impliquent la navigation et la comparaison de données sur des dates et des heures. Par exemple, vous pouvez additioner des montants des ventes pour le trimestre fiscal précédent, 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 pour regrouper et agréger les transactions de ventes ou les soldes pour une période donnée dans le temps.

Power View rapport

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’heures. Par exemple, une table de dates insérez souvent des colonnes telles que Année fiscale, Mois, Trimestre ou Période que vous pouvez sélectionner en tant que champs dans une liste de champs lors de la sélection et du filtrage de vos données dans des tableaux croisés dynamiques ou Power View rapports.

Power View de champs

Liste de champs Power View

Pour que les colonnes de dates comme Année, Mois et Trimestre incluent toutes les dates de leur plage respective, la table de dates doit comporter au moins une colonne avec un ensemble de dates contiguës. Autrement dit, cette colonne doit avoir une ligne pour chaque jour inclus dans la table de dates.

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

Table de dates avec un ensemble de dates contiguës

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 de dates contiguës pour chaque année fiscale. Par exemple, si votre année fiscale commence le 1er mars et que vous avez des données des années fiscales 2010 jusqu’à la date actuelle (par exemple, pour 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 créez 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 seule table de dates peut inclure des colonnes pour une année civile, un exercice fiscal et même un calendrier de 14 semaines. L’essentiel est que votre table de dates contienne un ensemble de dates contiguës pour toutes les années incluses.

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

Vous pouvez ajouter une table de dates à votre modèle de données de plusieurs façons :

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

  • Créez une table de dates Excel puis copiez ou lier une table à une nouvelle table dans Power Pivot.

  • Importez à partir Microsoft Azure Marketplace.

Examinons chacune de ces questions de plus près.

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

Si vous importez certaines ou toutes vos données à partir d’un entrepôt de données ou d’un autre type de base de données relationnelle, il y a des chances qu’il existe déjà une table de dates et des relations entre elle et le reste des données que vous importez. Les dates et le format correspondront probablement aux dates dans vos données de faits, et les dates commencent probablement bien dans le passé et vont beaucoup plus loin dans le futur. La table de dates que vous voulez importer peut être très grande et contenir une plage de dates autres que ce que vous devrez 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 de manière sélective uniquement les dates et les colonnes dont vous avez réellement besoin. Cela peut considérablement réduire la taille de votre workbook 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 Année fiscale, Semaine, Nom du mois, etc. car elles existeront déjà dans la table importée. Toutefois, dans certains cas, après avoir importé la table de dates dans votre modèle de données, vous devrez peut-être créer des colonnes de date supplémentaires, selon un besoin particulier de création de rapports. Heureusement, c’est facile à faire à l’aide de DAX. Vous en apprendrez plus sur la création ultérieure de champs de table de dates. Chaque environnement est différent. Si vous ne savez pas si vos sources de données ont une date associée ou une table de calendrier, parlez-en à votre administrateur de base de données.

Créer une table de dates dans Excel

Vous pouvez créer une table de dates Excel puis la copier dans une nouvelle table du modèle de données. Cette solution est très simple à faire et vous offre une grande flexibilité.

Lorsque vous créez une table de dates dans Excel, vous commencez par une seule colonne avec une plage de dates contiguës. Vous pouvez ensuite créer des colonnes supplémentaires (par exemple, Année, Trimestre, Mois, Année fiscale, Période, etc.) dans la feuille de calcul Excel en utilisant des formules Excel ou, après avoir copié le tableau dans le modèle de données, vous pouvez les créer en tant que 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 section Table de dates plus loin dans cet article.

Comment 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. Il s’agit généralement de Date, DateTime ou DateKey.

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

  3. Cliquez sur la poignée de re remplir et faites-la glisser 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 Format detableau, puis sélectionnez un style.

  6. Dans la boîte de dialogue Format de 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. En mode Aperçu du >,tapez un nom tel que Date ouCalendrier. Laissez la première ligne cochée en tant qu’en-têtesde colonne, 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 l’outil Ajouter au modèle de données. Cela rend votre travail inutilement plus grand, car il possède 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 mettre le nom de la table entre guillemets simples dans toutes les formules DAX qui font référence à celui-ci dans un argument. Tous les exemples d’images et formules présentés dans cet article font référence à une table de dates créée dans Power Pivot nommée Calendrier.

Vous avez maintenant une table de dates dans votre modèle de données. Vous pouvez ajouter de nouvelles colonnes de date, telles que Year, Month, etc. à l’aide de DAX.

Ajout de nouvelles colonnes de date à la table de dates

Une table de dates avec une seule colonne de date qui possède une ligne pour chaque 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. Mais cette colonne de date unique avec une ligne pour chaque jour n’est pas utile lors de l’analyse par dates d’un tableau croisé dynamique ou d Power View rapport. 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 calculer la somme des montants des ventes par mois ou par trimestre, ou vous pouvez 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 d’année, de mois ou de trimestres 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 que vous souhaitez. Dans certains cas, vous pouvez modifier certaines de ces colonnes ou créer des colonnes de date supplémentaires. C’est particulièrement vrai si vous créez votre propre table de dates 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 relativement simple avec les fonctions de date et d’heure dans DAX.

Conseil : Si vous n’avez pas encore travaillé avec DAX, pour commencer à apprendre, découvrez les fondamentaux de DAX en 30 minutes sur Office.com.

Fonctions de date et d’heure DAX

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

  • Les fonctions DAX Date et Heure 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 renvoyer 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 qu’elles soient compréhensibles. Nous utiliserons un certain nombre de ces fonctions pour créer des colonnes pour Year, Quarter, FiscalMonth, etc.

Remarque : Dans DAX, les fonctions Date et Heure sont différentes des fonctions Time Intelligence. En savoir plus sur Time Intelligence dans Power Pivot Excel 2013.

DAX inclut les fonctions date et heure suivantes :

Il existe également de nombreuses autres fonctions DAX que vous pouvez utiliser dans vos formules. Par exemple, bon nombre des formules décrites ici utilisent des fonctions mathématiques et trigonométriques telles que MOD et TRONQUÉ, des fonctions logiques telles que SI et des fonctions de texte telles que FORMAT Pour plus d’informations sur les autres fonctions DAX, voir 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 de dates contiguës du 01/01/2010 au 31/12/2016.

Année

=ANNÉE([date])

Dans cette formule, la fonction ANNÉE renvoie l’année à partir de la valeur de la colonne Date. Étant donné que la valeur dans la colonne Date est du type de données datetime, la fonction ANNÉE sait comment renvoyer l’année à partir de cet intervalle.

Colonne Année

Mois

=MOIS([date])

Dans cette formule, tout comme avec la fonction ANNÉE, vous pouvez simplement utiliser la fonction MOIS pour renvoyer une valeur de mois à partir de la colonne Date.

Colonne Mois

Trimestre

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

Dans cette formule, nous utilisons la fonction ENT pour renvoyer une valeur de date sous la mesure d’une valeur d’un certain montant. L’argument que nous spécifiez pour la fonction ENT est la valeur de la colonne Mois, ajoutez 2, puis divisez cette valeur par 3 pour obtenir notre trimestre, 1 entre 4.

Colonne Trimestre

Nom du mois

=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écifieons la colonne Date comme premier argument, puis le format. nous souhaitons que notre nom de mois affiche tous les caractères. Nous utilisons donc « mmmm ». Notre résultat ressemble à ceci :

Colonne Nom de mois

Si vous voulez renvoyer le nom du mois abrégé en trois lettres, nous utiliserions « 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. Comme nous voulons simplement un nom de jour abrégé, nous spécifieons « jdd » dans l’argument de mise en forme.

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 illustre 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 LIGNES. SalesAmount est agrégé pour le contexte des exercices annuels et trimestres.

Exemple de tableau croisé dynamique

Exemples de formules pour un exercice fiscal

Exercice

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

Dans cet exemple, l’année fiscale commence le 1er juillet.

Il n’existe aucune fonction qui puisse extraire une année fiscale 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’exercice fiscal, nous utilisons d’abord une fonction SI pour tester si la valeur de Mois est inférieure ou égale à 6. Dans le deuxième argument, si la valeur de Mois est inférieure ou égale à 6, renvoyer la valeur de la colonne Année. Si ce n’est pas le cas, renvoyez 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 spécifiant simplement le mois. Par exemple, pour plus d’aroités :=6. Vous pouvez ensuite référencer le nom de la mesure à la place du numéro du mois. Par exemple, =SI([Mois]<=[AA] ],[Année],[Année]+1). Cela offre davantage de flexibilité lorsque vous référencez le mois de fin de l’exercice dans plusieurs formulesdifférentes.

Mois d’exercice

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

Dans cette formule, nous spécifieons si la valeur de [Mois] est inférieure ou égale à 6, prendre 6 et additioniser la valeur de Mois, sinon soustraire 6 de la valeur de [Mois].

Colonne Mois d’exercice

Trimestre d’exercice

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

La formule que nous utilisons pour FiscalQuarter est très identique à l’utilisation de Trimestre dans notre année civile. La seule différence est que nous spécifieons [FiscalMonth] à la place de [Month].

Colonne Trimestre d’exercice

Jours fériés ou dates spéciales

Vous pouvez inclure une colonne de dates qui indique que certaines dates sont des jours fériés ou d’autres dates spéciales. Par exemple, vous pouvez additioner les totaux des ventes du jour Nouvel an en ajoutant un champ Jours fériés à un tableau croisé dynamique, en tant que slicer, ou en filtrant. Dans d’autres cas, vous pouvez exclure ces dates d’autres colonnes de date ou dans une mesure.

Il est très simple d’inclure les jours fériés ou les jours spéciaux. Vous pouvez créer une table dans Excel les dates que vous voulez inclure. Vous pouvez ensuite copier ou utiliser l’ajout 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 VALEUR.RECHERCHE pour renvoyer 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

Nouvelles années

11/25/2010

Desso

12/25/2010

Noël

1/1/2011

Nouvelles années

11/24/2011

Desso

12/25/2011

Noël

01/01/2012

Nouvelles années

22.11.12

Desso

12/25/2012

Noël

1/1/2013

Nouvelles années

11/28/2013

Desso

12/25/2013

Noël

11/27/2014

Desso

12/25/2014

Noël

01/01/2014

Nouvelles années

11/27/2014

Desso

12/25/2014

Noël

1/1/2015

Nouvelles années

11/26/2014

Desso

12/25/2015

Noël

01.01.16

Nouvelles années

11/24/2016

Desso

12/25/2016

Noël

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

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

Examinons cette formule plus attentivement.

La fonction VALEUR.RECHERCHE vous aide à obtenir des valeurs dans la colonne Jours fériés de la table Jours fériés. Dans le premier argument, nous spécifieons la colonne dans laquelle la valeur du résultat sera spécifiée. Nous spécifieons la colonne Jours fériés dans la table Jours fériés, car il s’agit de la valeur que nous souhaitons retourner.

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

Nous spécifieons ensuite le deuxième argument, la colonne de recherche qui présente les dates à rechercher. Nous spécifieons la colonne Date dans la table Jours fériés, comme ceci :

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

Enfin, nous allons spécifier la colonne de la table Calendrier qui présente les dates que vous souhaitez rechercher dans la table Vacances. Bien entendu, il s’agit de la colonne Date dans la table Calendrier.

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

La colonne Jours fériés renseance le nom de chaque ligne dont la valeur de date correspond à une date du tableau Jours fériés.

Table Jours fériés

Calendrier personnalisé - treize périodes de quatre semaines

Certaines organisations, telles que le service de vente au détail ou de restauration, font souvent des rapports sur différentes périodes (par exemple, treize périodes de quatre semaines). Avec un calendrier de 14 semaines, chaque période est de 28 jours. par conséquent, chaque période contient quatre lundis, quatre mardis, quatre mercredis, etc. Chaque période contient le même nombre de jours. En règle générale, les jours fériés tombent sur la même période chaque année. Vous pouvez choisir de commencer un période n’importe quel jour de la semaine. Tout comme pour les dates d’un calendrier ou d’une année fiscale, 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’année fiscale. Dans ce cas, l’exercice commence le 01/07.

Semaine

Cette valeur nous donne le numéro de la semaine commençant par la première semaine complète de l’année fiscale. Dans cet exemple, la première semaine entière commence le dimanche, de sorte que la première semaine complète de la première année fiscale de la table Calendrier commence en réalité le 04/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 en analyse, il est nécessaire de la calculer pour une utilisation dans d’autres formules pour une période de 28 jours.

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

Examinons cette formule plus attentivement.

Tout d’abord, nous créons une formule qui renvoie des valeurs à partir de la colonne Date sous la mesure d’un espace, comme ceci :

=ENT([date])

Nous voulons ensuite rechercher le premier dimanche de la première année fiscale. Nous voyons qu’il s’agit du 04/07/2010.

Colonne Semaine

À présent, soustrayez 40356 (qui est l’ensemble du 27/06/2010, le dernier dimanche de l’année fiscale précédente) de cette valeur pour obtenir le nombre de jours depuis le début des jours dans notre table Calendrier, comme ceci :

=ENT([date]-40356)

Divisez ensuite le résultat par 7 (jours dans une semaine), comme ceci :

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

Le résultat ressemble à ceci :

Colonne Semaine

Point

La période de ce calendrier personnalisé contient 28 jours et elle commence toujours un dimanche. Cette colonne retourne le numéro de la période commençant par le premier dimanche de la première année fiscale.

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

Examinons cette formule plus attentivement.

Tout d’abord, nous créons une formule qui renvoie une valeur à partir de la colonne Semaine sous la mesure d’un sont des valeurs totales, comme ceci :

=ENT([Semaine])

Ajoutez ensuite 3 à cette valeur, comme ceci :

=ENT([Semaine]+3)

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

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

Le résultat ressemble à ceci :

Colonne Période

Exercice période

Cette valeur renvoie l’année fiscale pour une période donnée.

=ENT(([Point]+12)/13)+2008

Examinons cette formule plus attentivement.

Tout d’abord, nous créons une formule qui renvoie une valeur à partir de période et ajoute 12 :

= ([Point]+12)

Nous divisez le résultat par 13, car l’année fiscale compte treize périodes de 28 jours :

=(([Point]+12)/13)

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

=(([Point]+12)/13)+2010

Enfin, nous utilisons la fonction ENT pour supprimer une fraction du résultat et renvoyer un nombre entier, lorsqu’il est divisé par 13, comme ceci :

=ENT(([Point]+12)/13)+2010

Le résultat ressemble à ceci :

Colonne Période d’exercice

Période de l’exercice fiscal

Cette valeur renvoie le numéro de période, 1 à 13, en commençant par la première période complète (commençant le dimanche) de chaque année fiscale.

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

Cette formule est un peu plus complexe. Nous allons donc la décrire en premier dans une langue 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, renvoyer 13.

Tout d’abord, nous créons une formule qui renvoie le reste de la valeur de la période par 13. Vous pouvez utiliser la fonction MOD (fonctions mathématiques et trigonométriques) comme ceci :

=MOD([Période],13)

Cela nous donne, pour l’essentiel, le résultat voulu, sauf que la valeur 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. Vous pouvez faire cela avec une fonction SI. Dans le cas où notre résultat est 0, nous en renvoyons 13, comme ceci :

=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 de date de calendrier dans LIGNES. SalesAmount est agrégé pour le contexte par année fiscale et période de 28 jours de l’année fiscale.

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 des tableaux croisés dynamiques et des 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 8/15/2012 12:00 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 principales pour lesquelles vous voulez que votre colonne de date dans 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 de date dans chaque table doit être du même type de données (Date), le format de chaque colonne importe peu.

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 se ressembler, mais être stockées différemment. En savoir plus sur l’travaillant avec le temps.

Remarque : Évitez d’utiliser des clés de substitution d’entre eux 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 d’ensemble utilisée pour représenter une date unique. Dans Power Pivot, vous devez éviter de créer des relations à l’aide de clés de date/heure d’ensemble et utiliser à la place des colonnes qui contiennent des valeurs uniques avec un type de données de date. Bien que l’utilisation des clés substitution soit considérée comme une meilleure pratique dans les entrepôts de données traditionnels, les clés d’ensemble ne sont pas nécessaires dans Power Pivot et peuvent rendre difficile le regroupement de valeurs dans les tableaux croisés dynamiques selon différentes périodes de date.

Si vous obtenez une erreur d’incardisation du type lorsque vous tentez de créer une relation, cela est probablement dû au fait 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 (généralement un type de données texte) en type de données de date. Vous pouvez toujours utiliser la colonne dans votre table de faits, mais vous derez convertir les données à l’aide d’une formule DAX dans une nouvelle colonne calculée. Voir Convertir des dates de type de données texte en type de données de 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, par exemple DateKey, ShipDate et ReturnDate, ils peuvent tous avoir des relations avec le champ Date dans la table Date du calendrier, mais un seul d’entre eux peut être une relation active. Dans ce cas, étant donné que DateKey représente la date de la transaction et, par conséquent, la date la plus importante, il est préférable que cette date corresponde à la relation active. Les autres ont des relations inactives.

Le tableau croisé dynamique suivant calcule le total des ventes par exercice et trimestre d’exercice. Une mesure nommée Total Sales, avec la formule Total Sales:=SUM([SalesAmount]), est placée dans VALUES et les champs FiscalYear et FiscalQuarter de la table de dates de calendrier sont placés dans LIGNES.

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 vous voulez additioner nos ventes totales à la date de latransaction dans DateKey. Notre mesure Total Sales utilise les dates dans DateKey et est additionée par année fiscale et trimestre fiscal, car il existe une relation entre DateKey dans la table Sales et la colonne Date dans la table Date du calendrier.

Relations inactives

Que se passe-t-il si vous souhaitez additioner nos ventes totales non par date de transaction, mais par date d’expédition? Il est nécessaire d’avoir une relation entre la colonne Date Expédition de la table Ventes et la colonne Date de 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 étant donné que 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, aussi toute formule de mesure créée pour agréger les 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 Date Expédition dans la table Ventes et la colonne Date dans la table Calendrier, nous pouvons créer une mesure qui additionnera les ventes totales 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 de la table Sales et la colonne Date de la table Calendrier.

Maintenant, si nous créons un tableau croisé dynamique et que nous inséons une mesure Total Sales by Ship Date dans VALUES et que l’année fiscale et le trimestre fiscal sur LIGNES sont des lignes, nous voyons le même total global, mais tous les autres montants de somme pour l’exercice et le trimestre fiscal sont différents parce qu’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 ne permet d’utiliser qu’une seule table de dates, mais exige que les mesures (telles que Les ventes totales par date d’expédition) référencent la relation inactive dans sa formule. Il existe une autre solution, à laquelle vous pouvez faire appel, c’est-à-dire utiliser plusieurs tables de dates.

Plusieurs tables de dates

Une autre façon d’utiliser plusieurs colonnes de dates 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 Ventes. Nous avons trois colonnes avec des dates sur des données que nous pourrions avoir envie d’agréger :

  • CléD date avec la date de vente de chaque transaction.

  • DateEx expédiée au client, avec la date et l’heure de livraison des articles vendus.

  • Date Renvoyée : avec la date et l’heure de réception d’un ou plusieurs éléments renvoyés.

N’oubliez pas que le champ DateKey avec la date de transaction est le plus important. Nous allons faire la plupart de nos agrégations sur la base de ces dates, donc nous souhaitons sans doute avoir une relation entre elle et la colonne Date dans la table Calendrier. Si nous ne voulons pas créer de relations inactives entre DateÉ shipDate et ReturnDate et le champ Date dans la table Calendrier, ce qui nécessite des formules de mesure spéciale, 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 elles.

Relations avec plusieurs tables dans la vue de diagramme

Dans cet exemple, nous avons créé une autre table de dates nommée ShipCalendar. Cela implique également de créer des colonnes de date supplémentaires et, étant donné que ces colonnes de date se trouveraient dans une autre table de dates, nous souhaitons les nommer de façon à les différencier des mêmes colonnes dans 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 insérons notre mesure Total Sales dans VALUES, et ShipFiscalYear et ShipFiscalQuarter sur ROWS, nous voyons les mêmes résultats que nous avons vus lorsque nous avons créé une relation inactive et un champ calculé Total Sales by Ship Date spécial.

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 de pouvez être invité à créer des mesures spéciales qui transitent 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. Étant donné que le modèle de données compte davantage de tables, cela nécessitera davantage de mémoire. Testez ce qui vous fonctionne le mieux.

Date Table, propriété

La propriété Table de dates définit les métadonnées Time-Intelligence nécessaires au bon fonctionnement de fonctions 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 par 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 d'Time-Intelligence DAX peuvent ne pas renvoyer de résultats corrects.

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

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

Comment définir la propriété Table de dates

  1. Dans la PowerPivot, sélectionnez la table Calendrier.

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

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

Travailler avec le temps

Toutes les valeurs de date dont le type de données Date est Excel ou SQL Server sont en réalité un nombre. Ce nombre comprend des chiffres qui font référence à une heure. Dans de nombreux cas, la durée de chaque ligne est minuit. Par exemple, si un champ DateTimeKey dans une table de faits Ventes a des valeurs telles que 19/10/2010 12:00:00 AM, cela signifie que les valeurs sont au niveau du jour de précision. Si les valeurs de champ DateTimeKey incluent une heure comprise, par exemple, 19/10/2010 8:44:00 AM, cela signifie que les valeurs sont au niveau de minute de précision. Les valeurs peuvent également être au niveau de précision des heures, voire des secondes. Le niveau de précision dans la valeur de temps a un impact significatif sur la façon dont vous créez votre table de dates et les relations entre elle et votre table de faits.

Vous devez déterminer si vous agrégerez vos données à un niveau de précision quotidien ou de temps. En d’autres termes, vous pouvez utiliser les colonnes de votre table de dates comme Matin, Après-midi ou Heure en tant que 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 à utiliser par les fonctions DAX Time Intelligence. 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 avez l’intention 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 a besoin d’une colonne de date avec une ligne pour chaque heure, voire toutes les minutes, 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 de date dans la table de dates, vous devez avoir des valeurs correspondantes. Comme vous pouvez l’imaginer, si vous incluez de nombreuses années, cela peut être une très grande table de dates.

Dans la plupart des cas, vous souhaitez toutefois agréger vos données uniquement à la journée. En d’autres termes, vous utiliserez des colonnes telles que 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 de date dans la table de dates ne doit contenir qu’une ligne pour chaque jour dans l’année, comme décrit précédemment.

Si votre colonne de date inclut un niveau de précision de l’heure, mais que vous n’agrégerez que sur un niveau de jour, pour créer la relation entre la table de faits et la table de dates, vous de aurez peut-être à modifier votre table de faits en créant une colonne qui tronque les valeurs de la colonne de 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 dans cette table doivent uniquement se trouver au niveau du jour, en utilisant des colonnes dans la table de dates du calendrier telles que Année, Mois, Trimestre, etc. L’heure incluse dans la valeur n’est pas pertinente, 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 dans la table de dates calendrier inclue une ligne pour chaque heure et chaque minute de chaque jour dans chaque année. La colonne Date de notre table de dates ressemble donc à 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 TRONQUÉE pour tronqué la valeur de date et d’heure dans la colonne DateTimeKey en une valeur de date qui correspond aux valeurs de la colonne Date dans la table Calendrier. Notre formule ressemble à ceci :

=TRONQUÉ([DateTimeKey],0)

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

Colonne CléDate

Nous pouvons à présent 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 d’heure de précision. Dans ce cas, la fonction TRONQUE ne fonctionne pas, mais nous pouvons toujours utiliser d’autres fonctions de date et d’heure DAX pour extraire et concaténer à nouveau une nouvelle valeur à un niveau d’heure de précision. Nous pouvons utiliser une formule comme celle-ci :

= DATE (YEAR([DateTimeKey]), MONTH([DateTimeKey]), DAY([DateTimeKey]) + TIME ([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 heure de précision, nous pouvons ensuite créer une relation entre elles.

Rendre les dates plus lisibles

Bon nombre des colonnes de date que vous créez dans votre table de dates sont nécessaires pour d’autres champs, mais ne sont pas réellement très utiles dans l’analyse. Par exemple, le champ DateKey dans la table Sales à laquelle nous avons fait référence et que nous avons affiché tout au long de cet article est important car, pour chaque transaction, cette transaction est enregistrée à une date et heure particulières. Toutefois, d’un point de vue d’analyse et de rapport, ce n’est pas très utile, car nous ne pouvons pas l’utiliser en tant que 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, essentielle en fait, mais vous ne pouvez pas l’utiliser comme dimension dans un tableau croisé dynamique.

Pour conserver les tableaux et les colonnes dans ces tableaux aussi utiles que possible et faciliter la navigation dans les listes de champs de rapport de Power View ou de tableau croisé dynamique, il est important de masquer les colonnes superflues dans les outils clients. Vous pouvez également masquer certaines tables. Le tableau Jours fériés indiqué précédemment contient les dates de congés qui sont importantes pour certaines colonnes de la table Calendrier, mais vous ne pouvez pas utiliser les colonnes Date et Jours fériés dans la table Jours fériés en tant que champs dans un tableau croisé dynamique. Ici encore, pour faciliter la navigation dans les listes de champs, vous pouvez masquer la table Jours fériés entière.

Un autre aspect important de l’utilisation des dates consiste à nommer les conventions. Vous pouvez nommer des tables et des colonnes dans Power Pivot comme vous le souhaitez. Toutefois, n’oubliez pas, surtout si vous allez partager votre workbook avec d’autres utilisateurs, une convention d’appellation précise facilite l’identification des tables et des dates, non seulement dans les listes de champs, mais aussi dans les formules Power Pivot et DAX.

Après avoir créé une table de dates dans votre modèle de données, vous pouvez commencer à créer des mesures pour vous aider à utiliser au mieux vos données. Certaines peuvent être aussi simples que la total des totaux des ventes de l’année en cours, tandis que d’autres peuvent être plus complexes , où vous devez filtrer sur une plage spécifique de dates uniques. En savoir plus sur les mesures dans les fonctions Power Pivot et Time Intelligence.

Annexe

Conversion de dates de type de données texte en type de données de 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 comme 2012-12-04T11:47:09 n’est en fait pas une date du tout, ou au moins pas le type de date que Power Pivot peut comprendre. Il ne s’agit que de textes qui ressemblent à 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 tentez de modifier le type de données d’une colonne de dates qui sont du type de données texte en type de données de date, Power Pivot peut interpréter les dates et les convertir automatiquement en type de données date vrai. Si Power Pivot ne peut pas convertir le type de données, vous recevez une erreur d’inversion de type.

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

Dans cet exemple, nous avons importé une table de faits nommée Ventes dans Power Pivot. Elle contient une colonne nommée DateTime. Les valeurs apparaissent comme ceci :

Colonne Date/Heure dans une table de faits

Si vous consultez le type de données dans l’onglet Accueil de Power Pivot pour la mise en forme, 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 les colonnes DateTime et Date dans notre table de dates, car les types de données ne correspondent pas. Si nous essayons de modifier le type de données en Date,nous recevons une erreur d’inserreur de type :

Erreur d’incompatibilité

Dans ce cas, Power Pivot n’a pas pu convertir le type de données de texte à ce jour. Nous pouvons toujours utiliser cette colonne, mais pour obtenir un véritable type de données date, vous devez créer une colonne qui analyse le texte et le crée à nouveau en une valeur que Power Pivot peut créer comme type de données Date.

N’oubliez pas qu’à partir de la section Travailler avec le temps plus tôt dans cet article ; sauf si cela est nécessaire, vous devez convertir les dates de votre table de faits en niveau de précision de jour. En ayant cela à l’esprit, nous souhaitons que les valeurs de notre nouvelle colonne soient au niveau de précision du jour (en excluant le temps). Nous pouvons à la fois convertir les valeurs de la colonne DateTime en type de données de date et supprimer le niveau de précision de l’heure avec la formule suivante :

=DATE(GAUCHE([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 les valeurs qui doivent être des dates et définit automatiquement le type de données Date.

Colonne de date d’une table de faits

Pour conserver le niveau de précision dans l’heure, il suffit d’étendre la formule afin d’inclure les heures, les minutes et les secondes.

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

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

À présent 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

Référence des 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.

Ces informations vous ont-elles été utiles ?

Dans quelle mesure êtes-vous satisfait(e) de la qualité de la langue ?
Qu’est-ce qui a affecté votre expérience ?
En cliquant sur Envoyer, vos commentaires seront utilisés pour améliorer les produits et services de Microsoft. Votre administrateur informatique sera en mesure de collecter ces données. Déclaration de confidentialité.

Nous vous remercions de vos commentaires.

×