Arbeta med itererande funktioner i DAX

Jag har sett en viss förvirring med itererande funktioner i DAX när jag arbetar med LuckyTemplates-medlemmar i forumet. Så vi kommer att göra en genomgång av vad som kan uppnås med dessa funktioner och varför du bör använda dem. Du kan se hela videon av denna handledning längst ner på den här bloggen.

När du lär dig mer om DAX- formler kommer du att använda dessa itererande funktioner mycket mer än du tror. De är mycket mer mångsidiga än enkla aggregeringsfunktioner som SUM eller AVERAGE .

Jag har några exempel här, och jag vill arbeta igenom logiken i vart och ett av dessa exempel så att du kan få en mycket bra förståelse för vad som faktiskt händer när logik körs via dessa formler.

Det viktigaste med att iterera funktioner är att de itererar genom något.

Innehållsförteckning

Enkel iteration med SUMX

Arbeta med itererande funktioner i DAX

I det här fallet vill jag sammanfatta något men vill iterera genom varje enskild rad i den här försäljningstabellen.

Arbeta med itererande funktioner i DAX

Och sedan på varje enskild rad vill jag köra den här specifika logiken här.

Arbeta med itererande funktioner i DAX

Låt oss snabbt hoppa till vår mycket enkla försäljningstabell, där jag vill köra lite logik på varje enskild rad. Och sedan vill jag multiplicera Kvantitet med Pris.

Arbeta med itererande funktioner i DAX

Priset finns inte i den här tabellen. Och för just den här modellen finns den faktiskt i produkttabellen.

Arbeta med itererande funktioner i DAX

Nästa sak jag behöver göra är att nå tillbaka till mitt produktbord och det kan jag göra med RELATED . När vi beräknar kvantitet gånger relevant pris, gör vi detta för varje enskild rad. Detta är exakt vad som händer inuti denna formel.

Det här är nyckelbegreppen att komma ihåg när vi börjar göra mer avancerade saker.

Ett alternativt tillvägagångssätt för att få försäljning med SUMX

Arbeta med itererande funktioner i DAX

I det här exemplet har jaggå igenom tabellen Försäljning igen. Så vi kör den logiken i varje enskild rad och beräknar kvantiteten gånger priset på varje enskild rad och aggregerar det sedan när all iterering är klar.

Arbeta med itererande funktioner i DAX

Du kommer att se här att detta resultat är exakt detsamma som resultaten i det första exemplet (SUMX Tutorial 2) eller den totala försäljningen.

Du kan placera en mängd olika saker här – det kan vara ett mått och du kan förgrena dig med en itererande funktion. Du behöver inte referera till specifika kolumner för att faktiskt få beräkningarna korrekt.

Arbeta med itererande funktioner i DAX

Som du kan se här, allt jag har gjort är att placera ett mått (Total Sales) här och jag får exakt samma resultat.

SUMX och logiska funktioner

Arbeta med itererande funktioner i DAX

Jag använder SUMX här, men det är också relevant för, MINX och MAXX . De är alla väldigt lika saker.

En annan viktig sak att komma ihåg med dessa itererande funktioner är att de kör logik på varje enskild rad, och det sparar resultatet i minnet.

När alla dessa värden har sparats i minnet görs den övergripande beräkningen – som en SUMMA eller ett MEDEL .

Arbeta med itererande funktioner i DAX

Tillbaka till vårt exempel kan du här se att beloppet i denna kolumn är något mindre än de tidigare kolumnerna.

Arbeta med itererande funktioner i DAX

Med SUMX iterating-funktionen vill jag iterera genom varje enskild rad i försäljningstabellen. Och på varje enskild rad vill jag beräkna om den specifika försäljningen är större än 2 000 $. Om så är fallet vill jag beräkna den totala försäljningen för den raden. Men om summan av försäljningen var mindre än $2000, då vill jag returnera noll. Så jag vill bara beräkna försäljningen med högre värde.

Vissa människor kommer att föreslå att jag bara kan lägga logiken i en beräknad kolumn. Men vi vill inte göra det eftersom det finns ett mycket bättre sätt att köra den här logiken inuti DAX istället för att placera den fysiskt i en kolumn.

Itererande genom tabeller

Det är här itererande funktioner är helt fantastiska. Du kan inte bara iterera genom en fysisk tabell som vi gjorde tidigare, utan du kan också iterera genom någon annan virtuell tabell som du matar in som en parameter.

Arbeta med itererande funktioner i DAX

Vi kommer att tro att varje enskilt resultat här har ett specifikt sammanhang. I just det här fallet har vi kundkontexten.

Arbeta med itererande funktioner i DAX

I detta sammanhang vill jag iterera genom varje enskild plats och vill se om en viss kund har nått försäljning över 5 000 USD.

Om det gör det vill jag räkna ut den totala försäljningen. Men om det inte gör det vill jag att det ska ge noll.

Arbeta med itererande funktioner i DAX

Så i det här specifika fallet beräknar jag de värdefulla platserna som den här kunden köper på och den totala försäljningen som de gör på dessa platser.

Arbeta med itererande funktioner i DAX

Vadgör här är att det skapar en virtuell tabell. Så SUMX jobbar inte ens med något fysiskt här. Det arbetar faktiskt över något som är helt virtuellt.

Enkel iteration med MINX

Arbeta med itererande funktioner i DAX

Detta liknar de tidigare exemplen men istället för SUMX kommer vi att köra någon annan typ av aggregering när vi itererar igenom varje enskild rad.

Arbeta med itererande funktioner i DAX

I det här fallet skriver vi igenom varje enskild plats för varje kund och räknar ut den totala försäljningen för var och en av dessa platser.

Arbeta med itererande funktioner i DAX

Sedan vill vi returnera minimibeloppet för den plats där de köpte.

Enkel iteration med MAXX

Arbeta med itererande funktioner i DAX

Jag gör också en liknande sak här bara för att visa dig mångsidigheten med itererande funktioner. Jag går igenom varje enskild plats och tittar på deras försäljning men returnerar sedan maximalt av dessa platsförsäljningar, vilket är anledningen till att vi ser högre siffror här.

Slutsats

Det viktigaste som jag ville beröra i den här artikeln är utbudet av alternativ som du har inuti en itererande funktion kontra en enkel summa eller ett genomsnitt.

När du börjar gräva i mer komplexa beräkningar kommer du att se hur viktiga dessa funktioner är för att returnera värden på kontextnivå.

Det finns så mycket mångsidighet och så många sätt att du kan köra dessa beräkningar med en enkel formel om du bara vet hur man manipulerar parametrarna.

Om du gillade att lära dig om dessa itererande funktioner kan du bläddra igenom dessa länkar för att få mer information om detta ämne:

Nyckelbegrepp för iterering av funktioner i LuckyTemplates

Itererande logik genom virtuella tabeller – Avancerade DAX-koncept i LuckyTemplates

Njut av att arbeta igenom den här.


Upptäck unika insikter med LuckyTemplates TOPN-funktion

Upptäck unika insikter med LuckyTemplates TOPN-funktion

Den här bloggen innehåller LuckyTemplates TOPN DAX-funktion, som gör att du kan få unika insikter från dina data, vilket hjälper dig att fatta bättre marknadsföringsbeslut.

Datamodellering i LuckyTemplates med hjälp av stödtabeller

Datamodellering i LuckyTemplates med hjälp av stödtabeller

Lär dig några fantastiska analytiska tekniker som vi kan göra för datamodellering i LuckyTemplates med hjälp av DAX-stödtabeller.

Avancerad DAX för LuckyTemplates: Implementering av rankningslogik över unika insikter

Avancerad DAX för LuckyTemplates: Implementering av rankningslogik över unika insikter

Här dyker vi in ​​i LuckyTemplates Advanced DAX och implementerar rankningslogik för att få en mycket unik insikt. Jag visar också upp måttförgrening i det här exemplet.

LuckyTemplates What-If-parameterfunktion

LuckyTemplates What-If-parameterfunktion

Den här bloggen introducerar den nya funktionen i LuckyTemplates, analysparametern What-If. Du kommer att se hur det gör allt snabbt och enkelt för din scenarioanalys.

Använd LuckyTemplates Mät förgreningar för att kontrollera om dina marginaler ökar när intäkterna växer

Använd LuckyTemplates Mät förgreningar för att kontrollera om dina marginaler ökar när intäkterna växer

Lär dig hur du avgör om din intäktstillväxt är bra genom att kontrollera om dina marginaler ökade med hjälp av LuckyTemplates mäter förgrening.

LuckyTemplates parametrar via frågeredigerare

LuckyTemplates parametrar via frågeredigerare

Lär dig och förstå hur du kan skapa och använda LuckyTemplates-parametrar som är en kraftfull funktion i frågeredigeraren.

Runda stapeldiagram – En visualisering för din instrumentpanel

Runda stapeldiagram – En visualisering för din instrumentpanel

Denna handledning kommer att diskutera hur man skapar ett runt stapeldiagram med Charticulator. Du kommer att lära dig hur du designar dem för din LuckyTemplates-rapport.

PowerApps funktioner och formler | En introduktion

PowerApps funktioner och formler | En introduktion

Lär dig hur du använder PowerApps funktioner och formler för att förbättra funktionaliteten och ändra ett beteende i vår Power Apps canvas-app.

Pipe In R: Anslutningsfunktioner med Dplyr

Pipe In R: Anslutningsfunktioner med Dplyr

I den här handledningen kommer du att lära dig hur du kopplar ihop funktioner med hjälp av dplyr-röroperatorn i programmeringsspråket R.

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX från LuckyTemplates låter dig returnera rankningen av ett specifikt nummer i varje tabellrad som utgör en del av en lista med nummer.