Del via


Passende brug af error funktioner

Når du som dataudformer skriver et DAX udtryk, der kan udløse en evaluering –timeerror– kan du overveje at bruge to nyttige DAX funktioner.

  • Funktionen ISERROR, der tager et enkelt udtryk and returnerer TRUEif dette udtryk resulterer i error.
  • Funktionen IFERROR, som kræver to udtryk. Hvis udtrykket first resulterer i error, returneres value for udtrykket second. Det er i fact en mere optimeret implementering af indlejring af funktionen ISERROR i en IF funktion.

Selvom disse funktioner kan være nyttige and 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 evalueringsfejl –time skyldes uventede TOMME værdier or nul values, or ugyldig konvertering af datatypen.

Anbefalinger

Det er bedre at undgå at bruge de ISERRORandIFERROR funktioner. Anvend i stedet defensive strategier, når du udvikler modellen and skriveudtryk. Strategier kan omfatte:

  • At sikre, at kvalitetsdata indlæses i modellen: Brug Power Forespørgselstransformationer til at fjerne orsubstitute ugyldige or mangler values, and til at angive korrekte datatyper. En Power forespørgselstransformation kan også bruges til at filter rækker, når der opstår fejl, f.eks. ugyldig datakonvertering.

    Datakvaliteten kan også styres ved at angive modelkolonnen Er egenskaben Nullable til Fra, hvilket vil mislykke dataopdateringen, hvis der opstår TOMME værdier. If 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 for IF-funktionen kan afgøre, om der opstår et error resultat. Bemærk, at denne funktion, ligesom de ISERRORandIFERROR funktioner, kan resultere i yderligere scanninger af lagringsprogrammet, men den vil sandsynligvis fungere bedre end dem, da ingen error behøver at blive opløftet.

  • Brug af error-tolerante funktioner: Nogle DAX funktioner tester and kompensere for error betingelser. Disse funktioner giver dig mulighed for at angive et alternativt resultat, der returneres i stedet. Funktionen DIVIDE er et sådant eksempel. Yderligere vejledning om denne funktion finder du i artiklen DAX: DIVIDE function vs divide operator (/).

Eksempel

Følgende measure udtryk tester, om en error ville blive opløftet. Den returnerer BLANK i denne forekomst (hvilket er tilfældet, når du not angiver funktionen IF med et value-if-false udtryk).

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

Denne next version af udtrykket measure er blevet forbedret ved hjælp af funktionen IFERROR i stedet for de IFandISERROR funktioner.

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

Men denne endelige version af udtrykket measure opnår det samme resultat, men mere effektivt and elegant.

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