Condividi tramite


Uso appropriato delle funzioni di errore

Come modello di dati, quando si scrive un'espressione DAX che potrebbe generare un errore in fase di valutazione, è possibile prendere in considerazione l'uso di due funzioni utili DAX.

  • La funzione ISERROR, che accetta una singola espressione e restituisce TRUE se tale espressione restituisce un errore.
  • Funzione IFERROR, che accetta due espressioni. Se la prima espressione restituisce un errore, viene restituito il valore per la seconda espressione. È infatti un'implementazione più ottimizzata dell'annidamento della funzione ISERROR all'interno di una funzione IF.

Tuttavia, anche se queste funzioni possono essere utili e possono contribuire alla scrittura di espressioni facili da comprendere, possono anche ridurre 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 durante la valutazione è causata da spazi vuoti o valori zero inaspettati, oppure dalla conversione di tipi di dati non validi.

Consigli

È consigliabile evitare di usare le funzioni di ISERROR e IFERROR. Applicare invece strategie difensive durante lo sviluppo del modello e la scrittura di espressioni. Possibili strategie:

  • Verificare che i dati qualitativi vengano caricati nel modello: Usare le trasformazioni di Power Query per rimuovere o sostituire valori non validi o mancanti e impostare i tipi di dati corretti. Una trasformazione di Power Query può essere usata anche per filtrare le righe quando si verificano errori, ad esempio la conversione dei 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 di IF: L'espressione di test logico della funzione IF può determinare se si verificherebbe un risultato di errore. Si noti che, come le funzioni ISERROR e IFERROR, questa funzione può comportare analisi aggiuntive del motore di archiviazione, ma probabilmente offrirà prestazioni migliori poiché non è necessario sollevare alcun errore.

  • Uso di 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 è un esempio di questo tipo. Per altre indicazioni su questa funzione, vedere l'articolo DAX: DIVIDE funzione e operatore di divisione (/).

Esempio

La seguente espressione di misura verifica se viene generato un errore. Restituisce BLANK in questa istanza, ovvero quando non si specifica la funzione IF con un'espressione value-if-false.

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

Questa 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())

Tuttavia, questa versione finale dell'espressione di misura ottiene lo stesso risultato, ma più efficiente ed elegante.

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