Classificaties berekenen
De RANKX
DAX-functie is een speciale iterator-functie die u kunt gebruiken om rangschikkingen te berekenen. De bijbehorende syntaxis is als volgt:
RANKX(<table>, <expression>[, <value>[, <order>[, <ties>]]])
Net als bij alle andere iterator-functies moet u een tabel en een expressie doorgeven. U kunt desgewenst een rangschikkingswaarde doorgeven, de volgorderichting instellen of bepalen hoe u rangschikkingen moet verwerken wanneer waarden zijn gekoppeld.
Sorteerrichting
De sorteerrichting is oplopend of aflopend. Bij het rangschikken van iets gunstigs, zoals omzetwaarden, gebruikt u waarschijnlijk aflopende volgorde, zodat de hoogste omzet als eerste wordt gerangschikt. Wanneer u iets negatiefs rangschikt, zoals klachten van klanten, kunt u een oplopende volgorde gebruiken, zodat het laagste aantal klachten als eerste wordt gerangschikt. Wanneer u een orderargument niet doorgeeft, gebruikt de functie 0 (nul) (voor aflopende volgorde).
Werken met gelijke waarden
U kunt gelijke waarden verwerken door classificatiewaarden over te slaan of classificeren met het argument DENSE te gebruiken, waarbij de classificatiewaarde wordt gebruikt die volgt op de gelijke waarde. Wanneer u een argument ties niet doorgeeft, gebruikt de functie Overslaan. Verderop in deze les krijgt u de mogelijkheid om te werken met een voorbeeld van elk gelijkspelargument.
Classificatiemetingen maken
Voeg de volgende meting toe aan de tabel Product :
Product Quantity Rank =
RANKX(
ALL('Product'[Product]),
[Quantity]
)
Voeg de meting Classificatie van producthoeveelheid toe aan de tabelvisual op Pagina 2 van het rapport. In de tabelvisual worden fietsproducten gegroepeerd en de hoeveelheid weergegeven, waarbij producten aflopend worden gesorteerd op hoeveelheid.
De RANKX
functie herhaalt een tabel die wordt geretourneerd door de ALL
DAX-functie. De ALL
functie wordt gebruikt om alle rijen in een modeltabel of waarden in een of meer kolommen te retourneren en negeert alle filters. Daarom wordt in dit geval een tabel geretourneerd die bestaat uit alle kolomwaarden Product in de tabel Product . De RANKX
functie moet de ALL
functie gebruiken omdat de tabelvisual wordt gegroepeerd op product (een filter op de tabel Product ).
U ziet dat twee producten in de tabelvisual de tiende plek hebben en dat de classificatie van het volgende product 12 is. Deze visual is een voorbeeld van het gebruik van het overgeslagen argument TIES.
Uw volgende taak is het invoeren van de volgende logica om de metingdefinitie Classificatie van producthoeveelheid te wijzigen voor het gebruik van de classificatie DENSE:
Product Quantity Rank =
RANKX(
ALL('Product'[Product]),
[Quantity],
,
,
DENSE
)
In de tabelvisual ziet u dat er geen overgeslagen classificatie meer bestaat. Volgend op de twee producten die samen op de 10e plaats komen, is de classificatie 11.
U ziet dat het totaal van de tabelvisual voor Classificatie van producthoeveelheid één (1) is. De reden hiervoor is dat het totaal van alle producten is geclassificeerd.
Het is niet handig om producttotalen te classificeren. Daarom gebruikt u nu de volgende logica om de metingdefinitie te wijzigen zodat deze BLANK retourneert, tenzij één product wordt gefilterd:
Product Quantity Rank =
IF(
HASONEVALUE('Product'[Product]),
RANKX(
ALL('Product'[Product]),
[Quantity],
,
,
DENSE
)
)
U ziet dat de rangschikking van de totale producthoeveelheid nu BLANK is. Dit is bereikt door de HASONEVALUE
DAX-functie te gebruiken om te testen of de kolom Product in de tabel Product één waarde heeft in de filtercontext. Dit is het geval voor elke productgroep, maar niet voor het totaal, dat alle producten vertegenwoordigt.
Filtercontext en de HASONEVALUE
functie worden geïntroduceerd in de filtercontextmodule.