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])