Geschikt gebruik van foutfuncties

Wanneer u als gegevensmodeller een DAX-expressie schrijft die een evaluatietijdfout kan veroorzaken, kunt u overwegen twee nuttige DAX-functies te gebruiken.

  • De functie ISERROR , die één expressie gebruikt en WAAR retourneert als deze expressie een fout oplevert.
  • De functie ALS.FOUT , 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 FUNCTIE ISERROR binnen een ALS-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 te voorkomen dat u de functies ISERROR en IFERROR gebruikt. 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 eigenschap Is Nullable van de modelkolom in te stellen op Uit, waardoor het vernieuwen van de gegevens mislukt als er BLANK's worden aangetroffen. Als deze fout optreedt, blijven de gegevens die als gevolg van een geslaagde vernieuwing in de tabellen worden geladen.

  • Met behulp van de functie ALS: De logische testexpressie ALS-functie kan bepalen of er een foutresultaat zou optreden. Zoals de functies ISERROR en ALS.FOUT kunnen deze functie leiden tot extra scans van de opslagengine, maar waarschijnlijk beter presteren dan ze omdat er geen fout hoeft te worden gegenereerd.

  • Met fouttolerante functies: 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 een voorbeeld. Lees voor aanvullende richtlijnen over deze functie het artikel DAX: DIVIDE function vs divide operator (/).

Opmerking

Met de volgende metingexpressie wordt getest of er een fout wordt gegenereerd. Het retourneert BLANK in dit exemplaar (wat het geval is wanneer u de functie IF niet opgeeft met een waarde-als-onwaar-expressie).

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

Deze volgende versie van de metingexpressie is verbeterd met behulp van de functie ALS en ISFOUT.

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])