Passende brug af fejlfunktioner

Når du skriver et DAX-udtryk, der kan udløse en fejl i evalueringstiden, kan du som dataudformer overveje at bruge to nyttige DAX-funktioner.

  • Funktionen ISERROR , som tager et enkelt udtryk og returnerer TRUE, hvis det pågældende udtryk resulterer i fejl.
  • Funktionen IFERROR , som kræver to udtryk. Hvis det første udtryk resulterer i fejl, returneres værdien for det andet udtryk. Det er faktisk en mere optimeret implementering af indlejring af funktionen ISERROR i en IF-funktion .

Selvom disse funktioner kan være nyttige og kan bidrage til at skrive letforståelige udtryk, kan de også reducere ydeevnen af beregninger betydeligt. Det kan ske, fordi disse funktioner øger antallet af påkrævede scanninger af lagringsprogrammet.

De fleste fejl i evalueringstiden skyldes uventede TOMME værdier eller nulværdier eller ugyldig konvertering af datatyper.

Anbefalinger

Det er bedre at undgå at bruge funktionerne ISERROR og IFERROR. Anvend i stedet defensive strategier, når du udvikler modellen og skriver udtryk. Strategier kan omfatte:

  • Sikrer, at kvalitetsdata indlæses i modellen: Brug Power Query-transformationer til at fjerne eller erstatte ugyldige eller manglende værdier og til at angive korrekte datatyper. En Power Query-transformation kan også bruges til at filtrere rækker, når der opstår fejl, f.eks. ugyldig datakonvertering.

    Datakvaliteten kan også styres ved at angive egenskaben Er Nullable for modelkolonnen til Fra, hvilket vil mislykke dataopdateringen, hvis der opstår TOMME VÆRDIER. Hvis denne fejl opstår, forbliver data, der indlæses som følge af en vellykket opdatering, i tabellerne.

  • Brug af funktionen IF: Det logiske testudtryk if-funktion kan afgøre, om der vil opstå et fejlresultat. Bemærk! Ligesom funktionerne ISERROR og IFERROR kan denne funktion resultere i yderligere scanninger af lagringsprogrammet, men den vil sandsynligvis fungere bedre end dem, da der ikke skal udløses nogen fejl.

  • Brug af fejltolerante funktioner: Nogle DAX-funktioner tester og kompenserer for fejltilstande. Disse funktioner giver dig mulighed for at angive et alternativt resultat, der returneres i stedet. Funktionen DIVIDE er et sådant eksempel. Du kan finde flere oplysninger om denne funktion i artiklen DAX: DIVIDE-funktion vs. divisionsoperator (/).

Eksempel

Følgende målingsudtryk tester, om der udløses en fejl. Den returnerer BLANK i denne forekomst (hvilket er tilfældet, når du ikke angiver funktionen IF med et value-if-false-udtryk).

Profit Margin
= IF(ISERROR([Profit] / [Sales]))

Denne næste version af målingsudtrykket er blevet forbedret ved hjælp af funktionen IFERROR i stedet for funktionerne IF og ISERROR.

Profit Margin
= IFERROR([Profit] / [Sales], BLANK())

Denne endelige version af målingsudtrykket opnår dog det samme resultat, men mere effektivt og elegant.

Profit Margin
= DIVIDE([Profit], [Sales])