
Die erste Lösung zur Verwaltung von Fehlersituationen besteht darin, diese zu vermeiden. Einige Fehlersituationen können leicht durch das Erstellen von Jobs unterbunden werden, sodass sie die Probleme berücksichtigen, die häufig zum Scheitern führen.
Einige Situationen sind jedoch unvermeidbar, z.B. Serverausfälle. Anschließend müssen Sie Ihre Datenflüsse entwerfen, um die fehlgeschlagene Situation wiederherzustellen.
Vermeidung von Fehlern
Sie können Fehler in Ihren Datenflüssen vermeiden, indem Sie:
- Verwenden Sie Bedingungen, damit der Datenfluss nur ausgeführt wird, wenn der Kontext korrekt ist.
- Verwenden Sie eine Schleife, um von vorne zu beginnen, bis der Kontext korrekt ist.
Vergessen Sie nicht, einen Ausweg hinzuzufügen, falls die Situation nie erreicht wird!
Ein Beispiel ist, wenn eine externe Datei erforderlich ist, um einen Job auszuführen. Verwenden Sie in diesem Fall die Funktion wait_for_file oder eine While-Schleife und die Funktion file_exists, um zu prüfen, ob die Datei an einem angegebenen Speicherort vorhanden ist, bevor Sie den Job ausführen.
Die While-Schleife ist ein Objekt mit Einzelverwendung, das in einem Workflow verwendet wird. Die While-Schleife wiederholt eine Folge von Schritten, solange eine Bedingung wahr ist.
In der Regel führen die während der While-Schleife ausgeführten Schritte zu einer Änderung der Bedingung, sodass die Bedingung schließlich nicht mehr erfüllt ist und der Workflow aus der While-Schleife beendet wird. Wenn sich die Bedingung nicht ändert, wird die While-Schleife nicht beendet.
Beispiel: Sie möchten, dass ein Workflow wartet, bis das System eine bestimmte Datei schreibt. Verwenden Sie eine While-Schleife, um mithilfe der Funktion file_exists auf das Vorhandensein der Datei zu prüfen. Solange die Datei nicht vorhanden ist, kann der Workflow für eine bestimmte Zeit in den Ruhemodus wechseln, bevor er erneut geprüft wird.
Da das System die Datei möglicherweise nie schreibt, fügen Sie der Schleife eine weitere Prüfung hinzu, z.B. einen Zähler, um sicherzustellen, dass die While-Schleife beendet wird. Ändern Sie also die While-Schleife, um die Existenz der Datei und den Wert des Zählers zu prüfen. Solange die Datei nicht vorhanden ist und der Zähler kleiner als ein bestimmter Wert ist, wiederholen Sie die While-Schleife. Setzen Sie in jeder Iteration der Schleife den Workflow in den Schlafmodus, und erhöhen Sie dann den Zähler.
Ebenen der Datenwiederherstellungsstrategien
Einige Fehler sind nicht vorhersehbar und führen zum Fehlschlagen des Jobs.
Die erneute Ausführung eines fehlgeschlagenen Jobs kann zu Duplikaten von Zeilen führen, die beim ersten Joblauf erfolgreich geladen wurden.
Sie müssen dann eine Möglichkeit finden, Ihre Jobs wiederherzustellen, damit sich die Datenbank in einem korrekten Zustand befindet und Sie mit dem Zeitplan fortfahren können.
- Gesamte Datenbank wiederherstellen
Verwenden Sie die Standard-RDBMS-Dienste, um den abgestürzten Datencache in einer gesamten Datenbank wiederherzustellen. Diese Option ist nicht im Umfang dieses Kurses enthalten.
- Verwenden Sie die Transaktionen:
Richten Sie Ihren Datenfluss so ein, dass er in eine Transaktion eingeschlossen wird, damit Tabellen in einem konsistenten Zustand bleiben.
- Aus teilweise geladenen Tabellen wiederherstellen:
Doppeltes Laden von Zeilen vermeiden.
- Fehlende Werte oder Zeilen wiederherstellen:
Ermitteln Sie fehlende Werte und verwalten Sie Zeilen, die nicht eingefügt werden konnten.
- Ausnahmen verwalten:
Stellen Sie sicher, dass alle Ausnahmen in einem Workflow verwaltet werden.
Abhängig von den Beziehungen zwischen Datenflüssen in Ihrer Anwendung können Sie eine Kombination dieser Techniken verwenden, um Fehler zu beheben.
Einrichten von Transaktionen
Wenn Ihr Datenfluss eine große Datenmenge laden muss oder abhängige Tabellen lädt, z.B. Kundenauftrags- und Kundenauftragspositionstabellen, möchten Sie nicht, dass Zeilen geladen werden, wenn einige andere nicht geladen werden.
Um die Performance und die Verwendung von Ressourcen zu verbessern, lädt SAP Data Services standardmäßig Tabellen in mehreren Transaktionen. Sie können die Option "Zeilen pro Commit" festlegen, um festzulegen, wie viele Zeilen in jeder Transaktion verarbeitet werden.
Wenn Ihr Datenfluss jedoch fehlschlägt, wurden möglicherweise bereits einige Zeilen in der Tabelle festgeschrieben, wenn der Job gestoppt wird.
Um diese Situation zu vermeiden, können Sie Data Services bitten, den gesamten Datenfluss in eine einzelne Transaktion einzubeziehen.

Teilweise geladene Daten
Um zu verhindern, dass doppelte Zeilen eingefügt werden, können mehrere Methoden verwendet werden:
- Um das Einfügen von Duplikaten zu vermeiden, verwenden Sie eine der folgenden Optionen:
- Schließen Sie die Table Comparison -Transformation in den Datenfluss ein, um fehlende Zeilen nur dann einzufügen, wenn die Tabelle mehr Zeilen und weniger Felder wie Faktentabellen enthält.
- Wählen Sie die Option Daten vor dem Laden aus Tabelle löschen oder Tabelle löschen und neu anlegen in der Zieltabelle, um Daten bei jeder Ausführung zu ersetzen. Diese Technik kann optimal sein, wenn die Änderungen an der Zieltabelle im Vergleich zur Größe der Tabelle zahlreich sind.
- Ändern Sie die Zieltabellenoptionen, um die Funktion zum Laden mit Autokorrektur zu verwenden, wenn eine Tabelle weniger Zeilen und mehr Felder enthält, z.B. Dimensionstabellen.
- Schließen Sie einen SQL-Befehl ein, um vorherige Teilaktualisierungen vor dem Laden der Tabelle zu entfernen.
Beim Laden mit Autokorrektur wird die Zieltabelle auf vorhandene Zeilen geprüft, bevor der Tabelle neue Zeilen hinzugefügt werden. Die Verwendung der Option zum Laden mit Autokorrektur kann jedoch Jobs verlangsamen. Betrachten Sie diese Technik, wenn die Zieltabelle groß ist und die Änderungen an der Tabelle relativ gering sind.
Preload-SQL-Befehle können teilweise Datenbankaktualisierungen entfernen, die während der unvollständigen Ausführung eines Steps in einem Job auftreten. Normalerweise löscht der Pre-Load-SQL-Befehl Zeilen basierend auf einer Variablen, die vor Beginn des Teileinfügungsschritts festgelegt wurde.
Notiz
Fehlende Werte oder Zeilen
- Fehlende Werte mit Validation- oder Query-Transformation verarbeiten
- Verarbeiten Sie fehlende Zeilen mit den Optionen Überlaufdatei verwenden.
Fehlende Zeilen sind Zeilen, die nicht in die Zieltabelle eingefügt werden können. Beispielsweise können Zeilen fehlen, wenn eine Primärschlüssel-Integritätsregel verletzt wird. Überlaufdateien helfen bei der Bearbeitung eines solchen Datenproblems.
Wenn Sie eine Überlaufdatei angeben und Data Services eine Zeile nicht in eine Tabelle laden kann, schreibt Data Services die Zeile stattdessen in die Überlaufdatei. Das Trace-Protokoll zeigt den Datenfluss an, in dem der Ladevorgang fehlgeschlagen ist, sowie den Speicherort der Datei. Verwenden Sie die Überlaufinformationen, um ungültige Daten in der Quelle oder Probleme in der Datenbewegung zu identifizieren. Jeder neue Lauf überschreibt die vorhandene Überlaufdatei.
Wenn Sie Überlaufdateien verwenden, müssen Sie einen Dateinamen und ein Dateiformat eingeben.
Für das Dateiformat haben Sie zwei Möglichkeiten:
- Wenn Sie Daten schreiben auswählen, können Sie Data Services verwenden, um die Daten aus der Überlaufdatei zu lesen, zu bereinigen und in die Zieltabelle zu laden.
- Wenn Sie SQL schreiben auswählen, können Sie die SQL-Befehle verwenden, um das Ziel manuell zu laden, wenn auf das Ziel zugegriffen werden kann.
Achtung