Power query Regroupement avec index et classement
Bonsoir,
J'aimerai savoir s'il est possible d'obtenir un classement par catégorie directement lors du regroupement. Je m'explique, je voudrais regrouper un fichier par catégorie et obtenir un index me donnant le classement dans la catégorie du regroupement. Cela en une seule opération.
Dans le fichier joint le résultat de la colonne Clt/Cat. Et si possible, toujours en une manipulation, la concaténation des colonnes Clt/Cat et Total.
D'avance merci.
Cordialement
Bonjour,
Je ne sais pas si c'est cela que tu attendais...
Ici, j'utilise la fonctionnalité "Rank", qui permet de faire le distinguo en cas d'égalité (si égalité, les concurrents ont le même classement, contrairement à l'ajout d'un index)
let
Source = Table.SelectColumns(Table.SelectRows(Pdf.Tables(Web.Contents("http://extranet.ffta.fr/pdfresultats/2023/S_0169182_20231021_65006.pdf"), [Implementation="1.3"]),each ([Kind] = "Table")),{"Data"}),
ExpandPdf = Table.PromoteHeaders(Table.ExpandTableColumn(Source, "Data", {"Column2", "Column3", "Column4", "Column5", "Column8"}, {"Column2", "Column3", "Column4", "Column5", "Column8"}), [PromoteAllScalars=true]),
Filtr = Table.SelectRows(ExpandPdf, each ([Cat] <> null and [Cat] <> "Cat")),
GroupBy = Table.Group(Filtr, {"Cat"}, {{"Nombre", each Table.RowCount(_), Int64.Type}, {"Tbl", each _, type table [Nom=text, Club=text, Licence=text, Cat=text, Total=text]}}),
CalculRang = Table.AddColumn(GroupBy, "Rang", each Table.AddRankColumn([Tbl],"Rang",{"Total", Order.Descending},[RankKind = RankKind.Competition])),
ExpandRang = Table.ExpandTableColumn(CalculRang, "Rang", {"Nom", "Club", "Licence", "Total", "Rang"}, {"Nom", "Club", "Licence", "Total", "Rang"}),
Fusion = Table.CombineColumns(Table.TransformColumnTypes(ExpandRang, {{"Rang", type text}, {"Nombre", type text}}, "fr-FR"),{"Rang", "Nombre"},Combiner.CombineTextByDelimiter(" / ", QuoteStyle.None),"Clt/Cat"),
Select = Table.SelectColumns(Fusion,{"Cat", "Club", "Licence", "Nom", "Clt/Cat", "Total"}),
Tri = Table.Sort(Select,{{"Club", Order.Ascending}, {"Cat", Order.Ascending}, {"Nom", Order.Ascending}})
in
Tri
Si ça peut faire avancer
Bonne journée, et bonne semaine
Hello,
Une approche qui revient au même que ce que propose cousinhub que je salue
let
Source = Pdf.Tables( Web.Contents( "http://extranet.ffta.fr/pdfresultats/2023/S_0169182_20231021_65006.pdf") ),
FilterTable = Table.SelectRows(Source, each ( [Kind] = "Table") ) [[Data]],
Combine = Table.Combine( Table.TransformColumns( FilterTable, { "Data", each Table.PromoteHeaders( _ ) } ) [Data]),
FilterNullClt = Table.SelectRows( Combine, each ( [Clt] <> null) ) [[Cat],[Nom],[Club],[Total]],
GroupBy = Table.Group(FilterNullClt, {"Cat"}, { { "tbl", each let a = Table.AddRankColumn( _ , "Rang" ,{"Total", Order.Descending},[RankKind = RankKind.Competition]) in Table.TransformColumns( a , {"Rang", each Text.From(_) & "/" & Text.From(List.Count ( a[Cat] ) ) }) } }),
Combine2 = Table.Combine(GroupBy[tbl]),
Sort = Table.Sort(Combine2,{{"Club", Order.Ascending}, {"Cat", Order.Ascending}, {"Nom", Order.Ascending}})
in
Sort
@+
Bonjour BAROUTE78, cousinhub,
Merci de vous être penchés sur mon problème.
Vos propositions me font découvrir de nouvelles perspectives, je vous en remercie.
Je regarde cela de plus près.
Bonne journée.
Cordialement.