LuckyTemplates Dax-variabler är konstanta: Vad betyder detta?

När du har hört en förklaring om hur du använder LuckyTemplates DAX-variabler, kanske du har hört frasen "variabler är konstanter". Det verkar enkelt, men det finns en hel del nyanser och komplexitet i dessa ord. I den här bloggen kommer jag att gå igenom vad den här frasen betyder och konsekvenserna för hur dina mått beräknas. Att förstå dessa begrepp är viktigt för att säkerställa att dina åtgärder ger önskat resultat. Du kan se hela videon av denna handledning längst ner på den här bloggen.

En variabel inom DAX kan verkligen vara vilket giltigt DAX-uttryck som helst. Det kan vara ett värde, en beräkning, ett mått eller en variabel som representerar en tabell, en annan variabel eller någon kombination av dessa saker.

Det finns två delar till en variabel. Där finnsdeklaration där du initierar variabeln; du ger den ett namn och sedan ett värde. Den andra är RETURN- satsen, som sedan anropar minst en av variablerna som du deklarerar. Det är inte som en parentes där du behöver ha en RETURN-sats för varje variabel, men du måste ha minst en RETURN-sats om du deklarerade några variabler.

Nyckeln här är att, som jag sa tidigare, variabler är konstanta. Vad det betyder är att när variabler väl har tilldelats ett värde kan det värdet inte ändras före RETURN-satsen .

Innehållsförteckning

Använda LuckyTemplates DAX-variabler i mått

Låt oss ta en titt på ett enkelt exempel där jag har länder och total försäljning. Måttet Total försäljning är bara vårt mest grundläggande mått, vilket ärav linjeförsäljning i tabellen Försäljning.

LuckyTemplates Dax-variabler är konstanta: Vad betyder detta?

Låt oss säga att vi vill få den totala försäljningen för år 2020. I den här datamängden har vi försäljning för 2019, 2000 och 2021. För att få försäljningen för 2020 måste vi tillämpa ett mycket enkelt filtervillkor, vilket är. Så vi ändrar vårt filterkontext. Vi har vårt totala försäljningsmått, och då är vårt år 2020.

LuckyTemplates Dax-variabler är konstanta: Vad betyder detta?

Om vi ​​släpper det måttet i tabellen får vi exakt vad vi förväntar oss, vilket är rätt siffra för 2020.

LuckyTemplates Dax-variabler är konstanta: Vad betyder detta?

Om vi ​​nu vill tillämpa variabler på detta, här är en något reviderad version av det tidigare måttet, där jag skapade en variabel som heter TotalSales , och bara satte den lika med vårt Total Sales-mått.

LuckyTemplates Dax-variabler är konstanta: Vad betyder detta?

Om vi ​​tänker på det utifrån en algebraisk substitution, om vi bara ersätter det som tidigare var vårt totala försäljningsmått här med TotalSales, vilket är lika med det totala försäljningsmåttet, kommer du att tro att det kan vara samma sak och producera samma sak. resultat. Men om vi tar en titt och släpper det måttet i vår tabell, kommer vi att se att det inte ger samma resultat.

LuckyTemplates Dax-variabler är konstanta: Vad betyder detta?

Variabeln TotalSales deklareras, och som får värdet av den totala försäljningen. Säg att vi är på Moldaviens rad, och den variabeln får ett värde av 2,35 miljoner. Kom nu ihåg att värdet inte kan ändras förrän efter att RETURN-satsen anropas. Så när vi går ner för att beräkna vårt mått i variabeln RESULTAT , har vi TotalSales, vilket är en konstant på 2,35 miljoner.

Och sedan tillämpar vi vårt filterkontext på det, Dates[Year] är lika med 2020 , men det spelar ingen roll eftersom den konstanten inte kan ändras. Så vi kan säga att Datum[År] är lika med 2019, 2021, och så vidare, det kommer fortfarande att vara samma 2,35 miljoner eftersom den TotalSales nu är låst som en konstant fram till RETURN .

Och när den kommer tillbaka går vi till nästa rad och variabeln tar upp värdet på Nederländerna (4,4 miljoner). Processen upprepar sig själv och låser den som en konstant tills RETURN-satsen. Det vi får är exakt vad vi har i måttet Total försäljning, inte i måttet som filtrerar ner till 2020.

Och så kanske du tänker att det faktiskt inte verkar särskilt användbart. I det här sammanhanget är det inte det. Detta är faktiskt ett vanligt misstag när folk börjar använda variabler . De sätter variabeln i den första uttrycksdelen av CALCULATE-satsen. Det kommer vanligtvis inte att ge det resultat de letar efter eftersom det låser in det som ett konstant värde.

Använda LuckyTemplates DAX-variabler inom iteratorer

Variabler lyser verkligen när du placerar dem i iteratorer. Jag ska prata om det här fallet, som är ett tidigare värde. Vi letar efter ett datum och sedan ett tidigare värde med förbehåll för ett antal villkor.

LuckyTemplates Dax-variabler är konstanta: Vad betyder detta?

Kom ihåg att sättet du brukade göra detta innan variabler kom till DAX var genom en funktion som kallas. Men nu fungerar variabler faktiskt så bra i det här sammanhanget. Med variabler rekommenderas det starkt att aldrig använda den EARLIER-funktionen längre.

Så låt oss ta en titt på ett mer komplext exempel, där vi har variabler i iteratordelen snarare än i uttrycksdelen. Nedan är faktiskt ett fall från en fråga som kom upp idär medlemmen ville titta på varje datum inom ett intervall och sedan komma på det första föregående datumet som inte var en helg eller en helgdag.

LuckyTemplates Dax-variabler är konstanta: Vad betyder detta?

Jag vill särskilt fokusera på tisdagen den 15 oktober som det främsta exemplet. Det önskade resultatet var att titta på det datumet. Måndag var Columbus Day, så det var en helgdag, sedan var de närmast föregående dagarna söndag och lördag. Och så, datumet som vi ville ha var den 11 oktober, vilket var fredagen.

Om du tittar på kolumnen Föregående dag/Ingen helg/Ingen helgdag för det, var tisdagen den 11:e. Samma sak gällde för måndag, söndag och lördag. Det är vad vi vill få som resultat.

Bredvid tabellen ovan finns det mått som vi använde för detta fallscenario. Vi deklarerade en variabel som valdes datum ( VAR SelDate ), och det var baraav datumet. Den skulle plocka upp 15 oktober i vår variabel och sedan hålla den som en konstant tills RETURN-satsen.

Sedan utvärderar vi DAX utanför in. Om vi ​​tittar på filtertillståndet, tar det bortfiltren på Datum, och sedan ställer den in en serie ytterligare filter. Det tar det ständigt valda datumet, den 15 oktober, och det säger, ge mig alla datum innan dess. Och sedan, av dessa datum, se till att inget av dessa datum är en lördag, söndag eller helgdag. Sedan tar detav de datum som filtrerades.

Du kan se här att att ha valt data som en konstant är en sorts insats i marken på vilken alla andra datum utvärderas antingen före eller efter.

Vi har valt datum och sedan filtrerar vi allt som är före det. Vi tar maxvärdet för den filtrerade tabellen. Och så, vad vi får är max den 15:e när vi tar bort alla de andra villkoren är den fredagen den 11:e. Sedan, om vi går ner till RETURN-satsen, börjar den om med nästa dag, den 16:e. Den fortsätter bara att iterera genom tabellen tills den kommer till slutet av data.

Som du kan se i det här fallet, när vi lägger variabler i iteratordelen snarare än uttrycksdelen, fungerar det precis som vi planerat. Den drar fördel av det faktum att variabler är konstanter.




Slutsats

I den här bloggen har jag visat dig hur du använder LuckyTemplatesi ett mått och hur det fungerar när variabler placeras i iteratordelen av ett mått.

Jag hoppas att dessa exempel förklarar frasen "variabler är konstanta", vilket ger dig en inblick i kanske varför dina åtgärder verkar fungera och ibland inte gör det. Jag hoppas att detta ger dig en allmän förståelse för vad det viktiga begreppet betyder.

Med vänliga hälsningar!


Lös en dataanalysutmaning med LuckyTemplates Accelerator

Lös en dataanalysutmaning med LuckyTemplates Accelerator

Finslipa dina färdigheter i rapportutveckling genom att gå med i en dataanalysutmaning. Acceleratorn kan hjälpa dig att bli en LuckyTemplates superanvändare!

Löpande summor i LuckyTemplates med DAX

Löpande summor i LuckyTemplates med DAX

Lär dig hur du beräknar löpande summor i LuckyTemplates med DAX. Löpande summor låter dig inte fastna i ett individuellt resultat.

LuckyTemplates Dax-variabler är konstanta: Vad betyder detta?

LuckyTemplates Dax-variabler är konstanta: Vad betyder detta?

Förstå konceptet med variabler i DAX inom LuckyTemplates och konsekvenserna av variabler för hur dina mått beräknas.

LuckyTemplates Slope Chart: En översikt

LuckyTemplates Slope Chart: En översikt

Lär dig mer om den anpassade visual som kallas LuckyTemplates Slope-diagram, som används för att visa ökning/minskning för en enstaka eller flera mätvärden.

LuckyTemplates färgteman för enhetliga visualiseringar

LuckyTemplates färgteman för enhetliga visualiseringar

Upptäck färgteman i LuckyTemplates. Dessa är viktiga för att dina rapporter och visualiseringar ska se ut och fungera sömlöst.

Beräkna medelvärde i LuckyTemplates: Isolera veckodags- eller helgresultat med DAX

Beräkna medelvärde i LuckyTemplates: Isolera veckodags- eller helgresultat med DAX

Att beräkna ett genomsnitt i LuckyTemplates kan göras på många sätt för att ge dig exakt information för dina affärsrapporter.

LuckyTemplates Theming | LuckyTemplates Desktop Standard Theming

LuckyTemplates Theming | LuckyTemplates Desktop Standard Theming

Låt oss fördjupa oss i Standard LuckyTemplates-teman och granska några av funktionerna som är inbyggda i själva LuckyTemplates Desktop-applikationen.

LuckyTemplates Map Visual: Hur man skapar och lägger till en anpassad legend i LuckyTemplates

LuckyTemplates Map Visual: Hur man skapar och lägger till en anpassad legend i LuckyTemplates

I den här handledningen lär du dig hur du bygger en anpassad förklaring i en LuckyTemplates Map Visual för att visa dina föredragna färger och segmentering.

LuckyTemplates bakgrundsbild för rapporter som använder PPT

LuckyTemplates bakgrundsbild för rapporter som använder PPT

Lär dig hur du ställer in en LuckyTemplates-bakgrundsbild med PowerPoint. Detta är en av mina tekniker för att skapa mina LuckyTemplates-rapporter.

Upphandlingsbeslutsmodell och analys i LuckyTemplates

Upphandlingsbeslutsmodell och analys i LuckyTemplates

I den här handledningen kommer vi att dyka in i en del inköpsanalyser inom en organisation, med hjälp av en interagerande funktion och kraften i datamodellen.