Riktig bruk av feilfunksjoner
Når du som datamodellerer skriver et DAX-uttrykk som kan oppstå en evalueringstidsfeil, kan du vurdere å bruke to nyttige DAX-funksjoner.
- ISERROR-funksjonen, som tar et enkelt uttrykk og returnerer SANN hvis dette uttrykket resulterer i feil.
- HVISFEIL-funksjonen, som tar to uttrykk. Hvis det første uttrykket resulterer i feil, returneres verdien for det andre uttrykket. Det er faktisk en mer optimalisert implementering av nesting av ISERROR-funksjonen i en HVIS-funksjon.
Men selv om disse funksjonene kan være nyttige og kan bidra til å skrive uttrykk som er enkle å forstå, kan de også redusere ytelsen til beregninger betydelig. Det kan skje fordi disse funksjonene øker antallet lagringsmotorskanninger som kreves.
De fleste evalueringstidsfeil skyldes uventede BLANK-er eller nullverdier eller ugyldig datatypekonvertering.
Anbefalinger
Det er bedre å unngå å bruke FUNKSJONENE ERFEIL og HVISFEIL. Bruk i stedet defensive strategier når du utvikler modellen og skriver uttrykk. Strategier kan omfatte:
Sikre at kvalitetsdata lastes inn i modellen: Bruk Power Query-transformasjoner til å fjerne eller erstatte ugyldige eller manglende verdier, og for å angi riktige datatyper. En Power Query-transformasjon kan også brukes til å filtrere rader når feil, for eksempel ugyldig datakonvertering, forekommer.
Datakvaliteten kan også kontrolleres ved å angi egenskapen Is Nullable (Nullable ) til Av, noe som vil mislykke dataoppdateringen dersom BLANK-er skulle oppstå. Hvis denne feilen oppstår, vil data som lastes inn som et resultat av en vellykket oppdatering, forbli i tabellene.
Bruke HVIS-funksjonen: Det logiske hvis-funksjonens logiske testuttrykk kan avgjøre om det ville oppstå et feilresultat. Vær oppmerksom på at denne funksjonen, i likhet med ISERROR- og HVISFEIL-funksjonene, kan resultere i flere skanninger av lagringsmotoren, men vil sannsynligvis yte bedre enn dem fordi det ikke må oppstå noen feil.
Bruk av feiltolerante funksjoner: Noen DAX-funksjoner tester og kompenserer for feilforhold. Med disse funksjonene kan du angi et alternativt resultat som returneres i stedet. DIVIDE-funksjonen er et slikt eksempel. Hvis du vil ha mer veiledning om denne funksjonen, kan du lese artikkelen om DAX: DIVIDE-funksjonen kontra divideringsoperatoren (/ ).
Eksempel
Følgende måluttrykk tester om en feil vil bli utløst. Den returnerer BLANK i denne forekomsten (som er tilfellet når du ikke gir HVIS-funksjonen et verdi-hvis-usann-uttrykk).
Profit Margin
= IF(ISERROR([Profit] / [Sales]))
Denne neste versjonen av måluttrykket er forbedret ved hjelp av HVISFEIL-funksjonen i stedet for HVIS- og ERFEIL-funksjonene.
Profit Margin
= IFERROR([Profit] / [Sales], BLANK())
Denne endelige versjonen av måluttrykket oppnår imidlertid det samme resultatet, men mer effektivt og elegant.
Profit Margin
= DIVIDE([Profit], [Sales])
Relatert innhold
- Læring bane: Bruke DAX i Power BI Desktop
- Spørsmål? Prøv å spørre Power BI-fellesskap
- Forslag? Bidra med ideer for å forbedre Power BI