Geschikt gebruik van error-functies
Als gegevensmodelleur kunt u, wanneer u een DAX-expressie schrijft die een evaluatie-timeerrorkan veroorzaken, overwegen om twee nuttige DAX-functies te gebruiken.
- De ISERROR-functie, die één expressie gebruikt and retourneert TRUEif die expressie resulteert in error.
- De functie IFERROR, die twee expressies gebruikt. Als de first expressie resulteert in error, wordt de value voor de second-expressie geretourneerd. In fact is er een meer geoptimaliseerde implementatie van het nesten van de ISERROR-functie binnen een IF-functie.
Hoewel deze functies nuttig kunnen zijn and 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 evaluatie-time fouten worden veroorzaakt door onverwachte BLANK's or nul values, or ongeldige conversie van gegevenstypen.
Aanbevelingen
Het is beter om het gebruik van de ISERRORandIFERROR functies te voorkomen. Pas in plaats daarvan defensieve strategieën toe bij het ontwikkelen van het model and schrijfexpressies. Strategieën kunnen het volgende omvatten:
Ervoor zorgen dat kwaliteitsgegevens in het model worden geladen: Gebruik Power querytransformaties om orsubstitute ongeldige or ontbrekende valueste verwijderen, and om de juiste gegevenstypen in te stellen. Een Power Querytransformatie kan ook worden gebruikt voor het filter van rijen bij fouten zoals ongeldige gegevensconversie.
Gegevenskwaliteit kan ook worden beheerd door de modelkolom in te stellen Is null- eigenschap is uitgeschakeld. Hierdoor mislukt het vernieuwen van gegevens als er BLANK's worden aangetroffen. If wanneer deze fout optreedt, blijven de gegevens die als gevolg van een geslaagde vernieuwing in de tabellen worden geladen, behouden.
De functie IF gebruiken: De logische testexpressie van de IF functie kan bepalen of er een error resultaat zou optreden. Net als de ISERRORandIFERROR-functies kan deze functie leiden tot extra scans van de opslagengine, maar zal hij waarschijnlijk beter presteren dan deze omdat er geen error hoeft te worden verhoogd.
Met error-tolerante functies: Sommige DAX functies zullen and compenseren voor error voorwaarden testen. Met deze functies kunt u een alternatief resultaat invoeren dat in plaats daarvan wordt geretourneerd. De functie DIVIDE is zo'n voorbeeld. Voor aanvullende richtlijnen over deze functie, lees de DAX: DIVIDE functie versus divide operator (/) artikel.
Voorbeeld
Met de volgende measure expressie wordt getest of een error wordt verhoogd. Het retourneert BLANK in dit exemplaar (dit is het geval wanneer u de IF functie not opgeeft met een value-if-false expressie).
Profit Margin
= IF(ISERROR([Profit] / [Sales]))
Deze next versie van de measure-expressie is verbeterd met behulp van de functie IFERROR in plaats van de IFandISERROR-functies.
Profit Margin
= IFERROR([Profit] / [Sales], BLANK())
Deze definitieve versie van de measure expressie bereikt echter hetzelfde resultaat, maar is efficiënter and eleganter.
Profit Margin
= DIVIDE([Profit], [Sales])
Related Inhoud
- Leer path: DAX gebruiken in Power BI Desktop-
- Vragen? Stel het voor aan de Power BI Community
- Suggesties? ideeën bijdragen om Power BI- te verbeteren