Bonsoir à tous de nouveau !
Je n'ai pas testé cette méthode sur un jeu de données conséquent.
Proposition à tester :
let
Source = Excel.CurrentWorkbook(){[Name="TEST23"]}[Content],
TypeMod = Table.TransformColumnTypes(Source,{{"Date", type date}}),
ColDyn = Table.Pivot(TypeMod, List.Distinct(TypeMod[Libellés]), "Libellés", "Valeurs", List.Sum),
AjtAnnée = Table.AddColumn(ColDyn, "Année", each Date.Year([Date])),
Tri = Table.Buffer(Table.Sort(AjtAnnée,{{"Raison1", 0}, {"Date", 0}})),
GroupByMensuel = Table.Group(Tri, {"Année", "Raison1"}, {{"All", each Table.AddIndexColumn(Table.AddIndexColumn(_,"Idx0",0),"Idx1",1)}}),
Combine = Table.Combine(GroupByMensuel[All]),
Jointure = Table.NestedJoin(Combine, {"Année", "Raison1", "Idx0"}, Combine, {"Année", "Raison1", "Idx1"}, "All", JoinKind.LeftOuter),
Record = Table.AddColumn(Jointure, "Rec", each [
Quantités mensuelles = try [Quantités]-[All][Quantités]{0} otherwise [Quantités],
Pertes mensuelles = try [Pertes]-[All][Pertes]{0} otherwise [Pertes]
]),
ExpandRecord = Table.ExpandRecordColumn(Record, "Rec", {"Quantités mensuelles", "Pertes mensuelles"}),
SuppCol = Table.RemoveColumns(ExpandRecord,{"Quantités", "Pertes", "Année", "Idx0", "Idx1","All"}),
Unpivot = Table.UnpivotOtherColumns(SuppCol, {"Raison1", "Date"}, "Libellés", "Valeur"),
TriFinal = Table.Sort(Unpivot,{{"Libellés", 1}, {"Raison1", 0}, {"Date", 0}}),
Types = Table.TransformColumnTypes(TriFinal,{{"Raison1", type text}, {"Date", type date}, {"Libellés", type text}, {"Valeur", Int64.Type}})
in
Types
A voir si cette modification a une influence positive sur la rapidité d'exécution.