PowerQuery - Tri et comparaison en fonction des dates

Bonjour,

Je cherche à trier un tableau de données en prenant, pour un nom donné, la dernière date, et la comparer avec (uniquement) la date précédente.

Une copie d'écran pour clarifier :

image

Comme vous le constaterez :

> La valeur C (Marseille) a disparue car il n'y a pas d'autre date avec qui comparer

> La valeur B n'apparaît que deux fois : les deux dates les plus récentes. La valeur "Toulouse" n'est donc pas prise en compte en sortie.

°°°

D'ordinaire, dans ce genre de cas, j'utilise l'option "référence" pour créer deux tableaux (là, en l'occurrence, ce serait un tableau "dernière date d'effet" et un autre "avant dernière date d'effet") puis je créé un autre table avec "fusionner des requêtes".

Mais là je n'arrive pas à filtrer sur la dernière date d'effet....pour chaque nom !

Ou alors, peut être faut-il créer une colonne qui concatène Nom + date?

Qu'en pensez-vous?

Merci pour votre aide!

EDIT : petite précision qui a son importance. On ne peut pas faire un "référence" pour chaque nom. Dans mon exemple il y en a 3 (A, B, C), mais pour mes vraies données ce sera des milliers !

5pq-test-date.xlsx (18.60 Ko)

Bonsoir à tous !

Une proposition via Power Query ?

Merci !

Quelle efficacité.

Que je comprenne :

1) Tu fais un group by des noms en comptant le nombre de date

2) Tu prends le nombre de date <> 1 pour éviter le cas "Marseille" que j'ai cité (=les cas avec une seule date et donc pas de comparaison possible)

3) Fonction combine (pas sûr de connaître et de comprendre ce qui se passe à cette étape...ça filtre par nom et ça met toutes les dates avec les valeurs les uns en dessous des autres. Mais Idx0 et Idx1 c'est quoi? Des colonnes de calcul intermédiaire, certes mais plus précisément? )

4) Fusion : ajout d'une colonne

5) FIltre sur Idx1 = 1

6) Ajout de l'ancienne date et l'ancienne valeur

7) Colonnes idx effacées

Merci pour votre aide !

Bonsoir à tous de nouveau !

3) Fonction combine (pas sûr de connaître et de comprendre ce qui se passe à cette étape...ça filtre par nom et ça met toutes les dates avec les valeurs les uns en dessous des autres. Mais Idx0 et Idx1 c'est quoi? Des colonnes de calcul intermédiaire, certes mais plus précisément? )

La fonction Table.Combine retourne le résultat attendu en une seule action.
Alternative : Table.ExpandTableColumn et ensuite Table.RemoveColumns soit deux actions.

Les Idx0 et Idx1 sont deux index que je rajoute lors du regroupement et qui me permettront, via une fusion de requête, de faire remonter les éléments cherchés sur le 1er enregistrement.

Merci JFL.

J'aimerais être capable de voir si je peux réaliser cela tout seul.

Pour l'étape group by, je n'ai pas de mal à reproduire mais....je constate que vous, vous arrivez en une seule étape à rajouter une colonne "table" (je suppose que c'est Fusionner?).

De mon côté, lorsque je fait le group by comme recommandé ci-dessous, je n'ai vraiment QUE le group by

https://docs.microsoft.com/fr-fr/power-query/group-by

Il y a une autre option à enclencher ou vous avez tapé le code?

***

Même question pour la fonction COmbine.Table, il faut forcément taper du code ou y a une option?

https://docs.microsoft.com/fr-fr/powerquery-m/table-combine

Merci pour votre aide

Bonjour à tous !

Dans le fichier joint, j'ai dupliqué la requête initiale en détaillant les étapes de regroupement.

Pour le "Table.Combine", il faut cliquer sur le fx

image

et saisir dans la barre de formule la fonction avec ses arguments.

Dans la requête "Détail" :

= Table.Combine( Ajout_Idx1[Idx1])

Ajout_Idx1 faisant référence à la table de l'étape précédente et [Idx1] donnera, sous forme d'une liste de tables, les éléments du champ Idx1qui seront combinés par la fonction.

Bonjour JFL,

Pour ne pas que vous pensiez que je suis ingrat, je vous remercie pour votre fichier détaillé!
Je n'ai pas encore réussi à reproduire, il faut que je me penche plus sérieusement sur le sujet, quitte à expliquer concrètement mes difficultés.

Voilà pourquoi je n'ai pas encore répondu.

A bientôt, et merci encore.

Bonjour à tous !

Je vous remercie pour ce retour.... constructif !

Merci JFL.

Si vous le voulez bien, on va aller étape par étape.

Dans votre dernier fichier détaillé, je bloque à l'étape "FirstN".

Moi ce que je fais c'est :

> AJouter une colonne personnalisée

> J'insère "Tbl" qui avait été créé à l'étape juste avant (étape "GroupBy_Etape1)

J'obtiens cela :

= Table.AddColumn(GroupBy_Etape1, "FirstN", each [Tbl])

Or, quand je regarde VOTRE code, il y a une certaine nuance qui me laisse penser que vous avez fait une autre manipulation.

Pourriez vous svp me guider?

= Table.AddColumn(GroupBy_Etape1, "FirstN", each Table.FirstN([tbl],2))

Bonjour à tous !

Je ne perçois votre difficulté.

Dans la requête "Détail", après l'étape GroupBy_Etape1, vous ajoutez une nouvelle colonne (FirstN) avec dans la zone "formule de colonne personnalisée" la formule :

Table.FirstN([tbl],2)

Vous devriez obtenir ceci :

image

Le "2" vise à ne prendre que les deux premiers éléments de la table précédemment triée par ordre chronologique décroissant.

Merci.

Donc...

1) GroupBy_Etape1 -->

image

2)

image

Mais j'ai une erreur...

image

Je vous joint mon fichier en erreur.

Voir requête "Détail (2)"

Pourtant tout me semble identique à la votre ...."Détail"...

Merci pour votre aide!

"

Bonsoir à tous !

Le Diable est souvent dans le détail....

Power Query est sensible à la casse. Hors vous faites référence dans la formule à [tbl] alors que votre champ est..... Tbl.

image

Merci JFL.

Effectivement....le diable se trouve dans les détails.

Navré, j'avance doucement mais je préfère être sûr.

Comment passe-t-on de:

image

à

image

Là aussi il faut taper la fonction "= Table.Combine( Ajout_Idx1[Idx1])" manuellement?

Ou, en manipulant certaines fonctions (voir ci-dessous), on peut s'en sortir?

image

Bonjour à tous !

Vous pouvez développer la table avec la souris. Mais il faudra ensuite supprimer les colonnes non nécessaires dans une autre étape

Rechercher des sujets similaires à "powerquery tri comparaison fonction dates"