Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När du skriver ett DAX uttryck som kan generera ett utvärderingsfel kan du som datamodellerare överväga att använda två användbara DAX funktioner.
- Funktionen ISERROR , som tar ett enda uttryck och returnerar TRUE om uttrycket resulterar i fel.
- Funktionen IFERROR, som tar emot två uttryck. Om det första uttrycket resulterar i ett fel returneras värdet för det andra uttrycket. Det är i själva verket en mer optimerad implementering av kapsling av ISERROR funktionen i en IF funktion.
Men även om dessa funktioner kan vara användbara och kan bidra till att skriva lättförståeliga uttryck, kan de också avsevärt försämra prestandan vid beräkningar. Det kan inträffa eftersom dessa funktioner ökar antalet genomsökningar av lagringsmotorn som krävs.
De flesta utvärderingsfel beror på oväntade BLANK:er eller nollvärden eller ogiltig datatypskonvertering.
Rekommendationer
Det är bättre att undvika att använda ISERROR funktionerna och IFERROR . Använd i stället defensiva strategier när du utvecklar modellen och skriver uttryck. Strategier kan omfatta:
Se till att kvalitetsdata läses in i modellen: Använd Power Query-transformeringar för att ta bort eller ersätta ogiltiga eller saknade värden och för att ange rätt datatyper. En Power Query-transformering kan också användas för att filtrera 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. Om det här felet inträffar kommer data som läses in till följd av en lyckad uppdatering att finnas kvar i tabellerna.
IF Använda funktionen: Funktionens IF logiska testuttryck kan avgöra om ett felresultat skulle inträffa. Observera att den här funktionen, precis som ISERROR-funktionerna och IFERROR-funktionerna, kan resultera i ytterligare genomsökningar av lagringsmotorn, men kommer troligtvis att fungera bättre än dem eftersom inget fel behöver genereras.
Använda feltoleranta funktioner: Vissa DAX funktioner testar och kompenserar för feltillstånd. 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 DAXartikeln : DIVIDE function vs divide operator (/).
Exempel
Följande måttuttryck testar om ett fel skulle uppstå. Den returnerar BLANK i den här instansen (vilket är fallet när du inte ger IF funktionen ett värde-om-falskt-uttryck).
Profit Margin
= IF(ISERROR([Profit] / [Sales]))
Nästa version av måttuttrycket har förbättrats genom att använda IFERROR-funktionen i stället för IF- och ISERROR-funktionerna.
Profit Margin
= IFERROR([Profit] / [Sales], BLANK())
Den här slutliga versionen av måttuttrycket uppnår dock samma resultat, men ändå mer effektivt och elegant.
Profit Margin
= DIVIDE([Profit], [Sales])
Relaterat innehåll
- Utbildningsväg: Använd DAX i Power BI Desktop
- Frågor? Prova att fråga Power BI Community
- Förslag? Bidra med idéer för att förbättra Power BI