Classificaties berekenen

Voltooid

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 rangschikkingen moeten worden verwerkt wanneer waarden zijn gekoppeld.

Sorteerrichting

De sorteerrichting is oplopend of aflopend. Wanneer u iets gunstigs rangschikt, zoals omzetwaarden, gebruikt u waarschijnlijk een aflopende volgorde, zodat de hoogste omzet als eerste wordt gerangschikt. Bij het rangschikken van iets ongunstigs, zoals klachten van klanten, kunt u een oplopende volgorde gebruiken, zodat het laagste aantal klachten als eerste wordt gerangschikt. Wanneer u een volgordeargument 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 voor een binding niet doorgeeft, gebruikt de functie Overslaan. Verderop in deze les kunt u 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 alle filters worden genegeerd. Daarom wordt in dit geval een tabel geretourneerd die bestaat uit alle waarden van de kolom 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.

Een afbeelding geeft een tabelvisual weer met de titel Fietsverkoop. Deze heeft drie kolommen: Product, Hoeveelheid en Classificatie van producthoeveelheid. De tabelrijen zijn aflopend gesorteerd op Hoeveelheid. Twee producten delen de classificatie 10 en het volgende product heeft classificatie 12.

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.

Een afbeelding geeft een tabelvisual weer met de titel Fietsverkoop. Deze heeft drie kolommen: Product, Hoeveelheid en Classificatie van producthoeveelheid. De tabelrijen zijn aflopend gesorteerd op Hoeveelheid. Twee producten delen de classificatie 10 en het volgende product heeft 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.

Een afbeelding geeft weer dat het totaal van Classificatie van producthoeveelheid 1 is.

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
    )
)

Een afbeelding geeft weer dat het totaal van Classificatie van producthoeveelheid BLANK is.

U ziet dat de totale rangschikking van 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.