Itererende funksjoner i DAX-språk – et detaljert eksempel

For dette blogginnlegget ønsker jeg å dykke ned i iterasjonsfunksjoner innenfor DAX-språket i LuckyTemplates. Grunnen til at jeg vil bruke litt tid på å vise hva du kan gjøre inne i iterasjonsfunksjoner er fordi det er et så viktig konsept at du må lære veldig godt. Du kan se hele videoen av denne opplæringen nederst på denne bloggen.

Du har kanskje nettopp fullført noen enkle SUMMER eller potensielt brukt AVERAGE-funksjonen, men det er også viktig å forstå hvordan du bruker iterasjonsfunksjoner som har en X på slutten , for eksempel: SUMX, AVERAGEX eller COUNTX.

Årsaken er at du kan bli langt mer avansert innenfor en itererende funksjon enn du kan med en aggregeringsfunksjon.

Innholdsfortegnelse

Hva er en itererende funksjon?

Hvis du fortsatt ikke er kjent med hva en iterasjonsfunksjon er, er det en funksjon i DAX-formelspråket som vanligvis har en X på slutten. Du har også tabellfunksjoner som itererer gjennom en tabell som FILTER eller VALUES, men i dette tilfellet skal vi kun forholde oss til SUMX.

Hvis du ser på formelen vår for totalt salg, kan du dette er en itererende funksjon på grunn av SUMX. Iterering betyr å iterere gjennom hver enkelt rad og gjøre en beregning. I dette tilfellet, for hver enkelt rad i salgstabellen, multipliserer vi antallet med gjeldende pris. Vi går også tilbake til produkttabellen ved å bruke RELATED-funksjonen for å få den gjeldende prisen.

Itererende funksjoner i DAX-språk – et detaljert eksempel

Jeg vil vise deg hvordan du kan skrive virkelig komplekse iterasjonsfunksjoner som trekker ut stor innsikt som du kanskje vil ha i dataene dine. For denne opplæringen ønsker jeg å beregne hvor mange salg vi gjør over en viss pris. I dette tilfellet skal vi velge $2000.

Jeg vil også vite hva vi selger per måned for produkter som er over $2000, men hvor noen kjøper mer enn bare ett produkt. Vi ønsker også å se hvor godt det er sammenlignet med vårt totale salg. Dette er den typen kompleksitet som kan oppnås ved å skrive bare én formel og ved å bruke en iterasjonsfunksjon.

Salgspris større enn $2000

La oss lage et mål og kalle det Salgspris > $2000 & Quantity > 1 . Vanligvis må du skrive noen forskjellige kolonner eller noen forskjellige tiltak for å se svaret her, men jeg skal vise deg hvordan du faktisk kan gjøre det med bare én. Jeg skal begynne med SUMX og det står at her må vi legge inn et bord, ikke sant?

Itererende funksjoner i DAX-språk – et detaljert eksempel

Så vi skal takle denne Quantity > 1 -utfordringen ved å lage en tabell som ikke er hele salgstabellen, men en tabell som allerede har filtrert ut alt som bare har sett én gang. Vi vil bruke FILTER her siden det er en bordfunksjon, slik at du kan sette alle slags bord inni. Deretter går vi med Salg og itererer gjennom hver eneste rad i Salg-tabellen i dennefunksjon og filtrer ut hver rad med en mengde som er større enn én.

Itererende funksjoner i DAX-språk – et detaljert eksempel

For hvert salg over 1 ønsker jeg også å lage en ekstra logikk. Jeg skal skrive et uttrykksmønster og bruke SWITCH her. Vi skal si at hvis salget har en gjeldende pris som er større enn eller lik $2000, så vil jeg beregne det totale salget. Hvis det ikke er det, så ønsker jeg ikke å beregne det i det hele tatt. Til slutt vil jeg sette 0 som et alternativt resultat.

Itererende funksjoner i DAX-språk – et detaljert eksempel

Dette er hvordan du skriver noen ganske komplekse iterasjonsformler på DAX-språket. Nøkkeldelen er bare å forstå hva slags tabeller du kan sette inn der og vite hva den faktiske iterasjonen gjør .

I dette tilfellet, for hver enkelt rad i denne nedfiltreringstabellen, vurderer jeg hva som er gjeldende pris som er større enn $2000. Hvis det er det, teller vi opp salgene for den raden, og hvis det ikke er det, er det bare 0.

Når jeg drar dette målet inn i tabellen, vil du se resultatene ligner på det vi oppnådde i det første diagrammet; den eneste forskjellen er at dette er på daglig basis.

Itererende funksjoner i DAX-språk – et detaljert eksempel

Salgspris større enn $500

Vi kan skape ytterligere innsikt her ved å gjenbruke det samme mønsteret. Hvis vi ville se på hva som var over $500, er alt vi trenger å gjøre å gjøre noen små endringer her, trykke enter, og så dra dette inn i tabellen også.

Itererende funksjoner i DAX-språk – et detaljert eksempel

Selvfølgelig kan vi se en stor forskjell fordi det er flere produkter vi teller opp. Dette er fordi vi ikke blir kvitt så mange produkter med høyere pris eller lavere pris som vi var tidligere med $2000.

Itererende funksjoner i DAX-språk – et detaljert eksempel

Visualisere dataene 

Vi kan også endre dette til en, men som du kan se ser diagrammet litt travelt ut, så det er sannsynligvis bedre å forbli i tabellen, eller vi kan gjøre tidsrammen mer komprimert som diagrammet til venstre.

Itererende funksjoner i DAX-språk – et detaljert eksempel

Forhåpentligvis kan du evaluere og forstå hvor langt du kan gå med disse iterasjonsfunksjonene i DAX-språket. Du kan virkelig begynne å dykke inn i alle aspekter av dataene dine eller trekke ut veldig spesifikk innsikt. Måten å gjøre det på er ved å bruke denne radkonteksten, som lar deg faktisk komme inn i disse iterasjonsfunksjonene. Du kan se på en individuell rad, legge den inn i eller utenfor beregningen din og bruke iterasjonsfunksjonene som SUMX, AVERAGEX og COUNTX.

Itererende funksjoner gir deg så mye mer fleksibilitet når det gjelder beregningene som du kan gjøre på radnivå kontra aggregeringer som bare lar deg aggregere en hel kolonne. Nå innen iterasjonsfunksjoner må du først legge inn en tabellreferanse og deretter et uttrykk, men absolutt utvide tankene dine med tanke på hva en av disse faktisk kan være.

Innenfor iterasjonsfunksjoner kan du faktisk legge inn i en hvilken som helst tabell eller en hvilken som helst derivat av en tabell ... også en hvilken som helst virtuell tabell eller referanse til tabell. Det gir langt mer fleksibilitet enn du vanligvis ville hatt hvis du bare bruker en hel tabell som transaksjonstabellen din for å kjøre litt logikk gjennom.

Uttrykket (eller målet) du legger inn kan også være veldig avansert. Du kan bruke avansert IF-logikk eller SWITCH-logikk, eller egentlig alt du kan gjøre på radnivå i en beregnet kolonne. Du kan faktisk sette det i den uttrykksdelen av en itererende funksjon.

Konklusjon

Det viktigste med dette innlegget er at iterasjonsfunksjoner er utrolig viktige å forstå og lære godt inne i LuckyTemplates.

Hvis du lærer dette godt, blir mulighetene for å kjøre interne beregninger i minnet via mål veldig, virkelig kraftige.

Sjekk uthvis du nettopp har startet med DAX-språket og LuckyTemplates. Mye å lære på dette gratis kurset. Du finner dette på.


LuckyTemplates Shape Map Visualization for romlig analyse

LuckyTemplates Shape Map Visualization for romlig analyse

Denne bloggen inneholder Shape Map-visualiseringen for romlig analyse i LuckyTemplates. Jeg viser deg hvordan du kan bruke denne visualiseringen effektivt med dens funksjoner og elementer.

LuckyTemplates finansiell rapportering: Allokering av resultater til maler på hver enkelt rad

LuckyTemplates finansiell rapportering: Allokering av resultater til maler på hver enkelt rad

I denne opplæringen viser jeg frem en unik idé rundt finansiell rapportering, som tildeler resultater for å forhåndsbestemme tabellmaler inne i LuckyTemplates.

DAX-mål i LuckyTemplates ved hjelp av måleforgrening

DAX-mål i LuckyTemplates ved hjelp av måleforgrening

Opprett DAX-mål i LuckyTemplates ved å bruke eksisterende mål eller formler. Dette er det jeg kaller tiltaket forgreningsteknikk.

Den kraftigste funksjonsanropet i LuckyTemplates

Den kraftigste funksjonsanropet i LuckyTemplates

I denne bloggen kan du utforske LuckyTemplates-datasettet, det kraftigste funksjonskallet som bringer tusenvis av M- og DAX-funksjoner til fingertuppene.

Datamodelleringsteknikker for å organisere DAX-mål

Datamodelleringsteknikker for å organisere DAX-mål

For dagens veiledning vil jeg dele noen få datamodelleringsteknikker for hvordan du kan organisere DAX-tiltakene dine bedre for en mer effektiv arbeidsflyt.

LuckyTemplates Financial Dashboard: Komplette tabelltilpasningstips

LuckyTemplates Financial Dashboard: Komplette tabelltilpasningstips

LuckyTemplates er et flott verktøy for finansiell rapportering. Her er en veiledning om hvordan du lager tilpassede tabeller for ditt LuckyTemplates økonomiske dashbord.

Gode ​​fremgangsmåter for Power Query Language Flow

Gode ​​fremgangsmåter for Power Query Language Flow

Denne opplæringen vil diskutere Power Query Language Flow og hvordan den kan bidra til å lage en jevn og effektiv datarapport.

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.