Bruke variabler for å forbedre ytelse og feilsøking

Fullført

Du kan bruke variabler i DAX-formlene for å skrive mindre komplekse og mer effektive beregninger. Variabler blir ikke benyttet nok av utviklere som begynner å bruke Power BI Desktop, men de er effektive og du bør bruke dem som standard når du oppretter mål.

Enkelte uttrykk omfatter bruk av mange nestede funksjoner og gjenbruk av uttrykkslogikk. Det tar lengre tid å behandle disse uttrykkene og de er vanskelige å lese, og derved, feilsøke. Hvis du bruker variabler, kan du spare behandlingstid for spørringer. Denne endringen er et trinn i riktig retning mot optimalisering av ytelsen til en semantisk modell.

Bruk av variabler i den semantiske modellen gir følgende fordeler:

  • Forbedret ytelse – Variabler kan gjøre målinger mer effektive da de fjerner behovet for at Power BI evaluerer det samme uttrykket flere ganger. Du kan oppnå de samme resultatene i en spørring på omtrent halvparten av den opprinnelige behandlingstiden.

  • Forbedret lesbarhet – Variabler har korte, selvbeskrivende navn og brukes i stedet for tvetydige uttrykk med flere ord. Det kan hende at du finner det enklere å forstå formlene når variabler brukes.

  • Forenklet feilsøking – Du kan bruke variabler til å feilsøke en formel og teste uttrykk, noe som kan være nyttig i under feilsøking.

  • Redusert kompleksitet – Variabler krever ikke bruk av TIDLIGERE eller TIDLIGEST DAX-funksjoner, som er vanskelige å forstå. Disse funksjonene var påkrevd før variabler ble innført, og ble skrevet i kompliserte uttrykk som innførte nye filterkontekster. Nå som du kan bruke variabler i stedet for disse funksjonene, kan du skrive færre komplekse formler.

Bruk variabler for å forbedre ytelse

For å illustrere hvordan du kan bruke en variabel til å foreta et mål mer effektivt, viser den følgende tabellen en måldefinisjon på to forskjellige måter. Legg merke til at formelen gjentar uttrykket som beregner «samme periode i fjor», men på to forskjellige måter: den første forekomsten bruker den normale DAX-beregningsmetoden og den andre bruker variabler i beregningen.

Den andre raden i tabellen viser den forbedrede måldefinisjonen. Denne definisjonen bruker VAR-nøkkelordet til å introdusere en variabel kalt SalesPriorYear, og den bruker et uttrykk til å tilordne resultatet «samme periode i fjor» til den nye variabelen. Den bruker deretter variabelen to ganger i DIVIDE-uttrykket.

Uten 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 måldefinisjonen i tabellen er formelen ineffektiv fordi den krever at Power BI evaluerer det samme uttrykket to ganger. Den andre definisjonen er mer effektiv fordi Power BI på grunn av variabelen bare trenger å evaluere PARALLELPERIOD-uttrykket én gang.

Hvis den semantiske modellen har flere spørringer med flere mål, kan bruken av variabler redusere den totale behandlingstiden for spørringen i to og forbedre den generelle ytelsen til den semantiske modellen. I tillegg er denne løsningen en enkel. Forestill deg besparelsene når formlene blir mer kompliserte, for eksempel når du jobber med prosentandeler og beregner totalsummer.

Bruk variabler for å forbedre lesbarhet

I tillegg til forbedret ytelse, ser du kanskje hvordan bruken av variabler gjør koden lettere å lese.

Når du bruker variabler, er det anbefalt fremgangsmåte å bruke beskrivende navn for variablene. I det forrige eksemplet, kalles variabelen SalesPriorYear som tydelig angir hva variabelen beregner. Vurder resultatet av å bruke en variabel som ble kalt X, midlertidig eller variabel1. Formålet med variabelen vil ikke være tydelig i det hele tatt.

Bruk av tydelige, konsise og meningsfylte navn vil gjøre det enklere for deg å forstå hva du forsøker å beregne, og det vil bli mye enklere for andre utviklere å vedlikeholde rapporten i fremtiden.

Bruk variabler til å feilsøke flere trinn

Du kan bruke variabler for å hjelpe deg med å feilsøke en formel og identifisere hva problemet er. Variabler bidrar til å forenkle oppgaven med feilsøking av DAX-beregningen ved å evaluere hver variabel separat, og ved å tilbakekalle dem etter RETURN-uttrykket.

I det følgende eksemplet, tester du et uttrykk som er tilordnet en variabel. Du kan feilsøke returuttrykket midlertidig for å skrive til variabelen. Måldefinisjonen returnerer bare SalesPriorYear-variabelen fordi det er det som kommer etter RETURN-uttrykket.

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

RETURN-uttrykket viser bare SalesPriorYear%- verdien. Med denne teknikken kan du tilbakestille uttrykket når du har fullført feilsøkingen. Den gjør også beregninger enklere å forstå på grunn av redusert kompleksitet i DAX-koden.