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.
- Funksjonen ISERROR, som tar ett uttrykk og returnerer TRUE hvis uttrykket resulterer i feil.
- Funksjonen IFERROR, 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 IF-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 ISERROR og IFERROR. 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 modellkolonnen Egenskapen Er nullstillbar til Av, noe som vil mislykke dataoppdateringen dersom BLANK-er oppstår. Hvis denne feilen oppstår, vil data som lastes inn som et resultat av en vellykket oppdatering, forbli i tabellene.
Bruke IF-funksjonen: Logisk testuttrykk for IF funksjon kan avgjøre om det ville oppstå et feilresultat. Vær oppmerksom på at denne funksjonen, i likhet med funksjonene ISERROR og IFERROR, kan resultere i flere skanninger av lagringsmotoren, men vil sannsynligvis yte bedre enn dem fordi ingen feil må utløses.
Bruk av feiltolerante funksjoner: Noen DAX funksjoner vil teste og kompensere for feilforhold. Med disse funksjonene kan du angi et alternativt resultat som returneres i stedet. Funksjonen DIVIDE er et slikt eksempel. Hvis du vil ha mer veiledning om denne funksjonen, kan du lese artikkelen DAX: DIVIDE funksjon kontra divideringsoperator (/).
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 angir IF-funksjonen med et verdi-hvis-usann-uttrykk).
Profit Margin
= IF(ISERROR([Profit] / [Sales]))
Denne neste versjonen av måluttrykket er forbedret ved hjelp av IFERROR-funksjonen i stedet for funksjonene IF og ISERROR.
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æreprogram: Bruke DAX i Power BI Desktop
- Spørsmål? Prøv å spørre Power BI-fellesskapet
- Forslag? Bidra med ideer for å forbedre Power BI-