Använda variabler för att förbättra prestanda och felsökning

Slutförd

Du kan använda variabler i dina DAX-formler för att enklare skriva mindre komplexa och effektivare beräkningar. Variabler används av utvecklare som börjar i Power BI Desktop, men de är effektiva och du bör använda dem som standard när du skapar mått.

Vissa uttryck omfattar användningen av många kapslade funktioner och återanvändning av logik för uttryck. Det tar längre tid att bearbeta dessa uttryck och de är svåra att läsa och därför felsöka. Om du använder variabler kan du spara bearbetningstiden för frågan. Den här ändringen är ett steg i rätt riktning mot att optimera prestanda för en semantisk modell.

Användningen av variabler i din semantikmodell ger följande fördelar:

  • Bättre prestanda – Variabler kan göra måtten mer effektiva eftersom de tar bort behovet av Power BI för att utvärdera samma uttryck flera gånger. Du kan få samma resultat i en fråga ungefär dubbelt så snabbt som den ursprungliga bearbetningstiden.

  • Bättre läsbarhet – Variabler har korta, självbeskrivande namn och används i stället för ett tvetydigt uttryck med flera ord. Det kan vara lättare att läsa och förstå formlerna när variabler används.

  • Förenklad felsökning – Du kan använda variabler för att felsöka en formel och testuttryck som kan vara till hjälp vid felsökning.

  • Minskad komplexitet – Variabler kräver inte att funktionerna EARLIER eller EARLIER DAX används, vilket inte är svårt att förstå. Dessa funktioner var obligatoriska innan variabler introducerades och skrevs i komplexa uttryck som introducerade nya filterkontexter. Nu när du kan använda variabler i stället för dessa funktioner kan du skriva färre komplexa formler.

Använd variabler för att förbättra prestanda

För att illustrera hur du kan använda en variabel för att göra måttet mer effektivt visar följande tabell en måttdefinition på två olika sätt. Observera att formeln upprepar det uttryck som beräknar ”samma period förra året”, men på två olika sätt: den första instansen använder den vanliga DAX-beräkningsmetoden och den andra använder variabler i beräkningen.

Den förbättrade måttdefinitionen visas i den andra raden i tabellen. Den här definitionen använder nyckelordet VAR för att presentera en variabel med namnet SalesPriorYear, och den använder ett uttryck för att tilldela resultatet av samma period förra året till den nya variabeln. Sedan används variabeln två gånger i DIVIDE-uttrycket.

Utan variabel

Sales YoY Growth =
DIVIDE (
    ( [Sales] - CALCULATE ( [Sales], PARALLELPERIOD ( 'Date'[Date], -12, MONTH ) ) ),
    CALCULATE ( [Sales], PARALLELPERIOD ( 'Date'[Date], -12, MONTH ) )
)

Med variabel

Sales YoY Growth =
VAR SalesPriorYear =
    CALCULATE ( [Sales], PARALLELPERIOD ( 'Date'[Date], -12, MONTH ) )
VAR SalesVariance =
    DIVIDE ( ( [Sales] - SalesPriorYear ), SalesPriorYear )
RETURN
    SalesVariance

I den första måttdefinitionen i tabellen är formeln ineffektiv eftersom den kräver att Power BI utvärderar samma uttryck två gånger. Den andra definitionen är effektivare eftersom Power BI på grund av variabeln bara behöver utvärdera PARALLELPERIOD-uttrycket en gång.

Om din semantiska modell har flera frågor med flera mått kan användningen av variabler halvera den övergripande frågebearbetningstiden och förbättra semantikmodellens övergripande prestanda. Den här lösningen är dessutom en enkel lösning. Tänk på besparingarna när formlerna blir mer komplicerade, till exempel när du arbetar med procent och löpande summor.

Använd variabler för att förbättra läsbarheten

Förutom bättre prestanda kan du se hur användningen av variabler gör koden enklare att läsa.

När du använder variabler är det rekommenderat att använda beskrivande namn för variablerna. I föregående exempel kallas variabeln SalesPriorYear, vilket tydligt anger vad variabeln beräknar. Överväg resultatet av att använda en variabel med namnet X, Temp eller variable1. Syftet med variabeln skulle inte alls vara tydligt.

Genom att använda tydliga, koncisa namn kan du göra det enklare för dig att förstå vad du försöker beräkna, och det är mycket enklare för andra utvecklare att underhålla rapporten i framtiden.

Använd variabler för att felsöka flera steg

Du kan använda variabler för att felsöka en formel och identifiera vad problemet är. Variabler bidrar till att förenkla uppgiften att felsöka DAX-beräkningen genom att utvärdera varje variabel separat och genom att anropa dem efter returuttrycket.

I följande exempel testar du ett uttryck som har tilldelats en variabel. För att felsöka skriver du tillfälligt om RETURN-uttrycket för att skriva till variabeln. Måttdefinitionen returnerar endast variabeln SalesPriorYear eftersom det är det som kommer efter RETURN-uttrycket.

Sales YoY Growth % =
VAR SalesPriorYear =  CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
VAR SalesPriorYear% = DIVIDE(([Sales] - SalesPriorYear), SalesPriorYear)  
RETURN  SalesPriorYear%

Return-uttrycket visar endast SalesPriorYear% -värdet. Med den här metoden kan du återställa uttrycket när du har slutfört felsökningen. Det gör det också enklare att förstå beräkningarna på grund av minskad komplexitet för DAX-koden.