Dela via


Lämplig användning av error funktioner

När du skriver ett DAX uttryck som kan generera en utvärderingtimeerrorkan du som datamodellerare överväga att använda två användbara DAX funktioner.

  • Funktionen ISERROR, som tar ett enda uttryck and returnerar TRUEif uttrycket resulterar i error.
  • Funktionen IFERROR, som tar emot två uttryck. Om first-uttrycket resulterar i errorreturneras value för second-uttrycket. Det är i fact en mer optimerad implementering av att kapsla funktionen ISERROR i en IF-funktion.

Men även om dessa funktioner kan vara till hjälp och and kan bidra till att skriva lättförståeliga uttryck, kan de också avsevärt försämra beräkningsprestandan. Det kan inträffa eftersom dessa funktioner ökar antalet genomsökningar av lagringsmotorn som krävs.

De flesta utvärderingsfeltime beror på oväntade BLANK:er or noll values, or ogiltig datatypkonvertering.

Rekommendationer

Det är bättre att undvika att använda ISERRORandIFERROR-funktionerna. Använd i stället defensiva strategier när du utvecklar modellen and skriva uttryck. Strategier kan omfatta:

  • Se till att kvalitetsdata läses in i modellen: Använd Power Query-transformeringar för att ta bort orsubstitute ogiltig or saknade valuesand för att ange rätt datatyper. En Power Frågetransformering kan också användas för att filter rader när fel, till exempel ogiltig datakonvertering, inträffar.

    Datakvaliteten kan också styras genom att ställa in modellkolumnen Är-null-egenskapen till Av, vilket gör att datauppdateringen misslyckas om tomma värden påträffas. If det här felet inträffar finns data som läses in till följd av en lyckad uppdatering kvar i tabellerna.

  • Använda funktionen IF: Det logiska testuttrycket för IF-funktionen kan avgöra om ett error resultat skulle inträffa. Observera att den här funktionen, på liknande sätt som ISERRORandIFERROR funktionerna, kan resultera i ytterligare genomsökningar av lagringsmotorn, men kommer sannolikt att prestera bättre än dessa eftersom ingen error behöver höjas.

  • Använda error-toleranta funktioner: Vissa DAX funktioner testar and kompenserar för error villkor. Med de här funktionerna kan du ange ett alternativt resultat som returneras i stället. Funktionen DIVIDE är ett sådant exempel. Mer information om den här funktionen finns i artikeln DAX: DIVIDE function vs divide operator (/).

Exempel

Följande measure-uttryck testar om en error skulle utlösas. Den återger BLANK i detta fall (vilket är fallet när man not förser funktionen IF med ett value-if-false uttryck).

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

Den här next versionen av measure-uttrycket har förbättrats med hjälp av funktionen IFERROR i stället för de IFandISERROR funktionerna.

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

Men den här slutliga versionen av measure uttryck uppnår samma resultat, men ännu mer effektivt and elegant.

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