Arbeide med itererende funksjoner i DAX

Jeg har sett en del forvirring med iterasjonsfunksjoner i DAX hver gang jeg jobber med LuckyTemplates-medlemmer i forumet. Så vi vil gjøre en gjennomgang av hva som kan oppnås med disse funksjonene og hvorfor du bør bruke dem. Du kan se hele videoen av denne opplæringen nederst på denne bloggen.

Etter hvert som du kommer mer inn i DAX- formler, vil du bruke disse iterasjonsfunksjonene mye mer enn du tror. De er mye mer allsidige enn enkle aggregeringsfunksjoner som SUM eller AVERAGE .

Jeg har noen eksempler her, og jeg ønsker å jobbe gjennom logikken i hvert av disse eksemplene slik at man kan få en veldig god forståelse av hva som faktisk skjer når logikk kjøres via disse formlene.

Det viktigste med å iterere funksjoner er at de itererer gjennom noe.

Innholdsfortegnelse

Enkel iterasjon ved hjelp av SUMX

Arbeide med itererende funksjoner i DAX

I dette tilfellet vil jeg oppsummere noe, men jeg vil iterere gjennom hver eneste rad i denne salgstabellen.

Arbeide med itererende funksjoner i DAX

Og så på hver eneste rad vil jeg kjøre denne spesifikke logikken her.

Arbeide med itererende funksjoner i DAX

La oss raskt hoppe til vår veldig enkle salgstabell, hvor jeg vil kjøre litt logikk på hver eneste rad. Og så vil jeg gange Mengde med Pris.

Arbeide med itererende funksjoner i DAX

Prisen finnes ikke i denne tabellen. Og for denne modellen er den faktisk i produkttabellen.

Arbeide med itererende funksjoner i DAX

Det neste jeg må gjøre er å komme tilbake til produktbordet mitt, og det kan jeg gjøre med RELATED . Når vi beregner antall ganger den aktuelle prisen, gjør vi dette for hver enkelt rad. Dette er nøyaktig hva som skjer inne i denne formelen.

Dette er nøkkelbegrepene å huske når vi begynner å gjøre mer avanserte ting.

En alternativ tilnærming til å få salg ved å bruke SUMX

Arbeide med itererende funksjoner i DAX

I dette eksemplet har jeggå gjennom salgstabellen igjen. Så vi kjører den logikken i hver enkelt rad og beregner kvantiteten ganger prisen på hver enkelt rad og aggregerer den så snart all iterasjonen er fullført.

Arbeide med itererende funksjoner i DAX

Du vil se her at dette resultatet er nøyaktig det samme som resultatene i det første eksemplet (SUMX Tutorial 2) eller Total Sales.

Du kan plassere en hel rekke forskjellige ting her – det kan være et mål og du kan forgrene deg med en itererende funksjon. Du trenger ikke å referere til spesifikke kolonner for å faktisk få beregningene riktig.

Arbeide med itererende funksjoner i DAX

Som du kan se her, er alt jeg har gjort å plassere et mål (Totalt salg) her og jeg får nøyaktig det samme resultatet.

SUMX og logiske funksjoner

Arbeide med itererende funksjoner i DAX

Jeg bruker SUMX her, men det er også relevant for, MINX og MAXX . De er alle veldig like ting.

En annen viktig ting å huske med disse itererende funksjonene er at de kjører logikk på hver eneste rad, og det lagrer resultatet i minnet.

Når alle disse verdiene er lagret i minnet, er den overordnede beregningen gjort – som en SUM eller et GJENNOMSNITT .

Arbeide med itererende funksjoner i DAX

Tilbake til vårt eksempel kan du se her at beløpet i denne kolonnen er litt mindre enn de foregående kolonnene.

Arbeide med itererende funksjoner i DAX

Med SUMX iterating-funksjonen ønsker jeg å iterere gjennom hver enkelt rad i Sales-tabellen. Og i hver eneste rad vil jeg beregne om det bestemte salget er større enn $2000. Hvis det er det, vil jeg beregne det totale salget for den raden. Men hvis totalsummen av salget var mindre enn $2000, vil jeg returnere null. Så jeg vil bare beregne salget med høyere verdi.

Noen vil foreslå at jeg bare kan legge logikken i en beregnet kolonne. Men vi ønsker ikke å gjøre det fordi det er en mye bedre måte å kjøre denne logikken inne i DAX i stedet for å plassere den fysisk i en kolonne.

Iterering gjennom tabeller

Det er her iterasjonsfunksjoner er virkelig fantastiske. Ikke bare kan du iterere gjennom en fysisk tabell som vi gjorde før, men du kan også iterere gjennom en annen virtuell tabell som du legger inn som en parameter.

Arbeide med itererende funksjoner i DAX

Vi kommer til å tenke at hvert eneste resultat her har en spesifikk kontekst. I dette spesielle tilfellet har vi kundekonteksten.

Arbeide med itererende funksjoner i DAX

I denne sammenhengen ønsker jeg å iterere gjennom hvert enkelt sted og vil se om en bestemt kunde har nådd salg over $5000.

Hvis det gjør det, vil jeg beregne det totale salget. Men hvis den ikke gjør det, vil jeg at den skal returnere null.

Arbeide med itererende funksjoner i DAX

Så i dette spesielle tilfellet beregner jeg de verdifulle stedene som denne kunden kjøper på og det totale salget de gjør på disse stedene.

Arbeide med itererende funksjoner i DAX

Hvagjør her er det å lage en virtuell tabell. Så SUMX jobber ikke engang med noe fysisk her. Den jobber faktisk over noe som er helt virtuelt.

Enkel iterasjon ved hjelp av MINX

Arbeide med itererende funksjoner i DAX

Dette ligner på de tidligere eksemplene, men i stedet for SUMX , kommer vi til å kjøre en annen type aggregering når vi itererer gjennom hver enkelt rad.

Arbeide med itererende funksjoner i DAX

I dette spesielle tilfellet skriver vi gjennom hvert enkelt sted for hver kunde og regner ut det totale salget for hvert av disse stedene.

Arbeide med itererende funksjoner i DAX

Da ønsker vi å returnere minimumsbeløpet for stedet der de kjøpte.

Enkel iterasjon med MAXX

Arbeide med itererende funksjoner i DAX

Jeg gjør også en lignende ting her bare for å vise deg allsidigheten til iterasjonsfunksjoner. Jeg går gjennom hvert enkelt sted og ser på salget deres, men returnerer deretter maksimalt av disse lokasjonssalgene, og det er grunnen til at vi ser høyere tall her.

Konklusjon

Det viktigste jeg ønsket å berøre i denne artikkelen er utvalget av alternativer du har inne i en iterasjonsfunksjon kontra en enkel sum eller et gjennomsnitt.

Når du begynner å grave i mer komplekse beregninger, vil du se hvor viktige disse funksjonene er for å returnere verdier på kontekstnivå.

Det er så mye allsidighet og så mange måter at du kan kjøre disse beregningene ved å bruke en enkel formel hvis du bare vet hvordan du manipulerer parametrene.

Hvis du likte å lære om disse iterasjonsfunksjonene , kan du bla gjennom disse koblingene for å få mer informasjon om dette emnet:

Nøkkelkonsepter for gjentakelse av funksjoner i LuckyTemplates

Itererende logikk gjennom virtuelle tabeller – Avanserte DAX-konsepter i LuckyTemplates

Nyt å jobbe gjennom denne.


LuckyTemplates egendefinerte ikoner | PBI visualiseringsteknikk

LuckyTemplates egendefinerte ikoner | PBI visualiseringsteknikk

Jeg vil diskutere en av mine favorittteknikker rundt LuckyTemplates egendefinerte ikoner, som bruker egendefinerte ikoner på en dynamisk måte i LuckyTemplates visuals.

Opprette LuckyTemplates-tabeller ved å bruke UNION & ROW-funksjonen

Opprette LuckyTemplates-tabeller ved å bruke UNION & ROW-funksjonen

I denne bloggen viser jeg deg hvordan du kan lage LuckyTemplates-tabeller ved å bruke en formel som kombinerer UNION-funksjonen og ROW-funksjonen.

On-Premises Data Gateway In Power Automate

On-Premises Data Gateway In Power Automate

Oppdag hvordan on-premises data gateway lar Power Automate få tilgang til skrivebordsapplikasjoner når brukeren er borte fra datamaskinen.

Oppdag unik innsikt ved å bruke LuckyTemplates TOPN-funksjon

Oppdag unik innsikt ved å bruke LuckyTemplates TOPN-funksjon

Denne bloggen inneholder LuckyTemplates TOPN DAX-funksjonen, som lar deg få unik innsikt fra dataene dine, og hjelper deg med å ta bedre markedsføringsbeslutninger.

Datamodellering i LuckyTemplates ved hjelp av støttetabeller

Datamodellering i LuckyTemplates ved hjelp av støttetabeller

Lær noen fantastiske analytiske teknikker som vi kan gjøre for datamodellering i LuckyTemplates ved å bruke DAX-støttetabeller.

Avansert DAX for LuckyTemplates: Implementering av rangeringslogikk på tvers av unik innsikt

Avansert DAX for LuckyTemplates: Implementering av rangeringslogikk på tvers av unik innsikt

Her dykker vi ned i LuckyTemplates Advanced DAX og implementerer rangeringslogikk for å få en helt unik innsikt. Jeg viser også frem målegrening i dette eksemplet.

LuckyTemplates What-If-parameterfunksjon

LuckyTemplates What-If-parameterfunksjon

Denne bloggen introduserer den nye funksjonen i LuckyTemplates, What-If-analyseparameteren. Du vil se hvordan det gjør alt raskt og enkelt for scenarioanalysen din.

Bruk LuckyTemplates Mål forgrening for å sjekke om marginene dine øker ettersom inntektene vokser

Bruk LuckyTemplates Mål forgrening for å sjekke om marginene dine øker ettersom inntektene vokser

Finn ut hvordan du kan finne ut om inntektsveksten din er god ved å sjekke om marginene dine økte ved å bruke LuckyTemplates som måler forgrening.

LuckyTemplates Parameters Via Query Editor

LuckyTemplates Parameters Via Query Editor

Lær og forstå hvordan du kan lage og bruke LuckyTemplates Parameters som er en kraftig funksjon i spørringsredigereren.

Rundt stolpediagram – en visualisering for dashbordet ditt

Rundt stolpediagram – en visualisering for dashbordet ditt

Denne opplæringen vil diskutere hvordan du lager et rundt søylediagram ved hjelp av Charticulator. Du vil lære hvordan du designer dem for LuckyTemplates-rapporten.