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!

Leave a Comment

Skapa en datumtabell i LuckyTemplates

Skapa en datumtabell i LuckyTemplates

Ta reda på varför det är viktigt att ha en dedikerad datumtabell i LuckyTemplates och lär dig det snabbaste och mest effektiva sättet att göra det.

LuckyTemplates mobilrapporteringstips och tekniker

LuckyTemplates mobilrapporteringstips och tekniker

Denna korta handledning belyser LuckyTemplates mobilrapporteringsfunktion. Jag ska visa dig hur du kan utveckla rapporter effektivt för mobila enheter.

Professional Service Analytics-rapporter i LuckyTemplates

Professional Service Analytics-rapporter i LuckyTemplates

I denna LuckyTemplates Showcase går vi igenom rapporter som visar professionell serviceanalys från ett företag som har flera kontrakt och kundengagemang.

Microsoft Power Platform-uppdateringar | Microsoft Ignite 2021

Microsoft Power Platform-uppdateringar | Microsoft Ignite 2021

Gå igenom de viktigaste uppdateringarna för Power Apps och Power Automate och deras fördelar och konsekvenser för Microsoft Power Platform.

Vanliga SQL-funktioner: En översikt

Vanliga SQL-funktioner: En översikt

Upptäck några vanliga SQL-funktioner som vi kan använda som sträng, datum och några avancerade funktioner för att bearbeta eller manipulera data.

LuckyTemplates Skapa mall: Guide och tips

LuckyTemplates Skapa mall: Guide och tips

I den här handledningen kommer du att lära dig hur du skapar din perfekta LuckyTemplates-mall som är konfigurerad efter dina behov och preferenser.

Fältparametrar och små multiplar i LuckyTemplates

Fältparametrar och små multiplar i LuckyTemplates

I den här bloggen kommer vi att visa hur man lager fältparametrar med små multiplar för att skapa otroligt användbara insikter och bilder.

LuckyTemplates Rank och anpassad gruppering

LuckyTemplates Rank och anpassad gruppering

I den här bloggen kommer du att lära dig hur du använder LuckyTemplates ranknings- och anpassade grupperingsfunktioner för att segmentera en exempeldata och rangordna den enligt kriterier.

Visar kumulativ total endast upp till ett visst datum i LuckyTemplates

Visar kumulativ total endast upp till ett visst datum i LuckyTemplates

I den här handledningen kommer jag att täcka en specifik teknik kring hur man visar Kumulativ total endast upp till ett specifikt datum i dina bilder i LuckyTemplates.

Punktdiagram: Avancerade anpassade bilder för LuckyTemplates

Punktdiagram: Avancerade anpassade bilder för LuckyTemplates

Lär dig hur du skapar och anpassar punktdiagram i LuckyTemplates, som huvudsakligen används för att mäta prestanda mot mål eller tidigare år.