BASE DE CONNAISSANCES

Combinaison de plusieurs champs de date


Date de publication : 24 Apr 2017
Date de dernière modification : 09 Apr 2024

Question

Comment combiner plusieurs champs de dates dans un seul axe ou un seul en-tête de date.

Par exemple, chaque commande a une [Order Date] (Date de commande) et une [Ship Date] (Date d'expédition). L'objectif final est d'afficher un graphique en courbes ou un tableau croisé du nombre de commandes placées et expédiées chaque mois. Si [Order Date] est utilisé comme axe ou en-tête, le nombre de commandes expédiées chaque mois sera incorrect, et vice versa.

Environnement

Tableau Desktop

Réponse

L'exemple de classeur joint utilise l'exemple d'ensemble de données Superstore pour démontrer toutes les options.
CLIQUER POUR DÉVELOPPER LA SOLUTION
Option 1 : permuter les champs de date
  1. Permutez les champs de date de manière à ce qu'il n'y ait qu'un seul champ avec des données de date, et un second champ, par exemple « Événement », décrivant si l'événement est une « commande placée » ou une « commande expédiée ». Remarque : pour certaines sources de données, la permutation peut être effectuée directement dans Tableau Desktop. Pour des instructions détaillées, consultez Permuter les données de colonnes en lignes
  2. Faites un clic droit et faites glisser [Pivot Field Values] (Permuter les valeurs des champs) vers l'étagère Lignes
  3. Dans la boîte de dialogue Déposer un champ, sélectionnez MY(Pivot Field Values) et cliquez sur OK
  4. Faites un clic droit sur [Pivot Field Names] (Permuter les noms des champs) dans le volet Données et sélectionnez Alias…
  5. Dans la boîte de dialogue Modifier les alias, donnez un alias plus descriptif à Order Date et Ship Date et cliquez sur OK
  6. Faites glisser [Pivot Field Names] vers l'étagère Colonnes
  7. Faites un clic droit et faites glisser [Order ID] vers Texte dans la fiche Repères
  8. Dans la boîte de dialogue Déposer un champ, sélectionnez CNTD(Order ID) et cliquez sur OK
CLIQUER POUR DÉVELOPPER LA SOLUTION
Option 2 : utiliser un calcul LOD
Cette option exige que chaque champ de date comporte au moins un enregistrement pour chaque classe de date dans la vue. Dans cet exemple, chaque ligne est un mois, donc [Order Date] et [Ship Date] doivent tous deux comporter au moins une commande pour chaque mois.
  1. Choisissez un champ de date pour créer l'axe des dates ou des en-têtes. Cet exemple utilise [Order Date]
  2. Faites un clic droit et faites glisser [Order Date] vers l'étagère Lignes
  3. Dans la boîte de dialogue Déposer un champ, sélectionnez MY(Order Date) avec l'icône bleue # et cliquez sur OK
  4. Faites un clic droit et faites glisser [Order ID] vers Texte dans la fiche Repères
  5. Dans la boîte de dialogue Déposer un champ, sélectionnez CNTD(Order ID)
  6. Faites un clic droit sur l'en-tête « Distinct count of Order ID » dans la vue et sélectionnez Modifier l'alias…
  7. Dans la boîte de dialogue Modifier l'alias, entrez un nouveau nom et cliquez sur OK
  8. Créez un champ calculé portant un nom tel que « Commandes expédiées » avec un calcul du type suivant :

    MIN(
    IF DATETRUNC('month', [Order Date]) = DATETRUNC('month', [Ship Date])
    THEN { FIXED DATETRUNC('month', [Ship Date]) : COUNTD([Order ID]) }
    END
    )


    9. Double-cliquez sur [Orders Shipped] dans le volet Données pour ajouter le champ à la vue

     
CLIQUER POUR DÉVELOPPER LA SOLUTION
Option 3 : utiliser l'échafaudage de dates
Cette option exige qu'un champ de date vienne toujours avant un autre champ de date, et fonctionne de manière optimale lorsque deux champs de dates définissent une plage.
  1. Créez une table contenant une liste principale de toutes les dates possibles, qui seront liées à la connexion de données d'origine. Dans cet exemple, cette table est appelée « Liste de dates principale »
  2. Accédez à l'onglet Source de données dans Tableau Desktop
  3. Ajoutez la table « Sheet 1 » à la zone de l'espace de travail
  4. Dans la boîte de dialogue Lier, procédez comme suit :
    1. Sélectionnez Gauche
    2. Dans Source de données, sélectionnez Date de commande
    3. Sous Sheet 1, sélectionnez Date
    4. Cliquez sur le signe égal, puis sélectionnez <=
    5. Dans Source de données, cliquez sur Ajouter une nouvelle clause de liaison, puis sélectionnez Date d'expédition
    6. Sous Sheet 1, sélectionnez Date
    7. Cliquez sur le signe égal, puis sélectionnez >=
  5. Sélectionnez Analyse > Créer un champ calculé
  6. Dans la boîte de dialogue Champ calculé qui s'ouvre, procédez comme suit, puis cliquez sur OK :
    1. Nommez le champ calculé. Dans cet exemple, le champ calculé est appelé « Commandes placées »
    2. Dans le champ de formule, créez un calcul du type suivant :
      COUNTD(
      IF DATETRUNC('month', [Order Date]) = DATETRUNC('month', [Date])
      THEN [Order ID]
      END
      )
  7. Créez un champ calculé portant un nom tel que « Commandes expédiées » avec un calcul du type suivant :
    COUNTD(
    IF DATETRUNC('month', [Ship Date]) = DATETRUNC('month', [Date])
    THEN [Order ID]
    END
    )
  8. Faites un clic droit et faites glisser [Date] vers l'étagère Lignes
  9. Dans la boîte de dialogue Déposer un champ, sélectionnez MY(Date) et cliquez sur OK
  10. Faites glisser [Orders Placed] vers Texte sur la fiche Repères
  11. Double-cliquez sur [Orders Shipped] dans le volet Données pour ajouter le champ à la vue
CLIQUER POUR DÉVELOPPER LA SOLUTION
Option 4 : utiliser la fusion des données
Cette option ne fonctionnera pas pour une plage de dates.
  1. Créez une table contenant une liste principale de toutes les dates possibles, et créez une nouvelle connexion à cette liste. Dans cet exemple, la connexion est appelée « Sheet1 (liste de dates principale) »
  2. Accédez à Données > Sample - Superstore > Dupliquer. Dans cet exemple, j'ai nommé les deux copies de « Sample - Superstore » en tant que « Sample - Superstore (link on order date) » et « Sample - Superstore (link on ship date) » pour plus de clarté.
  3. Accédez à Données > Modifier les relations...
  4. Dans la boîte de dialogue Relations, procédez comme suit :
    1. Pour la source de données principale, sélectionnez Sheet1 (liste de dates principale)
    2. Pour la source de données secondaire, sélectionnez Sample - Superstore (link on order date)
    3. Sélectionnez la case d'option Personnalisé
    4. Cliquez sur Ajouter…
  5. Dans la boîte de dialogue Ajouter/modifier le mappage des champs, procédez comme suit :
    1. Cliquez sur la flèche à côté de Date pour développer les options de date
    2. Sélectionnez le niveau de date correspondant au niveau de date le plus granulaire utilisé dans la vue. Dans cet exemple, la vue utilise MY(Date).
    3. Dans le volet droit, cliquez sur la flèche à côté du champ Order Date
    4. Sélectionnez le niveau de date correspondant pour Order Date
    5. Cliquez sur ’OK’
  6. Répétez les étapes 4-5 avec « Sample - Superstore (link on ship date) » comme source de données secondaire et en ajoutant une relation sur MY(Date) = MY(Ship Date)
  7. Cliquez sur OK pour fermer la boîte de dialogue Relations
  8. Dans une nouvelle feuille de calcul, faites un clic droit et faites glisser [Date] depuis la connexion de données « sheet1 (liste de dates principale) » vers la vue
  9. Dans la boîte de dialogue Déposer un champ, sélectionnez MY(Date) et cliquez sur OK
  10. Faites un clic droit sur l'en-tête « Distinct count of Order ID » dans la vue et sélectionnez Modifier l'alias…
  11. Dans la boîte de dialogue Modifier l'alias, entrez un nom plus descriptif et cliquez sur OK
  12. Faites un clic droit et faites glisser [Order ID] depuis la source de données « Sample - Superstore (link on order date) » sur Texte dans l'étiquette Repères
  13. Dans la boîte de dialogue Déposer un champ, sélectionnez CNTD(Order ID) et cliquez sur OK
  14. Faites un clic droit et faites glisser [Order ID] depuis la source de données « Sample - Superstore (link on ship date) » sur Texte dans l'étiquette Repères
  15. Dans la boîte de dialogue Déposer un champ, sélectionnez CNTD(Order ID) et cliquez sur OK
  16. Faites glisser CNTD(Order ID) depuis Détails vers la fiche Repères sur les nombres dans la vue et déposez le champ
  17. Dans la boîte de dialogue Modifier l'alias, entrez un nom plus descriptif et cliquez sur OK

Informations supplémentaires

Remarques sur l'Option 2 (expression LOD) :
  • Chaque champ de date doit avoir au moins un enregistrement pour le niveau de date utilisé dans la vue
  • L'expression FIXED renvoie le nombre total distinct de commandes expédiées pour chaque mois dans [Ship Date], quel que soit le mois de [Ship Date] apparaissant dans la vue. Par exemple, les commandes expédiées en février ont été placée à la fois en janvier et en février. Ainsi, l'expression FIXED par elle-même renverrait 59 commandes pour MY(Order Date) = January et MY(Order Date) = February.
  • Toute l'instruction IF est enveloppée dans MIN() pour éviter un problème où les expressions LOD renvoient des valeurs dupliquées dans une instruction IF.

Remarques sur l'Option 3 (échafaudage de dates) :
  • Il est également possible de répertorier toutes les dates à un niveau de date supérieur, par exemple le premier jour de chaque mois. Ensuite, dans les étapes 4-2 et 4-5, utilisez un calcul de jointure qui définira la date dans la table d'origine sur le niveau de date correct, par exemple DATETRUNC('month', [Order Date])
  • S'il n'est pas possible d'ajouter une table à la source de données d'origine avec toutes les dates, créez une jointure entre bases de données vers une table externe contenant toutes les dates. Cette opération nécessite la mise à niveau à Tableau Desktop 10.5 ou version supérieure pour utiliser les inégalités dans les clauses de liaison pour la fonction de liaisons entre bases de données.
  • Cette option duplique les données, ce qui peut avoir un impact sur les autres vues utilisant la même source de données
  • À partir de Tableau Prep 2021.3.1, il est possible de créer des échafaudages de dates dans Tableau Prep sans créer de liste de dates. Reportez-vous à Combler les lacunes dans les données séquentielles pour obtenir des instructions.
Remarques sur l'Option 4 (fusion des données) :
  • La fusion des données se heurte à nombreuses limitations. Pour obtenir de l'aide en cas de problèmes potentiels, consultez Résoudre les problèmes de fusion des données
  • Les dates liées doivent correspondre exactement au niveau de date le plus granulaire sélectionné dans la boîte de dialogue Relations
  • Lorsque vous créez des relations entre des champs de différentes sources de données, chaque champ peut uniquement être associé avec un autre champ à la fois, ce qui explique la nécessité de dupliquer la source de données d'origine.
  • Tous les champs associés à [Order Date] doivent être extraits de la copie de la source de données d'origine liée sur MY(Date) = MY(Order Date), et vice versa pour tous les champs associés avec [Ship Date]

Affichage des enregistrements actifs dans la durée
Fusionner vos données
Créer des expressions LOD dans Tableau
Les instructions CASE et IF contenant une expression LOD retournent des résultats inattendus
Cet article vous a-t-il permis de résoudre le problème ?