Uso appropriato delle funzioni di errore

Se un'espressione DAX può generare un errore in fase di valutazione, un modeler di dati può considerare l'uso di due utili funzioni DAX.

  • La funzione ISERROR accetta una sola espressione e restituisce TRUE se tale espressione genera un errore.
  • La funzione IFERROR accetta due espressioni. Se la prima espressione genera un errore, viene restituito il valore per la seconda espressione. Si tratta in realtà di un'implementazione più ottimizzata dell'annidamento della funzione ISERROR all'interno di una funzione IF.

Sebbene queste funzioni possano essere utili e possano contribuire a scrivere espressioni facilmente comprensibili, è anche possibile che riducano significativamente le prestazioni dei calcoli. Ciò può avvenire perché tali funzioni aumentano il numero delle analisi che il motore di archiviazione deve eseguire.

La maggior parte degli errori in fase di valutazione è dovuta a valori vuoti o zero imprevisti oppure a una conversione del tipo di dati non valida.

Consigli

È preferibile evitare di usare le funzioni ISERROR e IFERROR. In alternativa, applicare strategie difensive durante lo sviluppo del modello e la scrittura di espressioni, Possibili strategie:

  • Verifica del caricamento dei dati qualitativi nel modello: usare le trasformazioni di Power Query per rimuovere o sostituire valori non validi o mancanti e impostare i tipi di dati corretti. È anche possibile usare una trasformazione Power Query per filtrare le righe quando si verificano errori, ad esempio in caso di conversione di dati non valida.

    La qualità dei dati può essere controllata anche disabilitando la proprietà Is Nullable della colonna del modello che non aggiornerà i dati se si dovessero rilevare dati vuoti. Se si verifica questo errore, i dati caricati in seguito a un aggiornamento riuscito rimarranno nelle tabelle.

  • Uso della funzione IF:l'espressione di test logico della funzione IF può determinare se si verificherebbe un risultato di errore. Si noti che, analogamente alle funzioni ISERROR e IFERROR, questa funzione può richiedere analisi aggiuntive del motore di archiviazione, ma è probabile che le prestazioni siano migliori rispetto alle altre funzioni, in quanto non si devono generare errori.

  • Uso delle funzioni a tolleranza di errore: alcune funzioni DAX testeranno e compenseranno le condizioni di errore. Queste funzioni consentono di immettere un risultato alternativo che verrebbe invece restituito. La funzione DIVIDE è uno di questi esempi. Per altre indicazioni su questa funzione, vedere l'articolo Confronto tra funzione DIVIDE e operatore di divisione (/).

Esempio

Nell'espressione di misura seguente viene verificato se si genererà un errore. In questa istanza viene restituito un valore vuoto. Si verifica quando non si specifica la funzione IF con un'espressione value-if-false.

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

La versione successiva dell'espressione di misura è stata migliorata usando la funzione IFERROR al posto delle funzioni IF e ISERROR.

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

Questa versione finale dell'espressione di misura ottiene lo stesso risultato, ma in modo più efficiente ed elegante.

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