Rangsorszámítás
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ö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.
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.
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
)
)
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.