Iterator-aggregatiefuncties gebruiken

Voltooid

Elke samenvattingsfunctie met één kolom heeft een equivalente iterator-functie. In de volgende secties worden twee aggregatiescenario's besproken wanneer iteratorfuncties nuttig zijn: complexe samenvatting en een betere samenvatting.

Complexe samenvatting

In deze sectie maakt u uw eerste meting die gebruikmaakt van een iterator-functie. Download en open eerst het bestand Adventure Works DW 2020 M05.pbix. Voeg vervolgens de volgende metingdefinitie toe:

Revenue =
SUMX(
    Sales,
    Sales[Order Quantity] * Sales[Unit Price] * (1 - Sales[Unit Price Discount Pct])
)

Maak de meting Omzet op als valuta met twee decimalen en voeg deze vervolgens toe aan de tabelvisual op pagina 1 van het rapport.

Een afbeelding geeft een tabelvisual weer met twee kolommen: Maand en Omzet. De gegevens voor één jaar zijn zichtbaar.

Door gebruik te maken van een iterator-functie wordt met de metingformule Omzet meer samengevat dan de waarden uit één kolom. Voor elke rij worden de rijcontextwaarden van drie kolommen gebruikt om de totale omzet te produceren.

Voeg nu nog een andere meting toe:

Discount =
SUMX(
    Sales,
    Sales[Order Quantity]
    * (
        RELATED('Product'[List Price]) - Sales[Unit Price]
    )
)

Maak de meting Korting op als valuta met twee decimalen, en voeg deze vervolgens toe aan de tabelvisual.

Een afbeelding geeft een tabelvisual weer met drie kolommen: Maand, Omzet en Korting. De gegevens voor één jaar zijn zichtbaar.

U ziet dat de formule gebruikmaakt van de RELATED functie . Onthoud dat de rijcontext niet buiten de tabel reikt. Als uw formule moet verwijzen naar kolommen in andere tabellen en er modelrelaties tussen de tabellen bestaan, gebruikt u de RELATED functie voor de een-zijderelatie of de RELATEDTABLE functie voor de veel-zijrelatie.

Zeer gedetailleerde samenvatting

In het volgende voorbeeld wordt gekeken naar een vereiste om de gemiddelde omzet te rapporteren. Voeg de volgende meting toe:

Revenue Avg =
AVERAGEX(
    Sales,
    Sales[Order Quantity] * Sales[Unit Price] * (1 - Sales[Unit Price Discount Pct])
)

Maak de meting Gem. omzet op als valuta met twee decimalen, en voeg deze vervolgens toe aan de tabelvisual.

Een afbeelding geeft een tabelvisual weer met vier kolommen: Maand, Omzet, Korting en Gem. omzet. De gegevens voor één jaar zijn zichtbaar.

Bedenk dat gemiddelde betekent: de som van de waarden gedeeld door het aantal waarden. Deze theorie roept echter een vraag op: Wat is het aantal waarden? In dit geval is het aantal waarden het aantal expressies waarvan de evaluatie niet heeft geresulteerd in BLANK. Omdat de iterator-functie de rijen van de tabel Sales opsomt, betekent gemiddelde ook omzet per rij. Door deze logica nog een stap verder te brengen, omdat elke rij in de tabel Verkoop een verkooporderregel registreert, kan deze nauwkeuriger worden beschreven als omzet per orderregel.

Dienovereenkomstig moet u de naam van de meting Gem. omzet wijzigen in Gem. omzet orderregel, zodat duidelijk is voor rapportgebruikers waarop het gemiddelde is gebaseerd.

In het volgende voorbeeld wordt een iterator-functie gebruikt om een nieuwe meting te maken, waarmee de details op verkooporderniveau zichtbaar worden (een verkooporder bestaat uit één of meer orderregels). Voeg de volgende meting toe:

Revenue Avg Order =
AVERAGEX(
    VALUES('Sales Order'[Sales Order]),
    [Revenue]
)

Maak de meting Gem. omzet order op als valuta met twee decimalen, en voeg deze vervolgens toe aan de tabelvisual.

Een afbeelding geeft een tabelvisual weer met vijf kolommen: Maand, Omzet, Korting, Gem. omzet orderregel, en Gem. omzet order. De gegevens voor één jaar zijn zichtbaar.

Zoals verwacht, is de gemiddelde omzet voor een order altijd hoger dan de gemiddelde omzet voor een enkele orderregel.

U ziet dat de formule gebruikmaakt van de VALUES DAX-functie. Met deze functie kunnen uw formules bepalen welke waarden zich in de filtercontext bevinden. In dit geval herhaalt de AVERAGEX functie elke verkooporder in de filtercontext. Met andere woorden, de functie wordt herhaald voor elke verkooporder voor de maand. Filtercontext en de VALUES functie worden geïntroduceerd in de filtercontextmodule.