Itererande funktioner i DAX-språk – ett detaljerat exempel

För det här blogginlägget vill jag dyka in i itererande funktioner inom DAX-språket i LuckyTemplates. Anledningen till att jag vill lägga lite tid på att visa vad du kan göra inuti itererande funktioner är för att det är ett så viktigt koncept att du behöver lära dig väldigt bra. Du kan se hela videon av denna handledning längst ner på den här bloggen.

Du kanske bara har slutfört några enkla SUMMER eller potentiellt använt funktionen AVERAGE, men det är också viktigt att förstå hur man använder itererande funktioner som har ett X på slutet , till exempel: SUMX, AVERAGEX eller COUNTX.

Anledningen är att du kan bli mycket mer avancerad inom en itererande funktion än vad du kan med en aggregeringsfunktion.

Innehållsförteckning

Vad är en itererande funktion?

Om du fortfarande inte är bekant med vad en itererande funktion är, är det en funktion i DAX formelspråk som vanligtvis har ett X på slutet. Du har också tabellfunktioner som itererar genom en tabell som FILTER eller VALUES, men i det här fallet kommer vi enbart att ta itu med SUMX.

Om du tittar på vår formel för total försäljning, kan du detta är en itererande funktion på grund av SUMX. Iteration innebär att iterera genom varje enskild rad och göra en beräkning. I det här fallet, för varje enskild rad i tabellen Försäljning, multiplicerar vi kvantiteten med det aktuella priset. Vi går också tillbaka till produkttabellen med funktionen RELATED för att få det aktuella priset.

Itererande funktioner i DAX-språk – ett detaljerat exempel

Jag vill visa dig hur du kan skriva riktigt komplexa itererande funktioner som extraherar stor insikt som du kanske vill få i din data. För den här handledningen vill jag beräkna hur många försäljningar vi gör över ett visst pris. I det här fallet kommer vi att välja $2 000.

Jag vill också veta vad vår försäljning per månad för produkter som är över $2000, men där någon köper mer än bara en produkt. Vi vill också se hur väl det står sig i jämförelse med vår totala försäljning. Detta är den typ av komplexitet som kan uppnås genom att bara skriva en formel och genom att använda en itererande funktion.

Försäljningspris högre än $2000

Låt oss skapa ett mått och kalla det Försäljningspris > $2000 & kvantitet > 1 . Generellt sett måste du skriva några olika kolumner eller några olika åtgärder för att se svaret här, men jag ska visa dig hur du faktiskt kan göra det med bara en. Jag ska börja med SUMX och det står här att vi måste ange ett bord, eller hur?

Itererande funktioner i DAX-språk – ett detaljerat exempel

Så vi kommer att ta itu med den här utmaningen Kvantitet > 1 genom att skapa en tabell som inte är hela försäljningstabellen, utan en tabell som redan har filtrerat bort allt som bara sågs en gång. Vi kommer att använda FILTER här eftersom det är en bordsfunktion, så att du kan sätta in vilken typ av bord som helst. Sedan går vi med Försäljning och itererar igenom varje enskild rad i tabellen Försäljning inom dettafunktion och filtrera bort varje rad med en kvantitet som är större än en.

Itererande funktioner i DAX-språk – ett detaljerat exempel

För varje försäljning över 1 vill jag också skapa en extra logik. Jag ska skriva ett uttrycksmönster och använda SWITCH här. Vi kommer att säga att om försäljningen har ett aktuellt pris som är större än eller lika med $2000, då vill jag beräkna den totala försäljningen. Om det inte är det, så vill jag inte räkna ut det alls. Till sist kommer jag att sätta 0 som ett alternativt resultat.

Itererande funktioner i DAX-språk – ett detaljerat exempel

Så här skriver du några ganska komplexa itererande formler på DAX-språket. Nyckeldelen är bara att förstå vilken typ av tabeller du kan lägga in där och att veta vad den faktiska iterationen gör .

I det här fallet, för varje enskild rad i den här nedfiltreringstabellen, utvärderar jag vad som är det aktuella priset som är högre än $2000. Om det är det, räknar vi upp försäljningen av den raden och om den inte är det, är det bara 0.

När jag drar in det här måttet i tabellen ser du att resultaten liknar det vi uppnådde i det första diagrammet; den enda skillnaden är att detta är på daglig basis.

Itererande funktioner i DAX-språk – ett detaljerat exempel

Försäljningspris högre än 500 USD

Vi kan skapa ytterligare insikt här genom att återanvända samma mönster. Om vi ​​ville titta på vad som var över $500, behöver vi bara göra några små ändringar här, trycka på enter och sedan dra detta in i tabellen också.

Itererande funktioner i DAX-språk – ett detaljerat exempel

Självklart kan vi se en stor skillnad eftersom det är fler produkter vi räknar upp. Detta beror på att vi inte blir av med så många produkter med högre priser eller lägre priser som vi var tidigare med $2000.

Itererande funktioner i DAX-språk – ett detaljerat exempel

Visualisera data 

Vi kan också ändra detta till en, men som du kan se ser diagrammet lite upptaget ut så det är förmodligen bättre att stanna kvar i tabellen, eller så kan vi göra tidsramen mer komprimerad som diagrammet till vänster.

Itererande funktioner i DAX-språk – ett detaljerat exempel

Förhoppningsvis kan du utvärdera och förstå hur långt du kan gå med dessa itererande funktioner inom DAX-språket. Du kan börja verkligen dyka in i alla aspekter av din data eller extrahera mycket specifika insikter. Sättet att göra det är genom att använda denna radkontext, som gör att du faktiskt kan komma in i dessa itererande funktioner. Du kan titta på en enskild rad, placera den i eller utanför din beräkning och använda itereringsfunktionerna som SUMX, AVERAGEX och COUNTX.

Itererande funktioner ger dig så mycket mer flexibilitet när det gäller beräkningarna som du kan göra på radnivå jämfört med aggregering som bara låter dig aggregera en hel kolumn. Nu inom itererande funktioner, måste du först mata in en tabellreferens och sedan ett uttryck, men verkligen utöka ditt sinne i termer av vad någon av dessa faktiskt kan vara.

Inom itererande funktioner kan du faktiskt lägga in vilken tabell som helst eller vilken som helst derivata av en tabell... även vilken virtuell tabell eller referens till tabell som helst. Det möjliggör mycket mer flexibilitet än vad du vanligtvis skulle ha om du bara använder en hel tabell som din transaktionstabell för att köra lite logik.

Uttrycket (eller måttet) du matar in kan också vara mycket avancerat. Du kan använda avancerad IF-logik eller SWITCH-logik, eller i princip vad som helst som du kan göra på radnivå i en beräknad kolumn. Du kan faktiskt lägga det i den uttrycksdelen av en itererande funktion.

Slutsats

Det viktigaste med det här inlägget är att itererande funktioner är otroligt viktiga att förstå och lära sig väl inuti LuckyTemplates.

Om du lär dig detta bra, så blir möjligheterna att köra interna beräkningar i minnet via mått riktigt, riktigt kraftfulla.

Kolla inom du precis har börjat med DAX-språket och LuckyTemplates. Mycket att lära inom denna gratiskurs. Du hittar detta på.


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.