Rangsorszámítás

Befejeződött

A RANKX DAX-függvény egy speciális iterátorfüggvény, a rangok kiszámításához használható. A szintaxis a következő:

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

Minden iterátorfüggvénynek van egy táblahivatkozást és egy kifejezést megadó argumentuma. Igény szerint megadhat egy rangsorértéket, beállíthatja a sorrend irányát, vagy meghatározhatja, hogyan kezelje a rangsorokat, ha az értékek kötődnek.

A sorrend iránya

A sorrend iránya növekvő vagy csökkenő lehet. Ha valami kedvezőt rangsorol, például a bevételi értékeket, valószínűleg csökkenő sorrendet használ, hogy a legmagasabb bevétel legyen az első. Ha valami kedvezőtlen dolgot rangsorol, például az ügyfélpanaszokat, növekvő sorrendet használhat, hogy a legalacsonyabb számú panasz legyen az első. Ha nem ad meg egy sorrendargumentumot, a függvény a 0 (nulla) értéket (csökkenő sorrendben) fogja használni.

Az egyezések (azonos rangok) kezelése

Az egyezések esetén a közbenső rangsorértékek kihagyására (Skipped érték) és folytonos rangsor (Dense érték) használatára is lehetőség van. Utóbbi az azonos rangsorértékeket követően a következő rangsorértéket osztja ki. Ha nem ad meg egy ties argumentumot, a függvény a Skip függvényt fogja használni. A lecke későbbi részében lehetősége lesz a tie argumentumok egy-egy példájával dolgozni.

Rangsorolási mértékek létrehozása

Adja hozzá a következő mértéket a Product táblához:

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

Adja hozzá a Product Quantity Rank mértéket a táblavizualizációhoz, amely a jelentés Page 2 (második) oldalán található. A táblavizualizáció a mennyiség alapján csökkenő sorrendben, csoportosítva jeleníti meg a kerékpártípusokat.

A RANKX függvény a DAX-függvény által visszaadott ALL táblán keresztül iterál. A ALL függvény egy modelltábla összes sorát vagy egy vagy több oszlop értékeit adja vissza, és figyelmen kívül hagyja az összes szűrőt. Ezért ebben az esetben egy táblát ad vissza, amely a Product tábla Összes Product oszlopértékéből áll. A RANKX függvénynek a függvényt ALL kell használnia, mert a táblavizualizáció termék szerint lesz csoportosítva (amely a Product tábla szűrője).

Megfigyelhető, hogy a táblavizualizációban két termék is a 10. helyre került a rangsorban, és a következő termék rangja 12. Ez a vizualizáció egy példa a ties argumentum Skipped értékének használatára.

A képen egy Bike Sales (Kerékpár-eladások) című táblavizualizáció látható, amely három oszlopból áll: Product (Termék), Quantity (Mennyiség) és Product Quantity Rank (Eladási rangsor). A tábla sorai mennyiség szerint csökkenő sorrendben vannak rendezve. Két termék osztozik a 10. rangon, a következő termék rangja pedig 12.

A következő feladatban az alábbi logika megadásával módosíthatja a Product Quantity Rank mértékdefiníciót úgy, hogy folytonos rangsorolást eredményezzen.

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

Látható, hogy a táblavizualizációban már a folytonos rangsorolás van érvényben. A 10. rangon osztozó két termék után a következő rangsorérték a 11.

A képen egy Bike Sales (Kerékpár-eladások) című táblavizualizáció látható, amely három oszlopból áll: Product (Termék), Quantity (Mennyiség) és Product Quantity Rank (Eladási rangsor). A tábla sorai mennyiség szerint csökkenő sorrendben vannak rendezve. Két termék osztozik a 10. rangon, a következő termék rangja pedig 11.

Látható, hogy a táblavizualizációban a Product Quantity Rankoszlop összesen sorának értéke egy (1). Ennek a magyarázata az, hogy az össztermékmennyiséget is figyelembe vettük a rangsorolásnál.

A képen látható, hogy a Product Quantity Rank összesen sorának értéke 1.

Nincs értelme rangsorolni az össztermékmennyiséget, ezért a következő logikával módosíthatja a mértékdefiníciót úgy, hogy az BLANK értéket eredményezzen, kivéve ha egyetlen termékre szűrtünk:

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

A képen látható, hogy a Product Quantity Rank összesen sora BLANK értéket vesz fel.

Figyelje meg, hogy a Product Quantity Rank (Termékmennyiség rangsora) teljes értéke BLANK, amelyet a HASONEVALUE DAX függvénnyel érhet el annak tesztelésére, hogy a Product tábla Product oszlopa egyetlen értékkel rendelkezik-e a szűrőkörnyezetben. Ez az össztermékmennyiséget megjelenítő sor kivételével minden termékcsoport esetében igaz.

A szűrőkörnyezet és a HASONEVALUE függvény a szűrőkörnyezet modulban lesz bevezetve.