Počítání pořadí

Dokončeno

Funkce RANKX DAX je speciální funkce iterátoru, kterou můžete použít k výpočtu pořadí. Její syntaxe je následující:

RANKX(<table>, <expression>[, <value>[, <order>[, <ties>]]])

Podobně jako u všech funkcí iterátoru musíte předat tabulku a výraz. Volitelně můžete předat hodnotu pořadí, nastavit směr pořadí nebo určit, jak zpracovávat pořadí při svázání hodnot.

Směr pořadí

Směr pořadí je buď vzestupný (Ascending), nebo sestupný (Descending). Při seřazování něčeho příznivého, jako jsou hodnoty výnosů, pravděpodobně použijete sestupné pořadí, aby nejvyšší výnosy byly seřazeny na první místo. Při řazení něčeho nepříznivého, jako jsou stížnosti zákazníků, můžete použít vzestupné pořadí, aby byl na prvním místě nejnižší počet stížností. Pokud nepředáte argument pořadí, funkce použije hodnotu 0 (nula) (pro sestupné pořadí).

Jak pracovat se shodnými hodnotami

Pokud máte několik shodných hodnot, můžete pořadová místa přeskočit, nebo použít zhuštěné řazení, což znamená, že číslování následujícího pořadového místa by mělo navázat na číslo místa, o které se dělí shodné hodnoty. Pokud nepředáte argument vazby, funkce použije Skip. Později v této lekci budete mít možnost pracovat s příkladem každého argumentu vazby.

Vytváření měr pro určení pořadí

Do tabulky Product přidejte následující míru:

Product Quantity Rank =
RANKX(
    ALL('Product'[Product]),
    [Quantity]
)

Do vizuálu tabulky, který najdete na stránce 2 v sestavě přidejte míru Product Quantity Rank (Pořadí produktů podle množství). Vizuál tabulky seskupuje produkty související s koly a zobrazí jejich množství v sestupném pořadí.

Funkce RANKX iteruje tabulku, která je vrácena funkcí jazyka ALL DAX. Funkce ALL se používá k vrácení všech řádků v tabulce modelu nebo hodnot v jednom nebo více sloupcích a ignoruje všechny filtry. Proto v tomto případě vrátí tabulku, která se skládá ze všech hodnot sloupců Product v tabulce Product . Funkce RANKX musí používat funkci, ALL protože vizuál tabulky se seskupí podle produktu (což je filtr tabulky Product ).

Ve vizuálu tabulky si všimněte, že se dva produkty dělí o desáté místo a že další produkt je dvanáctý v pořadí. Tento vizuál je příkladem situace, kdy argument Ties používá přeskočení pořadového místa.

Obrázek s vizuálem tabulky s názvem Bike Sales (Prodeje kol). Obsahuje tři sloupce: Product (Produkt), Quantity (Množství) a Product Quantity Rank (Pořadí produktů podle množství). Řádky tabulky jsou seřazené sestupně podle sloupce s údaji o množství. Dva produkty jsou na 10. místě a produkt, který po nich následuje, je na 12. místě.

Vaším úkolem je zadat následující logiku a upravit definici míry Product Quantity Rank (Pořadí produktů podle množství) tak, aby používala zhuštěné řazení:

Product Quantity Rank =
RANKX(
    ALL('Product'[Product]),
    [Quantity],
    ,
    ,
    DENSE
)

Všimněte si, že ve vizuálu tabulky již neexistuje řazení, které by přeskakovalo pořadová místa. Po dvou produktech, které se dělí o 10. místo, následuje produkt na 11. místě.

Obrázek s vizuálem tabulky s názvem Bike Sales (Prodeje kol). Obsahuje tři sloupce: Product (Produkt), Quantity (Množství) a Product Quantity Rank (Pořadí produktů podle množství). Řádky tabulky jsou seřazené sestupně podle sloupce s údaji o množství. Dva produkty jsou na 10. místě a produkt, který po nich následuje, je na 11. místě.

Všimněte si, že vizuální součet tabulky Product Quantity Rank (Pořadí produktů podle množství) je jedna (1). Důvodem je skutečnost, že celkové hodnoty u všech produktů jsou seřazené.

Obrázek ukazuje, že součet tabulky Product Quantity Rank (Pořadí produktů podle množství) je 1.

Vytvářet pořadí celkového počtu produktů není vhodné. Pomocí následující logiky tedy upravte definici míry tak, aby vracela prázdnou hodnotu, pokud nebude vyfiltrován jen jeden produkt:

Product Quantity Rank =
IF(
    HASONEVALUE('Product'[Product]),
    RANKX(
        ALL('Product'[Product]),
        [Quantity],
        ,
        ,
        DENSE
    )
)

Obrázek ukazuje, že součet tabulky Product Quantity Rank (Pořadí produktů podle množství) je prázdná hodnota.

Všimněte si, že celkové pořadí product quantity je nyní PRÁZDNÉ, což bylo dosaženo pomocí HASONEVALUE funkce DAX k otestaci, zda má sloupec Product v tabulce Product jednu hodnotu v kontextu filtru. Platí to pro každou skupinu produktů, ale ne pro součet tabulky, která zahrnuje všechny produkty.

Kontext filtru a HASONEVALUE funkce budou zavedeny v modulu kontextu filtru.