Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Wanneer u als gegevensmodeller een DAX expressie schrijft die een evaluatietijdfout kan veroorzaken, kunt u overwegen twee nuttige DAX functies te gebruiken.
- De ISERROR functie, die één expressie gebruikt en retourneert TRUE als deze expressie een fout oplevert.
- De functie IFERROR, die twee expressies gebruikt. Als de eerste expressie een fout oplevert, wordt de waarde voor de tweede expressie geretourneerd. Het is in feite een meer geoptimaliseerde implementatie van het nesten van de ISERROR functie binnen een IF functie.
Hoewel deze functies echter nuttig kunnen zijn en kunnen bijdragen aan het schrijven van eenvoudig te begrijpen expressies, kunnen ze ook de prestaties van berekeningen aanzienlijk verminderen. Dit kan gebeuren omdat deze functies het aantal vereiste scans van de opslagengine verhogen.
De meeste evaluatiefouten worden veroorzaakt door onverwachte BLANK's of nulwaarden, of ongeldige conversie van gegevenstypen.
Aanbevelingen
Het is beter om het gebruik van de ISERROR functies en IFERROR functies te vermijden. Pas in plaats daarvan defensieve strategieën toe bij het ontwikkelen van het model en het schrijven van expressies. Strategieën kunnen het volgende omvatten:
Ervoor zorgen dat kwaliteitsgegevens in het model worden geladen: Gebruik Power Query-transformaties om ongeldige of ontbrekende waarden te verwijderen of te vervangen en om de juiste gegevenstypen in te stellen. Een Power Query-transformatie kan ook worden gebruikt om rijen te filteren wanneer fouten, zoals ongeldige gegevensconversie, optreden.
Gegevenskwaliteit kan ook worden beheerd door de modelkolom Is Nullable eigenschap op Uit te zetten, waardoor het vernieuwen van gegevens mislukt als er BLANK's worden aangetroffen. Als deze fout optreedt, blijven de gegevens in de tabellen die als gevolg van een geslaagde vernieuwing worden geladen.
Met behulp van de IF functie: De IF logische testexpressie van de functie kan bepalen of er een foutresultaat zou optreden. Houd er rekening mee dat net als de functies ISERROR en IFERROR, deze functie kan leiden tot extra scans van de opslagengine, maar waarschijnlijk beter zal presteren dan deze omdat er geen fout gegenereerd hoeft te worden.
Fouttolerante functies gebruiken: Sommige DAX functies testen en compenseren voor foutvoorwaarden. Met deze functies kunt u een alternatief resultaat invoeren dat in plaats daarvan wordt geretourneerd. De functie DIVIDE is zo'n voorbeeld. Lees het DAXartikel : DIVIDE function vs divide operator (/) voor aanvullende richtlijnen over deze functie.
Voorbeeld
Met de volgende metingexpressie wordt getest of er een fout wordt gegenereerd. Het retourneert BLANK in dit geval (wat het geval is wanneer u de IF functie geen expressie voor 'waarde indien onwaar' opgeeft).
Profit Margin
= IF(ISERROR([Profit] / [Sales]))
Deze volgende versie van de metingexpressie is verbeterd met behulp van de IFERROR functie in plaats van de IF en ISERROR functies.
Profit Margin
= IFERROR([Profit] / [Sales], BLANK())
Deze uiteindelijke versie van de metingexpressie bereikt echter hetzelfde resultaat, maar is efficiënter en eleganter.
Profit Margin
= DIVIDE([Profit], [Sales])
Verwante inhoud
- Leertraject: DAX gebruiken in Power BI Desktop
- Vragen? Probeer het aan de Power BI-community te vragen
- Suggesties? Ideeën bijdragen om Power BI te verbeteren