Erweiterte Funktionen in einem Flowgraph implementieren

Objective

After completing this lesson, you will be able to implementieren Sie erweiterte Transformationsknoten, verwenden Sie Variablen, und erstellen Sie Flussdiagramme aus vorhandenen Flussdiagrammen.

Erweiterte Transformationsknoten

Der Flowgraph bietet erweiterte Knoten für die folgenden Anwendungsfälle:

Sie haben gelernt, wie Sie einen Datensatz mithilfe eines Fallknotens in verschiedene Datensätze aufteilen. Aber wie flachen Sie ein Datenset basierend auf seinem Inhalt über mehrere Spalten hinweg ab? Wenn eine Spalte beispielsweise den Länderwert enthält, fügen wir jedes Land in eine eigene Spalte ein. Wie Sie sehen, können wir dies mit einem Pivot-Knoten tun.

Sie haben gelernt, wie Sie ein Attribut wie eine Telefonnummer abrufen und es einem Verkaufsdatensatz mit der entsprechenden Person hinzufügen. Wenn diese Person jedoch mehrere Telefonnummern hat, legt ein Join eine Kopie des Transaktionsdatensatzes mit dieser Person für jede Telefonnummer an. Angenommen, Sie benötigen nur die erste Telefonnummer, ein Lookup-Knoten ist das, was Sie benötigen. Mit einer Kombination aus einem Lookup-Knoten und einem Pivot-Knoten können Sie alle Telefonnummern erfassen.

Wenn sich ein Datensatz in einem Quellsystem ändert, möchten Sie in der Regel das Datenziel mit der Änderung aktualisieren. Sie können den vorhandenen Datensatz mit der neueren Version überschreiben, aber Sie können auch entscheiden, den vorhandenen Datensatz beizubehalten, ihn als "alt" zu kennzeichnen und den neuen Datensatz daneben zu laden. Auf diese Weise behalten Sie die alten Datensätze und stellen den neuen Datensatz dem Unternehmen zur Verfügung. Verwenden Sie dazu einen Knoten für die Historienerhaltung. Mit diesem speziellen Knoten können wir den alten und neuen Datensätzen automatisch Informationen zur zeitlichen Gültigkeit hinzufügen.

In der folgenden Tabelle sind alle Flowgraph-Knoten im Abschnitt Erweitert aufgeführt.

Erweiterte Knotentypen

KnotentypGroß-/Kleinschreibung

Historienerhaltung

Ermöglicht die Pflege älterer Versionen von Zeilen, wenn eine Änderung auftritt, indem neue Zeilen in einem Ziel generiert werden.

Lookup

Ruft einen oder mehrere Spaltenwerte aus einer Lookup-Tabelle ab, die einer von Ihnen definierten Lookup-Bedingung entsprechen.

Vorgang zuordnen

Sortiert Eingabedaten und ordnet Ausgabedaten zu.

Pivot

Erstellt eine Zeile mit Daten aus vorhandenen Zeilen.

Entpivotieren

Erstellt eine neue Zeile für jeden Wert in einer Spalte, die als Pivotspalte gekennzeichnet ist.

Tabellenvergleich

Vergleicht zwei Tabellen und erzeugt die Differenz zwischen ihnen als Datenset mit Zeilen, die als INSERT, UPDATE oder DELETE gekennzeichnet sind.

Sehen wir uns zwei wichtige Beispiele genauer an: den Lookup-Knoten und den Pivot-Knoten.

Angenommen, Sie benötigen eine Adresse oder Telefonnummer einer Person und haben ein Adressbuch mit allen Adressen und Nummern. Sie möchten die häufigste Adresse oder diejenige Adresse, die am besten zum Verkaufsdatum passt. Dann sollten Sie den Lookup-Knoten verwenden.

Was ist ein Lookup? Ein Lookup ist fast ein Join. Sie definieren Abgleichskriterien und fügen die entsprechenden Werte aus einer anderen Spalte hinzu, aber sie weist einige Unterschiede auf:

  • Die Lookup-Tabelle sollte sich beim Laden der Daten der Hauptsätze nicht dynamisch ändern. Daher kann die Lookup-Transformation in Echtzeit verarbeitet werden.
  • Sie können Lookup-Tabellenspalten angeben und Wertepaare sortieren, um eine Sortierung aufzurufen, die eine einzelne Lookup-Tabellenzeile auswählt, wenn mehrere Zeilen zurückgegeben werden.
  • Konfigurieren Sie Standardwerte in Form von Konstanten, die ausgegeben werden sollen, wenn keine Lookup-Tabellenzeilen zurückgegeben werden.
Auf dieser Folie wird erläutert, wie Lookup-Knoten durchsucht werden.

Der Lookup gibt nur ein Ergebnis pro People_Id zurück.

Wenn Sie jedoch zwei Ergebnisse wünschen, verwenden Sie eine Kombination aus einem Join und einem Pivot-Knoten, vorausgesetzt, der Kontaktzähler beginnt immer mit 1. Auf der linken Seite der folgenden Tabelle finden Sie das Ergebnis eines Joins. Auf der rechten Seite wird das Ergebnis des Pivot-Knotens mit dem gewünschten Ergebnis angezeigt.

Diese Folie zeigt, wie Lookups auf einem Pivot-Knoten funktionieren.

Wie funktioniert es? Sehen wir uns das Pivot-Knoten-Prinzip in einem anderen Beispiel mit Maßnahmen an.

Diese Folie erläutert den Pivot-Knoten.

Dieses Beispiel wird von der folgenden Benutzungsoberfläche erstellt:

Diese Folie zeigt die Benutzungsoberfläche des Pivot-Knotens.

Machen wir uns Schritt für Schritt mit dieser Vorgehensweise vertraut.

Konfigurieren eines Pivot-Knotens

Sie haben Daten mit einem kombinierten Schlüssel aus ID, Monat und Land. Sie möchten einen monatlichen Überblick über die Kosten und Erlöse pro Land erhalten. Eine Pivot-Tabelle kann dabei helfen, die Daten zusammenzufassen, indem sie sie in einem Ausgabe-Dataset platziert.

Sie möchten neue Spalten für verschiedene Monate anlegen und Daten aus mehreren Monaten in einer Zeile für jedes Land kombinieren. Dazu dient ein Pivot-Knoten mit Pivot-Achse Monat.

Für jeden eindeutigen Wert in einer Pivot-Achsenspalte wird eine Spalte im Ausgabe-Dataset erzeugt.

Schritte

  1. Fügen Sie in Ihrem Flowgraph einen Pivot-Knoten hinzu, und verbinden Sie seinen Vorgänger mit dem neuen Knoten.

  2. Wählen Sie im Abschnitt Achsenattribute die Option Klicken Sie hier, um die Achse auszuwählen. Wählen Sie die Spalte aus, für die Sie einen Pivot-Vorgang durchführen möchten, und wählen Sie dann OK. Für jeden Achsenwert wird ein Satz pivotierter Spalten generiert. Legen Sie einen Achsenwert für jeden eindeutigen Wert in der Achsenspalte an. Zur Laufzeit wird für jedes pivotierte Attribut und jeden eindeutigen Achsenwert im Abschnitt Achsenattribut eine neue Spalte angelegt.

  3. Wählen Sie Werte hinzufügen, um eine oder mehrere Spalten für die pivotierten Daten zu erstellen. Geben Sie den Spaltennamen in der Spalte Wert und ein Präfix in der Spalte Präfix ein. Die neuen Spalten mit ihren Präfixen werden in der Liste der Ausgabespalten angezeigt, nachdem Sie die Daten in den Spalten angegeben haben. Wenn Sie beispielsweise nach Monat verteilen, können Sie die Präfixe Jan für den Achsenwert (Monat) 1 und Feb für den Achsenwert (Monat) 2 generieren.

  4. Wählen Sie unter Datenspalten das Symbol + für jede Datenspalte, deren Werte Sie von Zeilen in Spalten pivotieren möchten. Sie können beispielsweise die Spalten Kosten und Erlöse auswählen, die Sie einbeziehen möchten. Beachten Sie, dass der Abschnitt Output ColumnsJan_Costs, Jan_Revenue,Feb_Costs und Feb_Revenue als neue Spalten generiert. (Der Unterstrich wird automatisch hinzugefügt, um den Präfixnamen vom Namen der pivotierten Spalte zu trennen.)

  5. Wählen Sie unter Ausgabespalten die Option Durchreichen, um die Spalten auszuwählen, die Sie ohne Pivotierung ausgeben möchten, in der Regel Attribute, z.B. Land. Die Durchlaufspalten werden in der Zieltabelle ohne Modifikation angezeigt.

  6. Legen Sie unten die Dublettenstrategie fest, um das Verhalten beim Auftreten eines Duplikats auszuwählen.

    • Wählen Sie Abbrechen, wenn Sie den Transformationsprozess abbrechen möchten.
    • Wählen Sie Erste Zeile, wenn Sie den Wert in der ersten Zeile speichern möchten.
  7. Wählen Sie Übernehmen, um zum Flowgraph zurückzukehren.

Ergebnis

Sie haben festgelegt, wie die Daten transformiert werden.

SAP-HANA-Smart-Data-Quality-/Data-Quality-Management-Knoten

SAP HANA stellt Flowgraph-Knoten bereit, die sich auf die Datenqualität beziehen.

Die Datenqualität deckt mehrere Themen ab. Dazu gehören die Deduplizierung von Datensätzen, die Adressbereinigung, die Generierung fehlender Daten und die Anreicherung von Datensätzen mit geografischen Informationen.

SAP HANA On-Premise und SAP HANA Cloud unterstützen die Datenqualität, bieten jedoch unterschiedliche Flowgraph-Knoten.

SAP HANA On-Premise stellt mehrere Knoten bereit, die die Datenqualität unterstützen. Diese sind:

  • Abgleichen – Datensätze suchen und bearbeiten, die möglicherweise Duplikate sind
  • Bereinigen - hochzuladende Felder und Generieren zusätzlicher Informationen
  • Geocode – geografische Daten für einen Datensatz generieren

Für SAP HANA Cloud sind die wichtigsten Datenqualitätsfunktionen über einen abonnementbasierten Microservice verfügbar. Um zu konfigurieren, wie dieser Microservice in Ihrem Flowgraph verwendet wird, schließen Sie den Knoten Data Quality Management Microservice Cleanse (DQMm Cleanse) ein.

Der Cleanse-Knoten identifiziert, parst, validiert und formatiert die folgenden Daten:

  • Adresse
  • Personenname (*)
  • Organisationsname (*)
  • Berufsbezeichnung (*)
  • Telefonnummer (*)
  • E-Mail-Adresse (*)

Die Adressbereinigung folgt länderspezifischen Standards und Verzeichnissen.

Diese Folie erläutert, wie die Bereinigung funktioniert.

(*) Diese Elemente sind nur für SAP HANA On-Premise verfügbar.

Der Knoten hat einen einzelnen Eingangsport und einen einzelnen Ausgangsport.

Der Knoten verarbeitet Eingabedaten und vergleicht sie mit Referenzdaten, die in länderspezifischen Adressverzeichnissen gespeichert sind. Die Verzeichnisse können heruntergeladen und im Rahmen der Installation von SAP HANA Smart Data Integration oder Smart Data Qualitiy für SAP HANA On-Premise implementiert werden.

Der Knoten Geocode generiert Breiten- und Längengradkoordinaten für eine Adresse und Adressen aus Breiten- und Längengradkoordinaten.

Auf dieser Folie wird Geocode erläutert.

Der Knoten interpretiert die Eingabedaten und vergleicht sie mit Referenzinformationen aus lokalen geografischen Informationsverzeichnissen.

Detaillierte Informationen zum Knoten Geocode finden Sie im "Modeling Guide for SAP HANA Smart Data Integration and SAP HANA Smart Data Quality" im SAP Help Portal.

Detaillierte Informationen zur Installation der Adressverzeichnisse finden Sie im "Installation and Configuration Guide" auf dem SAP Help Portal.

Verwenden von Variablen in Flussdiagrammen

Wenn Sie einen Flowgraph definieren, benötigen viele der Knoten Werte für uns in Filtern oder Ausdrücken. Das Fixieren des Werts ist möglicherweise nicht effizient. In diesem Fall definieren Sie eine Variable, sodass Sie den Wert nicht während der Design-Zeit des Flowgraphs angeben müssen.

Es gibt viele Gründe für die Implementierung von Variablen, darunter:

  • Möglicherweise möchten Sie einen Flowgraph definieren und in mehreren Fällen wiederverwenden.
  • Die Filterwerte sind erst zum Ausführungszeitpunkt des Flowgraphs bekannt.

Wenn Sie Variablen anlegen, können Sie sie in Knoten verwenden, die sie akzeptieren, z.B. Projektionsknoten und Aggregationsknoten.

Beispiel: In einem Projektionsknoten möchten Sie möglicherweise nur die Datensätze für ein bestimmtes Land, z.B. Spanien, verarbeiten. In diesem Fall legen Sie eine Variable an, um den Länderwert in den Flowgraph-Eigenschaften bereitzustellen. Sie können die Variable dann in einer Filterbedingung oder in einem Ausdruck verwenden, indem Sie den Variablennamen mit $$ umschließen.

Sie haben z.B. die Variable P_COUNTRY definiert. Sie verwenden sie wie folgt:

Code Snippet
1
"Filter1_Input"."COUNTRY" = $$P_COUNTRY$$

Die Variablen werden zum Zeitpunkt der Ausführung bereitgestellt. Das bedeutet, dass Sie die Flowgraph-Definition nicht jedes Mal ändern müssen, wenn Sie verschiedene Länder auswählen möchten.

Wenn Sie die Prozedur ausführen, können Sie den Variablenwert für jede Ausführung angeben.

Geschachtelte Flowgraphs und Prozeduren in Flowgraphs

Sie wissen bereits, dass Sie SQL-Ausdrücke in Knoten wie Projektions-, Join- oder Case-Knoten verwenden können. Wenn Sie jedoch eine Folge von SQL-Ausdrücken anwenden müssen, kann das Hinzufügen mehrerer Knoten mühsam und schwierig zu pflegen sein. In einigen Fällen hängt die Anweisung vom Inhalt, dem aktuellen Datum oder einer manuellen Auswahl ab, die von der Person getroffen wird, die den Flowgraph aufruft.

Die Lösung besteht darin, einen Prozedurknoten zu implementieren. Im Folgenden finden Sie einige Beispiele dafür, warum Sie dies tun könnten:

  • Implementieren einer komplexen Sequenz von SQL-Anweisungen mit nur einem Knoten
  • Zum Implementieren einer SQL-Anweisung, die von einem Parameter abhängt, der nicht vom Vorgängerknoten bereitgestellt wird
  • So verwenden Sie ein vorhandenes SQLScript wieder:
  • So verwenden Sie einen vorhandenen Flowgraph wieder:
Diese Folie zeigt, wie ein Prozedurknoten zum Aufrufen von Datenbankprozeduren verwendet wird.

Mit dem Prozedurknoten können Sie Datenbankprozeduren (d.h. in SQLScript) innerhalb eines Flowgraphs aufrufen.

Der Prozedurknoten hat einen Eingangs- oder Ausgangsport für jeden IN- oder OUT-Tabellenparameter der Prozedur.

Wenn eine Prozedur skalare Eingabeparameter hat, stammen die Werte für diese Parameter aus Variablen, die im Flowgraph definiert sind.

Diese Variablen werden automatisch angelegt. Wenn der Flowgraph ausgeführt wird, geben Sie für jede Variable einen Wert an, damit er an die skalaren Eingabeparameter übergeben werden kann.

Notiz

Der Prozedurknoten ist nicht für die Echtzeitverarbeitung verfügbar.

Geschachtelte Flussdiagramme

Wenn Sie einen vorhandenen Basis-Flowgraph haben, der von einem oder mehreren neuen Flowgraphs der obersten Ebene aufgerufen werden soll, können Sie ihn als Prozedur implementieren. Anschließend kann dieses Verfahren im neuen Flowgraph implementiert werden.

Die Abbildung zeigt, dass das Deployment eines vorhandenen Flowgraphs als Prozedur implementiert werden kann. Diese Prozedur kann in einem neuen Flowgraph wiederverwendet werden.

Was sind die Vorteile?

  • Indem Sie denselben Basis-Flowgraph referenzieren, müssen Sie den gemeinsamen Teil der Transformation nur einmal definieren.
  • Wenn sich die Anforderung für den Basis-Flowgraph ändert, müssen Sie nur den Basis-Flowgraph anpassen. Alle Flowgraphs der obersten Ebene bleiben konsistent, da sie automatisch die neue Logik verwenden.
  • Wenn verschiedene Prozeduren oder Flowgraphs zur selben Startzeit und mit demselben Wiederholungsmuster eingeplant werden sollen, können Sie alle aus einem Master-Flowgraph einschließen und dann nur den Master-Flowgraph einplanen.

Nun müssen Sie also erfahren, wie ein Job zum Ausführen eines Flowgraphs eingeplant werden kann.