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.