FehlerbehandlungError handling

Ähnlich wie Excel und die DAX-Sprache über eine- IFERROR Funktion verfügen Power Query über eine eigene Syntax zum Testen und Auffangen von Fehlern verfügt.Similar to how Excel and the DAX language have an IFERROR function, Power Query has its own syntax to test and catch errors.

Wie im Artikel zur Behandlung von Fehlern in Power Queryerwähnt, können Fehler entweder auf Schritt-oder Zellen Ebene auftreten.As mentioned in the article on dealing with errors in Power Query, errors can appear either at the step or cell level. In diesem Artikel geht es um die Art und Weise, wie Sie Fehler auf der Grundlage unserer eigenen spezifischen Logik erfassen und verwalten können.This article will focus on how you can catch and manage errors based on our own specific logic.

Hinweis

Um dieses Konzept zu veranschaulichen, wird in diesem Artikel eine Excel-Arbeitsmappe als Datenquelle verwendet.To demonstrate this concept, this article will use an Excel Workbook as its data source. Die hier vorgestellten Konzepte gelten für alle Werte in Power Query und nicht nur für die Werte, die aus einer Excel-Arbeitsmappe stammen.The concepts showcased here apply to all values in Power Query and not only the ones coming from an Excel Workbook.

Anwenden von bedingter Logik basierend auf FehlernApplying conditional logic based on errors

Die Beispiel Datenquelle für diese Demo ist eine Excel-Arbeitsmappe mit der folgenden Tabelle:The sample data source for this demonstration is an Excel Workbook with the following table:

Beispiel Daten aus Excel

Diese Tabelle aus einer Excel-Arbeitsmappe enthält Excel-Fehler, wie z . b. #NULL!, #ref! und #DIV/0!This table from an Excel Workbook has Excel errors such as #NULL!, #REF!, and #DIV/0! in der Spalte Standard Rate .in the Standard Rate column. Wenn Sie diese Tabelle in den Power Query-Editor importieren, zeigt die folgende Abbildung, wie Sie aussieht.When you import this table into the Power Query Editor, the following image shows how it will look.

Beispiel Tabelle in Power Query

Beachten Sie, dass die Fehler aus der Excel-Arbeitsmappe mit dem [Error] Wert in den einzelnen Zellen angezeigt werden.Notice how the errors from the Excel workbook are shown with the [Error] value in each of the cells.

In diesem Fall besteht das Ziel darin, eine neue Spalte Final Rate zu erstellen, die die Werte aus der Spalte Standard Rate verwendet.In this case, the goal is to create a new Final Rate column that will use the values from the Standard Rate column. Wenn Fehler auftreten, wird der Wert aus der Spalte für den entsprechenden Sondersatz verwendet.If there are any errors, then it will use the value from the correspondent Special Rate column.

Hinzufügen einer benutzerdefinierten Spalte mit der try otherwise Syntax undAdd custom column with try and otherwise syntax

Um eine neue benutzerdefinierte Spalte zu erstellen, wechseln Sie zum Menü Spalte hinzufügen , und wählen Sie benutzerdefinierte Spalte aus.To create a new custom column, go to the Add column menu and select Custom column. Geben Sie im Fenster benutzerdefinierte Spalte die Formel ein try [Standard Rate] otherwise [Special Rate] .In the Custom column window, enter the formula try [Standard Rate] otherwise [Special Rate]. Benennen Sie diese neue Spalte als abschließende Rate.Name this new column Final Rate.

Andernfalls benutzerdefinierte Spalte ausprobieren

Die obige Formel versucht, die Spalte " Standard Rate " auszuwerten und gibt ihren Wert aus, wenn keine Fehler gefunden werden.The formula above will try to evaluate the Standard Rate column and will output its value if no errors are found. Wenn Fehler in der Spalte Standard Rate gefunden werden, ist die Ausgabe der Wert, der nach der Anweisung definiert ist otherwise . Dies ist in diesem Fall die Spalte für den Sondersatz .If errors are found in the Standard Rate column, then the output will be the value defined after the otherwise statement, which in this case is the Special Rate column.

Nachdem Sie den richtigen Datentypen für alle Spalten in der Tabelle hinzugefügt haben, wird in der folgenden Abbildung gezeigt, wie die letzte Tabelle aussieht.After adding the correct data types to all of the columns in the table, the following image shows how the final table looks.

Letzte Tabelle andernfalls versuchen

Abfangen eines Fehlers mit try und Anwenden benutzerdefinierter bedingter LogikCatching an error with try and applying custom conditional logic

Wenn Sie dieselbe Beispiel Datenquelle wie im vorherigen Abschnitt verwenden, besteht das neue Ziel darin, eine neue Spalte für die endgültige Rate zu erstellen.Using the same sample data source as the previous section, the new goal is to create a new column for the Final Rate. Wenn der Wert aus dem Standard Satz vorhanden ist, wird dieser Wert verwendet.If the value from the Standard Rate exists, then that value will be used. Andernfalls wird der Wert aus der Spalte " Sondersatz " verwendet, mit Ausnahme der Zeilen mit einem #REF! Fehler.Otherwise the value from the Special Rate column will be used, except for the rows with any #REF! error.

Hinweis

Der einzige Zweck, den Fehler auszuschließen, #REF! besteht in Demonstrationszwecken.The sole purpose of excluding the #REF! error is for demonstration purposes. Mit den in diesem Artikel vorgestellten Konzepten können Sie alle Fehlerursachen, Meldungen oder Details Ihrer Wahl als Ziel angeben.With the concepts showcased in this article, you can target any error reasons, messages, or details of your choice.

Wenn Sie einen der Leerzeichen neben dem Fehlerwert auswählen, wird der Detailbereich unten auf dem Bildschirm angezeigt.When you select any of the whitespace next to the error value, you get the details pane at the bottom of the screen. Der Bereich Details enthält die Fehlerursache, DataFormat.Error und die Fehlermeldung Invalid cell value '#REF!' :The details pane contains both the error reason, DataFormat.Error, and the error message, Invalid cell value '#REF!':

Beispiel Fehler

Sie können nur eine Zelle gleichzeitig auswählen, sodass Sie effektiv nur die Fehler Komponenten eines Fehler Werts gleichzeitig sehen können.You can only select one cell at a time, so you can effectively only see the error components of one error value at a time. Hier erstellen Sie eine neue benutzerdefinierte Spalte und verwenden den try Ausdruck.This is where you'll create a new custom column and use the try expression.

Benutzerdefinierte Spalte mit try Syntax hinzufügenAdd custom column with try syntax

Um eine neue benutzerdefinierte Spalte zu erstellen, wechseln Sie zum Menü Spalte hinzufügen , und wählen Sie benutzerdefinierte Spalte aus.To create a new custom column, go to the Add column menu and select Custom column. Geben Sie im Fenster benutzerdefinierte Spalte die Formel ein try [Standard Rate] .In the Custom column window, enter the formula try [Standard Rate]. Benennen Sie diese neue Spalte mit allen Fehlern.Name this new column All Errors.

Verwenden von Try in einer benutzerdefinierten Spalte

Der try Ausdruck konvertiert Werte und Fehler in einen Daten Satz Wert, der angibt try , ob der Ausdruck einen Fehler behandelt hat, sowie den richtigen Wert oder den Fehler Daten Satz.The try expression converts values and errors into a record value that indicates whether the try expression handled an error or not, as well as the proper value or the error record.

Daten Satz Werte testen

Sie können diese neu erstellte Spalte mit Daten Satz Werten erweitern und die verfügbaren Felder überprüfen, die erweitert werden sollen, indem Sie das Symbol neben der Spaltenüberschrift auswählen.You can expand this newly created column with record values and look at the available fields to be expanded by selecting the icon next to the column header.

Daten Satz Werte erweitern

Mit diesem Vorgang werden drei neue Felder verfügbar gemacht:This operation will expose three new fields:

  • Alle Fehler. HasError — zeigt an, ob der Wert in der Spalte " Standard Rate " einen Fehler aufweist oder nicht.All Errors.HasError—displays whether the value from the Standard Rate column had an error or not.
  • Alle Fehler. Wert — Wenn der Wert aus der Spalte Standard Rate keinen Fehler aufweist, wird in dieser Spalte der Wert aus der Spalte Standard Rate angezeigt.All Errors.Value—if the value from the Standard Rate column had no error, this column will display the value from the Standard Rate column. Bei Werten mit Fehlern ist dieses Feld nicht verfügbar, und während des Erweiterungs Vorgangs weist diese Spalte null Werte auf.For values with errors this field won't be available, and during the expand operation this column will have null values.
  • Alle Fehler. Fehler — Wenn der Wert aus der Spalte " Standard Rate " einen Fehler aufweist, wird in dieser Spalte der Fehler Daten Satz für den Wert aus der Spalte " Standard Rate " angezeigt.All Errors.Error—if the value from the Standard Rate column had an error, this column will display the error record for the value from the Standard Rate column. Für Werte ohne Fehler ist dieses Feld nicht verfügbar, und während des Erweiterungs Vorgangs weist diese Spalte null Werte auf.For values with no errors, this field won't be available, and during the expand operation this column will have null values.

Erweiterte Felder ausprobieren

Zur weiteren Untersuchung können Sie die Spalte alle Fehler. Fehler erweitern, um die drei Komponenten des Fehler Datensatzes zu erhalten:For further investigation, you can expand the All Errors.Error column to get the three components of the error record:

  • FehlerursacheError reason
  • FehlermeldungError message
  • FehlerdetailError detail

Nachdem der Erweiterungs Vorgang durchgeführt wurde, wird im Feld alle Fehler. Error. Message die spezifische Fehlermeldung angezeigt, in der Sie genau wissen, welche Excel-Fehler in den einzelnen Zellen vorliegen.After doing the expand operation, the All Errors.Error.Message field displays the specific error message that tells you exactly what Excel error each cell has. Die Fehlermeldung wird aus dem Fehlermeldungs Feld des Fehler Datensatzes abgeleitet.The error message is derived from the Error Message field of the error record.

Bestimmte Fehlermeldung

Hinzufügen einer bedingten SpalteAdd a conditional column

Nun können Sie mit jeder Fehlermeldung in einer neuen Spalte eine neue bedingte Spalte mit dem Namen Final Rate und den folgenden Klauseln erstellen:Now with each error message in a new column, you can create a new conditional column with the name Final Rate and the following clauses:

  • Wenn der Wert in der Spalte alle Fehler. Errors. Message entspricht null , ist die Ausgabe der Wert aus der Spalte Standard Rate .If the value in the All Errors.Errors.Message column equals null, then the output will be the value from the Standard Rate column.
  • Andernfalls ist die Ausgabe der Wert aus der Spalte "Sondersatz", wenn der Wert in der Spalte " alle Fehler. Fehler. Message " Invalid cell value '#REF!'. ist .Else, if the value in the All Errors.Errors.Message column equals Invalid cell value '#REF!'., then the output will be the value from the Special Rate column.
  • Andernfalls NULL.Else, null.

Bedingte Spalte aus Fehlermeldung

Nachdem Sie nur die Spalten " Account", " Standard Rate", " Special Rate" und " Final Rate " beibehalten und den richtigen Datentyp für jede Spalte hinzugefügt haben, sehen Sie in der folgenden Abbildung, wie die letzte Tabelle aussieht.After keeping only the Account, Standard Rate, Special Rate, and Final Rate columns, and adding the correct data type for each column, the following image what the final table looks like.

Abschließende Tabelle mit Datentypen

Weitere RessourcenMore resources