V Power BI nebo v Excelu je k dispozici funkcionalita, která umožňuje seřadit hodnoty v jednom sloupci podle hodnot v jiném sloupci. Toto nastavení je velice užitečné, nicméně skrývá v sobě také malou past, kterou pokud neznáme, může přinést nepříjemnosti při tvorbě měřítek ve kterých manipulujeme s filtry. Jak nastavit řazení hodnot v jednom sloupci podle hodnot v jiném sloupci v Power BI, včetně možných dopadů na DAX výpočty v měřítku, je popsáno v samostatném příspěvku.
V tomto příspěvku si ukážeme jednoduchý trik, díky kterému si můžeme seřadit sloupec s texty podle číselných hodnot v jiném sloupci, a vyhnout se tak možným problémům, které jsou spojené se standardním a doporučovaným řešením s využitím vestavěné Power BI funkcionality, určené pro seřazení sloupce podle hodnot v jiném sloupci.
Pozn.: Postup seřazení sloupce v tomto příspěvku by neměl být preferovanou variantou, jedná pouze o zajímavou alternativu (možná kuriozitu) ke standardnímu řešení, které je popsané v už jednou zmíněném samostatném příspěvku.
V příkladu můžeme použít názvy měsíců, což je typický sloupec, který potřebujeme mít v reportu seřazený podle pořadí měsíců v roce, a ne podle abecedního pořadí. Pokud po načtení kalendářní tabulky vložíme názvy měsíců do vizuálu, bez nastavení řazení tohoto sloupce podle hodnot v jiném sloupci, výsledek může vypadat následovně.
Jak je možné vidět na obrázku výše, měsíce v řádcích vizuálu jsou seřazeny abecedně, a ne podle pořadí měsíců v roce. Alternativní postup, jak vytvořit další sloupec s názvy měsíců v kalendářní tabulce, který bude seřazen podle sloupce s pořadovým číslem měsíců, může vypadat následovně.Počítaný sloupec:
Logika výpočtu je založena na předpokladu, že netisknutelný znak UNICHAR 8203 je předřazen při řazení jakémukoliv písmenu v abecedě. Tento znak je prvním argumentem funkce REPT(), která vrátí takový počet těchto netisknutelných znaků s kódem 8203, jaké číslo bude výsledkem ve druhém argumentu funkce. Výsledkem výrazu ve druhém argumentu funkce REPT() je rozdíl mezi maximální hodnotou ve sloupci s pořadovým číslem měsíců (číslo 12 - prosinec), od kterého odečteme pořadové číslo měsíce v aktuálním řádku.
V řádku s měsícem leden tak bude ve druhém argumentu funkce REPT() číslo 11 (12 – 1), pro únor se to bude číslo 10 (12 – 2), a tak dále, až do prosince, ve kterém bude výsledkem druhého argumentu funkce REPT() číslo 0 (12 – 12). Pro měsíc leden tak bude před slovem leden vloženo 11 netisknutelných znaků UNICHAR 8203, které zajistí, že měsíc leden bude zařazen ve vizuálech na první místo. V měsíci únor to bude 10 netisknutelných znaků před samotným názvem měsíce a druhé místo v pořadí za měsícem leden, a tak dále. Pokud nový počítaný sloupec vložíme do vizuálu, výsledek bude vypadat následovně.
Jak je možné vidět na obrázku výše, nový počítaný sloupec je opravdu seřazen podle pořadí měsíců v roce. Tento postup je možné aplikovat také na jiné sloupce, které chceme seřadit podle číselné hodnoty v jiném sloupci stejné tabulky.Postup seřazení sloupce uvedený v tomto příspěvku může být za určitých okolností alternativou ke standardnímu řešení, které, pokud nevíme jak přesně funguje, může přinášet problémy při definici měřítek, ve kterých manipulujeme s filtry, jak je popsáno v již dříve odkazovaném příspěvku.
Praktické řešené úlohy v jazyku DAX, včetně komlexních příkladů nebo příkladů časových kalkulací, můžete najít na stránce DAX příklady nebo na stránce Power BI.
Komentáře
Okomentovat