Tento článek popisuje, jak v Power Query najít např. druhou nejnižší hodnotu, třetí nejpozdější datum atd.

Ukážeme si jak toto zjišťovat z celé tabulky najednou a jak po skupinách.

Vyjdeme z této tabulky:

Zjištění druhé nejvyšší hodnoty (druhého nejpozdějšího datumu)

Do vlastního sloupce (nebo analogicky jinam) zapíšeme takovýto vzorec:

  • List.Sort(
       MyTable[Meeting],
       Order.Ascending)
    {1}

Protože:

  • MyTable[Meeting] – vytáhne sloupec a udělá z něj seznam / list.
  • List.Sort – seznam seřadí. Druhý volitelný argument, definující směr řazení, je volitelný – při vynechání se defaultně řadí vzestupně.
  • {1} – vytáhne druhou položku ze seznamu (v Power Query se čísluje od nuly, proto jednička reprezentuje druhou položku)

Btw, pokud bychom chtěli úplně nejnižší nebo nejvyšší hodnotu, je to jednodušší – stačilo by jen něco jako:

  • List.Min(MyTable[Meeting])

resp:

  • List.Max(MyTable[Meeting])

Zjištění druhé nejvyšší hodnoty podle jednotlivých klientů

Chceme-li to samé sledovat ne za celou tabulku, ale za každou podskupinu (v tomto případě zákazníka), použijeme vzorec v seskupování.

To můžeme zapsat rovnou v M-ku (pozor, nepůjde to přes vlastní sloupec):

  • = Table.Group(
         MyTable,
         {“Customer”},
         {{“Second earliest meeting date by customer”, each List.Sort([Meeting],Order.Ascending){1}, type nullable date}})

Pokud neradi zapisujete dlouhé kódy, můžete tabulku nejprve seskupit s použitím jakékoliv funkce, a pak jen přepsat kousek vzorce: