Gestione degli errori

Analogamente al modo in cui Excel e il linguaggio DAX hanno una IFERROR funzione, Power Query ha la propria sintassi per testare e intercettare gli errori.

Come accennato nell'articolo sulla gestione degli errori in Power Query, gli errori possono essere visualizzati a livello di passaggio o cella. Questo articolo descrive come rilevare e gestire gli errori in base alla propria logica specifica.

Nota

Per illustrare questo concetto, questo articolo userà una cartella di lavoro di Excel come origine dati. I concetti illustrati di seguito si applicano a tutti i valori in Power Query e non solo a quelli provenienti da una cartella di lavoro di Excel.

L'origine dati di esempio per questa dimostrazione è una cartella di lavoro di Excel con la tabella seguente.

Dati di esempio da Excel.

Questa tabella di una cartella di lavoro di Excel contiene errori di Excel, ad esempio #NULL!, #REF!e #DIV/0! nella colonna Frequenza standard. Quando si importa questa tabella nell'editor di Power Query, l'immagine seguente mostra l'aspetto.

Tabella di esempio in Power Query.

Si noti che gli errori della cartella di lavoro di Excel vengono visualizzati con il [Error] valore in ognuna delle celle.

In questo articolo si apprenderà come sostituire un errore con un altro valore. Si apprenderà anche come rilevare un errore e usarlo per una logica specifica.

In questo caso, l'obiettivo è creare una nuova colonna Frequenza finale che userà i valori della colonna Frequenza standard. In caso di errori, userà il valore della colonna Tasso speciale corrispondente.

Fornire un valore alternativo durante la ricerca di errori

In questo caso, l'obiettivo è creare una nuova colonna Frequenza finale nell'origine dati di esempio che userà i valori della colonna Frequenza standard. In caso di errori, verrà usato il valore della colonna Frequenza speciale corrispondente.

Per creare una nuova colonna personalizzata, passare al menu Aggiungi colonna e selezionare Colonna personalizzata. Nella finestra Colonna personalizzata immettere la formula try [Standard Rate] otherwise [Special Rate]. Assegnare alla nuova colonna il nome Frequenza finale.

Screenshot con la finestra di dialogo Colonna personalizzata aperta e una formula try altrimenti immessa nella colonna personalizzata.

La formula precedente tenterà di valutare la colonna Frequenza standard e restituirà il relativo valore se non vengono rilevati errori. Se vengono rilevati errori nella colonna Frequenza standard, l'output sarà il valore definito dopo l'istruzione otherwise , che in questo caso è la colonna Tariffa speciale.

Dopo aver aggiunto i tipi di dati corretti a tutte le colonne della tabella, l'immagine seguente mostra l'aspetto della tabella finale.

La tabella finale prova in caso contrario.

Nota

Come approccio alternativo, è anche possibile immettere la formula try [Standard Rate] catch ()=> [Special Rate], equivalente alla formula precedente, ma usando la parola chiave catch con una funzione che non richiede parametri.

La catch parola chiave è stata introdotta in Power Query a maggio 2022.

Specificare la logica di errore condizionale

Usando la stessa origine dati di esempio della sezione precedente, il nuovo obiettivo consiste nel creare una nuova colonna per la frequenza finale. Se il valore della tariffa standard esiste, verrà usato tale valore. In caso contrario, verrà utilizzato il valore della colonna Frequenza speciale, ad eccezione delle righe con qualsiasi #REF! errore.

Nota

L'unico scopo dell'esclusione dell'errore #REF! è a scopo dimostrativo. Con i concetti illustrati in questo articolo, è possibile scegliere come destinazione tutti i campi scelti dal record di errore.

Quando si seleziona uno degli spazi vuoti accanto al valore di errore, si ottiene il riquadro dei dettagli nella parte inferiore della schermata. Il riquadro dei dettagli contiene sia il motivo dell'errore, DataFormat.Errorche il messaggio di errore , Invalid cell value '#REF!':

Screenshot dell'errore selezionato, con un messaggio di errore nella parte inferiore della finestra di dialogo.

È possibile selezionare una sola cella alla volta, in modo da poter visualizzare in modo efficace solo i componenti di errore di un valore di errore alla volta. In questo caso si creerà una nuova colonna personalizzata e si userà l'espressione try .

Usare try con la logica personalizzata

Per creare una nuova colonna personalizzata, passare al menu Aggiungi colonna e selezionare Colonna personalizzata. Nella finestra Colonna personalizzata immettere la formula try [Standard Rate]. Assegnare alla nuova colonna il nome Tutti gli errori.

Screenshot con la finestra di dialogo Colonna personalizzata aperta e una formula try immessa nella colonna personalizzata.

L'espressione try converte valori ed errori in un valore di record che indica se l'espressione try ha gestito o meno un errore, nonché il valore appropriato o il record di errore.

Provare a registrare i valori.

È possibile espandere questa colonna appena creata con valori di record ed esaminare i campi disponibili da espandere selezionando l'icona accanto all'intestazione di colonna.

Screenshot della colonna Tutti gli errori con l'icona di espansione evidenziata e le caselle HasError, Value e Error selezionate.

Questa operazione espone tre nuovi campi:

  • All Errors.HasError: indica se il valore della colonna Frequenza standard ha o meno un errore.
  • All Errors.Value: se il valore della colonna Frequenza standard non ha avuto alcun errore, questa colonna visualizzerà il valore della colonna Frequenza standard. Per i valori con errori questo campo non sarà disponibile e durante l'operazione di espansione questa colonna avrà null valori.
  • Tutti gli errori.Errore: se il valore della colonna Frequenza standard ha avuto un errore, questa colonna visualizzerà il record di errore per il valore della colonna Frequenza standard. Per i valori senza errori, questo campo non sarà disponibile e durante l'operazione di espansione questa colonna avrà null valori.

Screenshot della tabella con i nuovi campi nelle colonne, con un valore All.Errors.Error selezionato e che mostra i messaggi di errore nella parte inferiore della tabella.

Per ulteriori indagini, è possibile espandere la colonna All Errors.Error per ottenere i tre componenti del record di errore:

  • Motivo dell'errore
  • Messaggio d'errore
  • Dettagli errore

Dopo aver eseguito l'operazione di espansione, il campo All Errors.Error.Message visualizza il messaggio di errore specifico che indica esattamente l'errore di Excel di ogni cella. Il messaggio di errore è derivato dal campo Messaggio di errore del record di errore.

Screenshot con i messaggi di errore specifici visualizzati.

A questo punto, con ogni messaggio di errore in una nuova colonna, è possibile creare una nuova colonna condizionale con il nome Tasso finale e le clausole seguenti:

  • Se il valore nella colonna All Errors.Errors.Message è uguale nulla , l'output sarà il valore della colonna Frequenza standard.
  • In caso contrario, se il valore nella colonna All Errors.Errors.Message non è uguale Invalid cell value '#REF!'.a , l'output sarà il valore della colonna Frequenza speciale.
  • Else, null.

Screenshot della finestra di dialogo Aggiungi colonna condizionale con tutte le condizioni di errore impostate per la nuova colonna.

Dopo aver mantenuto solo le colonne Account, Tariffa standard, Tariffa speciale e Tariffa finale e l'aggiunta del tipo di dati corretto per ogni colonna, l'immagine seguente illustra l'aspetto della tabella finale.

Tabella finale con tipi di dati.

Usare try e catch con logica personalizzata

In alternativa, è anche possibile creare una nuova colonna personalizzata usando le try parole chiave e catch .

try [Standard Rate] catch (r)=> if r[Message] <> "Invalid cell value '#REF!'." then [Special Rate] else null

Finestra di dialogo Colonna personalizzata con una nuova formula che mostra l'approccio alla sintassi try e catch.

Altre risorse