Brug variabler til at forbedre ydeevnen og fejlfinding

Fuldført

Du kan bruge variabler i dine DAX-formler som en hjælp til at skrive mindre komplekse og mere effektive beregninger. Variabler bruges ikke nok af udviklere, der begynder at bruge Power BI Desktop, men de er effektive, og du bør bruge dem som standard, når du opretter målinger.

Nogle udtryk omfatter brugen af mange indlejrede funktioner og genbrug af logik for udtryk. Disse udtryk tager længere tid at behandle og er svære at læse og derfor at foretage fejlfinding af. Hvis du bruger variabler, kan du spare tid på behandling af forespørgsler. Denne ændring er et skridt i den rigtige retning mod optimering af ydeevnen for en semantisk model.

Brugen af variabler i din semantiske model giver følgende fordele:

  • Forbedret ydeevne – Variabler kan udføre målinger på en mere effektiv måde, fordi de fjerner behovet for, at Power BI evaluerer det samme udtryk flere gange. Du kan opnå de samme resultater i en forespørgsel på halvdelen af den oprindelige behandlingstid.

  • Forbedret læsbarhed – Variabler har korte navne, der beskriver sig selv, og bruges i stedet for et tvetydigt udtryk med flere ord. Det kan være, at du synes, at det er nemmere at læse og forstå formler, når der bruges variabler.

  • Forenklet fejlfinding – Du kan bruge variabler til at foretage fejlfinding af en formel og teste udtryk, hvilket kan være nyttigt i forbindelse med fejlfinding.

  • Reduceret kompleksitet – Variabler kræver ikke brug af DAX-funktionerne EARLIER eller EARLIEST, som er svære at forstå. Disse funktioner var påkrævet, før variablerne blev introduceret, og var skrevet i komplekse udtryk, der introducerede nye filterkontekster. Nu, hvor du kan bruge variabler i stedet for disse funktioner, kan du skrive færre komplekse formler.

Brug variabler til at forbedre ydeevnen

I følgende tabel vises en definition af en måling på to forskellige måder for at illustrere, hvordan du kan bruge en variabel til at foretage en måling på en mere effektiv måde. Bemærk, at formlen gentager udtrykket, der beregner "samme periode sidste år", men på to forskellige måder: I den første forekomst bruges den normale DAX-beregningsmetode, og i den anden bruges variabler i beregningen.

I den anden række i tabellen kan du se den forbedrede definition af målingen. I denne definition bruges VAR-nøgleordet til at introducere en variabel med navnet SalesPriorYear, og der bruges et udtryk til at tildele resultatet "samme periode sidste år" til denne nye variabel. Den bruger derefter variablen to gange i DIVIDE-udtrykket.

Uden 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ørste definition af målingen i tabellen er formlen ineffektiv, fordi den kræver, at Power BI evaluerer det samme udtryk to gange. Den anden definition er mere effektiv, fordi Power BI på grund af variablen kun skal evaluere PARALLELPERIOD-udtrykket én gang.

Hvis din semantiske model har flere forespørgsler med flere målinger, kan brugen af variabler reducere den samlede behandlingstid for forespørgsler til halvdelen og forbedre den semantiske models overordnede ydeevne. Denne løsning er desuden enkel. Forestil dig besparelserne, i takt med at formlerne bliver mere komplicerede, f.eks. når du arbejder med procentdele og kører totaler.

Brug variabler til at forbedre læsbarheden

Udover at forbedre ydeevnen vil du måske bemærke, hvordan brugen af variabler gør det nemmere at læse koden.

Når du bruger variabler, er det bedste praksis at bruge beskrivende navne til variablerne. I forrige eksempel kaldes variablen SalesPriorYear, hvilket tydeligt angiver, hvad variablen beregner. Forestil dig resultatet af at bruge en variabel med navnet X, temp eller variable1. Formålet med denne variabel ville ikke være tydelig for alle.

Brug af tydelige, kortfattede, betydningsfulde navne vil hjælpe med at gøre det nemmere at forstå, hvad du forsøger at beregne, og det vil være meget nemmere for andre udviklere at vedligeholde rapporten i fremtiden.

Brug variabler til at foretage fejlfinding af flere trin

Du kan bruge variabler som en hjælp til at foretage fejlfinding af en formel og identificere, hvad problemet er. Variabler hjælper med at forenkle fejlfinding af din DAX-beregning ved at evaluere hver variabel separat og kalde dem igen efter udtrykket RETURN.

I følgende eksempel tester du et udtryk, der er tildelt en variabel. Hvis du vil foretage fejlfinding, skal du midlertidigt omskrive returneringsudtrykket for at skrive til variablen. Målingsdefinitionen returnerer kun variablen SalesPriorYear , fordi det er det, der kommer efter returneringsudtrykket.

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

Return-udtrykket viser kun værdien SalesPriorYear% . Denne teknik giver dig mulighed for at genindlæse udtrykket, når du har fuldført fejlfindingen. Den gør det også nemmere at forså beregninger pga. reduceret kompleksitet af DAX-koden.