Power Query : avis sur regroupement

Bonjour à tous,

Pour un regroupement assez particulier, je suis arrivé à mes fins en puisant sur la toile notamment pour cette partie :

{"DATE DE DEBUT", each let t =_ in Table.SelectRows(t, each [DATE DE FIN] = List.Max(t[DATE DE FIN])), type table}}

J'aimerais avoir votre avis sur mon code, en sachant que j'aurai par la suite une plus grande volumétrie.

Merci d'avance,

Cordialement,

Hello,

Tu peux essayer ça aussi qui fonctionne :

= Table.Group(ColDyn, {"CATEGORIE", "TYPE", "IMPUTATION"}, {
{"N-1", each List.Sum([#"N-1"]), type number}, 
{"DATE DE FIN", each List.Max([DATE DE FIN]), type date}, 
{"DATE DE DEBUT", each [DATE DE DEBUT]{List.PositionOf(_[DATE DE FIN],List.Max([DATE DE FIN]))}} 
})

Mais je ne sais pas si c'est plus optimisé, je dirai oui car je me base sur une liste de valeur plutôt qu'un filtre de toute la table.

A tester sur de la volumétrie je pense, tu pourras nous dire ce qui est le mieux ?

Je ne comprends pas en revanche pourquoi ton N-1 somme toutes les REF alors que ton N somme uniquement la dernière REF en date. Egalement pourquoi tu récupères uniquement la dernière REF N dans ton tableau ?

@+

PS : Je laisse nos amis habituels faire d'autres propositions

Sinon pour optimiser on aurait la méthode pas "élégante" mais très efficace de trier la table et faire un check avec la ligne précédente, identifier quand on change de regroupement et marquer la ligne, et ensuite conserver uniquement les lignes marquées pour avoir la dernière ligne en date par regroupement. Et ensuite on part de ton groupBy sur lequel on fait une jointure classique sur la table nouvellement créée. Je sais pas si c'est très clair En théorie et de ce qui a pu être observé, c'est un peu plus bourrin comme méthode mais en termes de performance c'est mieux que de faire du Table.SelectRows dans un groupby.

Bonjour à tous !

Une autre approche ?

GroupBy = Table.Group(
        Table.Buffer(Table.Sort(ColDyn,{"DATE DE FIN",1})),
        {"CATEGORIE", "TYPE", "IMPUTATION"},
        {
            {"N-1", each List.Sum([#"N-1"]), type number},
            {"DATE DE FIN", each List.Max([DATE DE FIN]), type date},
            {"DATE DE DEBUT", each  Table.FirstN(_,1), type table}
        }),

Bonjour à tous,

Merci pour vos suggestions, pour le test ce ne sera pas dans l'immédiat, je dois d'abord retravaillé une base sur deux années, mais le résultat final sera identique à celui présenté ici,

@Baroute,

Je ne comprends pas en revanche pourquoi ton N-1 somme toutes les REF alors que ton N somme uniquement la dernière REF en date. Egalement pourquoi tu récupères uniquement la dernière REF N dans ton tableau ?

Effectivement c'est une présentation particulière, je somme sur N-1 mais pour N : en effet je n'aurai besoin que de la valeur N concerné par la date Max déterminé,

@JFL, merci pour votre proposition que je testerai grandeur nature avec celle que j'avais posté pour comparaison, et reviendrai sur le sujet afin d'apporter mon sentiment sur le temps d'exécution,

Cordialement,

Re bonjour à tous,

J'aurai besoin d'une colonne complémentaire, qui correspond à la somme de la colonne N des dates d'enregistrement antérieures ou égales à une date définie (ici

manuellement au 30/06/2025)

J'ai utilisé cette portion de code :

 {"SOMME N", each List.Sum(Table.SelectRows( _, each  [DATE ENREGISTREMENT]<=#date(2025, 6, 30))[N])}

Mais suite à la remarque de @Baroute sur la combinaison List.Sum et Table SelectRows, peut on faire autrement pour cette partie de calcul ?,

Merci d'avance,

Cordialement,

Hey,

Peut être l’heure tardive mais si tu dois faire la somme de la colonne N pour les dates antérieures à ta date max, ne faut il tout simplement pas juste faire la somme de la colonne N directement ?

(Je peux être un peu dur de la feuille parfois mais je pense que je suis toujours bloqué sur le même point avec la date max N )

@+

Bonjour @Baroute,

Désolé de ma réponse tardive , vous êtes surement en train de dormir !

Donc je soutiens toujours que j'ai besoin de la somme de la colonne N-1 mais pour l'année N,

je souhaite comme le fait le filtre sur la table, lors de la somme de la colonne N, ne conservait que les dates antérieures ou égales à la date d'enregistrement,

Mais ma question est de savoir si il n'y aurait pas une autre méthode pour éviter l'association du List.Sum avec Table.SelectRows dans un souci de vélocité,

Merci d'avance,

Cordialement,

Bonjour à tous !

Si l'objectif est d'éviter de manipuler la table, en passer par des listes est une voie possible :

Exemple d'agrégat à insérer dans l'étape "GroupBy" :

{"SumN", (x)=> List.Sum(List.Transform({0..Table.RowCount(x)-1}, each if x[DATE DE FIN]{_}<=#date(2025,6,30) then x[N]{_} else 0 ) )},

Bonsoir Jfl,

Merci pour ce retour que je n'aurai pas su écrire, je vais de ce pas m'y pencher pour mieux l'appréhender,

Bonne soirée à vous,

Cordialement,

Bonsoir à tous !

Bien...

Je vous remercie de ce retour.

Rechercher des sujets similaires à "power query avis regroupement"