Bruk gjentakelsesfunksjoner for aggregering

Fullført

Hver oppsummeringsfunksjon for enkeltkolonner har en tilsvarende gjentakelsesfunksjon. Følgende deler vurderer to aggregasjonsscenarioer når gjentakelsesfunksjoner er nyttige: kompleks oppsummering og høyere kornoppsummering.

Kompleks oppsummering

I denne inndelingen skal du opprette ditt første mål som brukes en gjentakelsesfunksjon. Start med å laste ned og åpne filen Adventure Works DW 2020 M05.pbix. Deretter legger du til følgende måldefinisjon:

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

Formater Omsetning-målet som valuta med to desimaler, og legg det deretter til i tabellvisualobjektet som finnes på side 1 i rapporten.

Et bilde viser et tabellvisualobjekt som er synlig med to kolonner: Måned og Omsetning. Ett år med data vises.

Ved å bruke en gjentakelsesfunksjon aggregerer Omsetning-målformelen mer enn verdiene i en enkeltkolonne. For hver rad bruker den radkontekstverdiene for tre kolonner til å produsere omsetningsbeløpet.

Nå kan du legge til et nytt mål:

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

Formater Rabatt-målet som valuta med to desimalplasser, og legg det deretter til i tabellvisualobjektet.

Et bilde viser et tabellvisualobjekt med tre kolonner: Måned, Omsetning og Rabatt. Ett år med data vises.

Legg merke til at formelen bruker RELATED funksjonen. Husk at radkontekst ikke strekker seg utover tabellen. Hvis formelen må referere til kolonner i andre tabeller, og det finnes modellrelasjoner mellom tabellene, kan du bruke RELATED funksjonen for relasjonen på én side eller RELATEDTABLE funksjonen for relasjonen på mange sider.

Detaljert oppsummering

Eksempelet nedenfor vurderer et krav om å rapportere om gjennomsnittlig omsetning. Legg til følgende mål:

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

Formater Gjennomsnittlig omsetning-målet som valuta med to desimalplasser, og legg det deretter til i tabellvisualobjektet.

Et bilde viser et tabellvisualobjekt med fire kolonner: Måned, Omsetning, Rabatt og Gjennomsnittlig omsetning. Ett år med data vises.

Ta utgangspunkt i at gjennomnittlig betyr summen av verdiene delt på antallet verdier. Men denne teorien fremsetter et spørsmål: Hva representerer antallet verdier? I dette tilfellet er antallet verdier antallet uttrykk som ikke ble evaluert til BLANK. Siden gjentakelsesfunksjonen nummererer salgstabellradene, vil gjennomsnitt bety omsetning per rad. Hvis du tar denne logikken ett skritt videre, fordi hver rad i Salg-tabellen registrerer en salgsordrelinje, kan den mer presist beskrives som omsetning per ordrelinje.

Du bør i tillegg endre navnet på Gjennomsnittlig omsetning-målet til Gjennomsnittlig omsetning for ordrelinje, slik at det er tydelig for rapportbrukerne hva som brukes som gjennomsnittsbasen.

Eksemplet nedenfor bruker en gjentakelsesfunksjon til å opprette et nytt mål som øker detaljnivået i salgsordrenivået (en salgsordre består av én eller flere ordrelinjer). Legg til følgende mål:

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

Formater Gjennomsnittlig omsetning for ordre-målet som valuta med to desimalplasser, og legg det deretter til i tabellvisualobjektet.

Et bilde viser et tabellvisualobjekt med fem kolonner: Måned, Omsetning, Rabatt, Gjennomsnittlig omsetning for ordrelinje og Gjennomsnittlig omsetning for ordre. Ett år med data vises.

Som forventet er alltid den gjennomsnittlige omsetningen for en ordre høyere enn den gjennomsnitlige omsetning for én enkelt ordrelinje.

Legg merke til at formelen bruker DAX-funksjonen VALUES . Med denne funksjonen kan formlene dine bestemme hvilke verdier som er i filterkontekst. I dette tilfellet AVERAGEX gjentas funksjonen over hver salgsordre i filterkontekst. Med andre ord gjentas den over hver salgsordre for måneden. Filterkontekst og VALUES funksjonen introduseres i filterkontekstmodulen.