Condividi tramite


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 è incentrato su come rilevare e gestire gli errori in base alla propria logica specifica.

Nota

Per illustrare questo concetto, questo articolo usa 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.

Screenshot dei dati di esempio di una cartella di lavoro di Excel contenente tre errori.

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.

Screenshot della tabella di esempio caricata in Power Query.

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

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

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 usa i valori della colonna Frequenza standard. In caso di errori, usa 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.

Questa formula tenta di valutare la colonna Frequenza standard e restituisce il relativo valore se non vengono rilevati errori. Se vengono rilevati errori nella colonna Frequenza standard, l'output è 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.

Screenshot della tabella con gli errori di frequenza standard sostituiti dalla tariffa speciale nella colonna Frequenza finale.

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, viene usato tale valore. In caso contrario, viene 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 esaminare in modo efficace solo i componenti di errore di un valore di errore alla volta. A questo punto si crea una nuova colonna personalizzata e si usa 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 e il valore appropriato o il record di errore.

Screenshot della tabella con la colonna Tutti gli errori aggiunti e gli errori visualizzati come Record.

È 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.
  • Tutti gli errori.valore: se il valore della colonna Frequenza standard non ha avuto alcun errore, questa colonna visualizza il valore della colonna Frequenza standard. Per i valori con errori questo campo non è disponibile e durante l'operazione di espansione questa colonna ha null valori.
  • Tutti gli errori.Errore: se il valore della colonna Frequenza standard ha avuto un errore, in questa colonna viene visualizzato il record di errore per il valore della colonna Frequenza standard. Per i valori senza errori, questo campo non è disponibile e durante l'operazione di espansione questa colonna ha 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 sotto la 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 è 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 è 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.

Screenshot della tabella finale con le colonne rimanenti con i tipi di dati appropriati.

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