2 Replies Latest reply on Aug 1, 2014 3:23 AM by Laurent DELAUNOY

    Isoler la date la plus ancienne pour un ID unique

    Laurent DELAUNOY

      Bonjour,

       

      Je suis débutant sur Tableau Software (un mois d'utilisation à faible régime), et bien qu'être parvenu à la plupart de mes objectifs, il y en a un qui me bloque, malgré mes recherches sur l.

       

      Admettons la table suivante :

      Contact

      ID_achat

      Date_achat

      Monsieur A

      123

      23/05/2014

      Monsieur A

      234

      25/05/2014

      Monsieur A

      345

      24/05/2014

      Monsieur B

      456

      27/05/2014

      Monsieur B

      567

      26/05/2014

      Monsieur B

      678

      28/05/2014

      Monsieur B

      789

      29/05/2014

       

      J'aimerais, dans Tableau, afficher le tableau suivant :

      Contact

      ID_achat

      Date_achat

      Monsieur A

      123

      23/05/2014

      Monsieur B

      567

      26/05/2014

       

      C'est-à-dire, pour un contact, ne conserver que la ligne de la Date_achat la plus ancienne.

      Il faut savoir que, pour deux lignes correspondant à deux achats, "Date_achat (1) < Date_achat (2)" n'implique pas "ID_achat (1) < ID_achat (2)", pour des raisons pas nécessairement utiles de préciser ici.

       

       

      La solution trouvée qui se rapproche le plus du résultat escompté est de mettre en ligne

      - le contact

      - un champ calculé : "MIN ( [Date_achat] )"

       

      Dans ce cas je vais obtenir le tableau suivant :

      Contact

      Date_achat_bis

      Monsieur A

      23/05/2014

      Monsieur B

      26/05/2014

       

      Mais si je souhaite rattacher l'ID_achat à ce lignes, je reviens au point de départ :

      Contact

      Date_achat_bis

      ID_achat

      Monsieur A

      23/05/2014

      123

      24/05/2014

      345

      25/05/2014

      234

      Monsieur B

      26/05/2014

      567

      27/05/2014

      456

      28/05/2014

      678

      29/05/2014

      789

       

       

      J'ai aussi pensé à un filtre avec la date en MIN, mais le logiciel me propose la plage de valeur des dates existantes pour toute la table, ainsi avec un MIN égal à la plus petite date de tout le tableau, les données affichées restent les mêmes.

       

       

      J'ai regardé du côté des fonctions de calcul de table, mais soit elles ne sont pas la solution à mon problème, soit je n'ai pas réussi à les maîtriser.

      Par ailleurs, la fonction INDEX semblait intéressante. Je pensais obtenir l'affichage suivant dans Tableau :

      Contact

      ID_achat

      Date_achat

      Index

      Monsieur A

      123

      23/05/2014

      1

      234

      25/05/2014

      2

      345

      24/05/2014

      3

      Monsieur B

      456

      27/05/2014

      1

      567

      26/05/2014

      2

      678

      28/05/2014

      3

      789

      29/05/2014

      4

      J'aurais ensuite fait un filtre sur la colonne Index pour ne conserver que les 1, mais il semble que la fonctionne ne marche pas de cette manière et mettre ce champ calculé en colonne n'a fait que dédoubler chaque ligne, en alternant "1" et "2" dans la colonne.

       

       

      Ma dernière solution serait une requête SQL, de type :

      SELECT *

      FROM table

      GROUP BY Contact

      ORDER BY Date_achat ASC

       

      Mais je suis sûr que Tableau permet de le faire de manière plus propre et vraiment adaptée.

       

      J'aimerais aussi que, si possible bien entendu, la solution soit assez souple, c'est-à-dire par exemple ne conserver à l'inverse que la ligne du dernier achat.

       

       

      Si quelqu'un pourrait m'éclairer sur cette problématique, je serais ravi ! Et quand bien même, merci de m'avoir lu.