Máte takovouto tabulku:

Chcete seskupit texty podle skupin, takže použijete tento kód nebo podobný:

  • let
       Source = Excel.CurrentWorkbook(){[Name=”Table1″]}[Content],
       SortedRows = Table.Sort(Source,{ {“Group”, Order.Ascending},{“Something”, Order.Ascending}}),
       GroupedRows = Table.Group(SortedRows, {“Group”}, {{“Merged”, each Text.Combine([Something],”, “), type nullable text}})
    in
       GroupedRows

A překvapivě vám vyjde toto:

Překvapivé je, že je sice seskupeno správně, ale seskupené položky nejsou vzestupně seřazené, ačkoliv jste výslovně použili seřazovací krok. Ten je ze strany Power Query nestydatě ignorován.

Jak to vyřešit?

Stačí přidat krok, který si seřazenou tabulku načte do paměti, a dál se pracuje už s touto seřazenou:

  • let
       Source = Excel.CurrentWorkbook(){[Name=”Table1″]}[Content],
       SortedRows = Table.Sort(Source,{ {“Group”, Order.Ascending},{“Something”, Order.Ascending}}),
       Buffer = Table.Buffer(SortedRows),
       GroupedRows = Table.Group(Buffer, {“Group”}, {{“Merged”, each Text.Combine([Something],”, “), type nullable text}})
    in
       GroupedRows

Pak už je výsledek jaký jste očekávali:

Btw, pokud byste nechtěli tabulku bufferovat (někdy to může zpomalovat), můžete použít i třeba seřazení přímo v seskupení:

  • let
       Source = Excel.CurrentWorkbook(){[Name=”Table1″]}[Content],
       SortedRows = Table.Sort(Source,{ {“Group”, Order.Ascending},{“Something”, Order.Ascending}}),
       GroupedRows = Table.Group(SortedRows, {“Group”}, {{“Merged”, each Text.Combine(List.Sort([Something]),”, “), type nullable text}})
    in
       GroupedRows

Výsledek bude v tomto případě stejný.