Gemeinsame Knoten in einem Flowgraph implementieren

Objective

After completing this lesson, you will be able to verarbeiten Sie Datensets mithilfe von Flowgraph-Knoten, um Daten zu kombinieren, zu transformieren und zu teilen.

Union oder Join?

Wenn Sie Daten kombinieren möchten, gibt es zwei Ansätze. Sie können entweder eine Union oder einen Join auswählen.

Eine Union-Operation fügt Zeilen hinzu, eine Join-Operation fügt Spalten hinzu. Die Quellen einer Union stellen dieselbe Art von Informationen in verschiedenen Zeilen mit ähnlicher Struktur und ähnlichen Feldern bereit. Die Quellen eines Joins liefern den Datentyp von Informationen in verschiedenen Spalten mit unterschiedlicher Struktur und einigen übereinstimmenden Feldern mit denselben Werten.

Eine Union-Operation fügt Datensätze zu vorhandenen Datensätzen hinzu, um einen kombinierten, größeren Datensatz zu bilden. Die hinzugefügten Datensätze stellen in der Regel dieselbe Art von Informationen aus einem anderen Bereich bereit, z.B. Kundenaufträge von zwei Regionen oder aus zwei Jahren. Die Strukturen der beiden Quellen sollten kompatibel sein. Das bedeutet, dass die Spalten, die Teil der Union sind, übereinstimmende Datentypen haben müssen.

Eine Join-Operation hängt Spalten aus einem zweiten Dataset an ein vorhandenes Dataset an. Die hinzugefügten Spalten enthalten zusätzliche, zugehörige Informationen, um den ursprünglichen Datensatz anzureichern. Ihr Kundenauftragsdatensatz enthält beispielsweise nur die Produkt-ID und nicht die Produktbeschreibung. In diesem Fall können Sie den Kundenauftragsdatensatz mit dem entsprechenden Produktstammsatz verknüpfen, um die Produktbeschreibung zu erfassen und die Spalte für die Produktbeschreibung zum Kundenauftragsdatensatz hinzuzufügen. Ihr Originaldatensatz enthält nun eine zusätzliche Spalte.

Union

Was können Sie tun, wenn Sie verschiedene Quellsysteme für Kundenaufträge aus verschiedenen Ländern haben und einen vollständigen weltweiten Datensatz benötigen? Der Union-Knoten führt die Eingabedaten aus zwei oder mehr Vorgängerknoten mit identischer Spaltenstruktur zusammen. Wenn Sie mehr als zwei Quellen haben, wählen Sie +, um einen zusätzlichen Eingabeport anzulegen.

Die Abbildung zeigt ein Beispiel für einen Union-Knoten in einem Flowgraph: Es kombiniert zwei Quellen mit jeweils 2 Zeilen zu einem Ziel mit 4 Zeilen.

Notiz

Benennen Sie den Eingabeport um, um die Bedeutung der eingehenden Daten aus dem Vorgängerknoten widerzuspiegeln.

Alle eingehenden Spalten werden vom Union-Knoten übergeben. Fügen Sie daher einen Vorgängerprojektionsknoten hinzu, um irrelevante Spalten zu entfernen, und benennen Sie die relevanten Spalten bei Bedarf um. Der Union-Knoten hat einen einzelnen Ausgabeport, der eine Vereinigung aller Datensätze aus allen Eingaben generiert, die an den nächsten Knoten im Flowgraph übergeben werden sollen. Nachdem Sie die Drucktaste inspect gewählt haben, sehen Sie die einzige verfügbare Eigenschaft Union All. Er verhält sich wie in der folgenden Tabelle erläutert.

Wirkung des Eigentums Union All

Einstellung Alle vereinigenAusgabedatensatz
AusDoppelte Datensätze werden entfernt.
einAlle Datensätze bleiben erhalten.

Join

Angenommen, Sie haben eine Tabelle mit Ländercodes, möchten aber auch den Ländernamen in die Ausgabe aufnehmen. Der Ländername wird in einer separaten Tabelle gespeichert. Anschließend müssen Sie einen Join-Knoten angeben, um die zusätzliche Spalte abzurufen und Ihrer Ausgabe hinzuzufügen.

Die Abbildung zeigt Daten zum Zweck von Join-Knoten: Es gibt zwei Eingabe-Datensets. Sie werden durch eine Join-Bedingung kombiniert. Außerdem können Sie Spalten umbenennen und entfernen.

Der Join-Knoten führt eine SQL-SELECT-Anweisung für mehrere eingehende Datensets aus, kombiniert sie basierend auf einer Join-Bedingung und legt ein eindeutiges Ausgangsdatenset an. Ausgabespalten können entfernt oder umbenannt werden.

Die Abbildung zeigt zwei Quelltabellen, Sales2, mit Datensätzen für ID 1, 2 und 5 sowie Stammdaten 1 und 2. Ein Join-Knoten kann als Inner Join definiert werden, der nur übereinstimmende Datensätze übergibt, oder als Left Join, der alle Felder übergibt, auch die ohne Stammdaten.

Welche Zeilen an die Ergebnismenge übergeben werden, wird durch den Join-Typ bestimmt. Folgende Join-Typen werden unterstützt:

  • Inner Join (nur Zeilen mit übereinstimmenden Partnern)
  • Left Outer Join (alle Zeilen des linken Join-Partners)
  • Right Outer Join (alle Zeilen vom rechten Join-Partner)
  • Full Outer Join (alle Zeilen von beiden Join-Partnern)
  • Cross Join (alle Kombinationen aller Zeilen)

Ein Join kann eine wichtige Voraussetzung sein, wenn Sie Werte auf Attributebene aggregieren möchten, z.B. die Umsatzsumme pro Produktkategorie. Natürlich benötigen Sie einen weiteren Knoten für die Aggregation nach dem Join.

Daten aggregieren

Eine allgemeine Anforderung der Datenbereitstellung besteht darin, Quelldaten zusammenzufassen und das Ergebnis in einer Zieltabelle in SAP HANA zu speichern. Dies wird als Aggregation bezeichnet. Eine Aggregation wird definiert, indem eine oder mehrere zu aggregierende Kennzahlen, ein Aggregationsverhalten für jede Kennzahl und ein oder mehrere Attribute, die die Aggregationsebene bestimmen, ausgewählt werden.

Beispiel: Ich benötige die durchschnittliche (Aggregationsverhalten) Absatzmenge (Kennzahl) nach Region (Attribut) für jedes Jahr (Attribut).

Diese Folie erläutert, wie die Datenaggregation

funktioniert.

Sie implementieren die Aggregation über einen Flowgraph-Knoten. Der Knoten Aggregation basiert immer auf einem einzelnen eingehenden Datensatz und generiert ein einzelnes ausgehendes Datenset. Jede ausgehende Zeile ist das Ergebnis der Aggregation mehrerer eingehender Zeilen; ihre Werte werden basierend auf der Aggregationsknotenkonfiguration berechnet.

Konzentrieren wir uns nun auf die Konfiguration der Ausgabespalten. Sie können Spalten entfernen. Für jede verbleibende Spalte kann eine der folgenden Aktionen verwendet werden:

  • Gruppieren nach
  • Zählung
  • Min.
  • Max
  • Durchschnitt
  • Summe

Die Gruppieren-nach-Spalten bestimmen die Aggregationsebene. Alle Zeilen mit identischer Wertekombination der Gruppieren-nach-Spalten werden in einer einzigen Ausgangszeile aggregiert. Das bedeutet, dass zwei beliebige Ausgabezeilen in mindestens einer der Gruppieren-nach-Spalten unterschiedliche Werte haben.

Die anderen Spalten werden basierend auf dem angegebenen Aggregationsverhalten berechnet. Sie geben beispielsweise die Summe, den Durchschnittswert oder die Anzahl der eindeutigen Originalwerte zurück.

In Kombination mit der Aggregation können Sie Folgendes tun:

  • Ausgangsspalten umbenennen
  • Wenden Sie Filter auf die Eingangszeilen an, indem Sie Filterkriterien angeben. Nehmen Sie beispielsweise nur französische Verkäufe in die Aggregation auf.
  • Wenden Sie Filter auf die Ausgangszeilen an, indem Sie ein HAVING-Kriterium angeben. Generieren Sie beispielsweise nur dann eine Ausgabezeile, wenn der verdichtete Umsatz größer als 10.000 EUR ist.

Datensets aufteilen

Sie können eine Datenquelle in mehrere Ausgaben verteilen.

Im Folgenden finden Sie einige Gründe, warum Sie dies tun möchten:

  • Sie können verschiedene Speicherstrategien implementieren, z.B. Laden in den In-Memory-Speicher für aktuelle Datensätze und Laden in den Festplattenspeicher für ältere Datensätze.
  • Sie können Daten auf verschiedenen Aggregationsebenen speichern. Sie könnten z.B. ältere Daten aggregieren und in eine Tabelle laden und die neueren Daten auf Zeilenebene belassen und in einer separaten Tabelle speichern.
  • Möglicherweise ist eine andere Transformationslogik erforderlich. Zum Beispiel eine Bonusberechnung, die von der Jobrolle abhängt, z.B. leitender Angestellter oder Vertriebsbeauftragter.
Diese Folie erläutert den Fallknoten.

Der Knoten Case empfängt Daten von einem einzelnen Eingangsport und verteilt die Zeilen unverändert auf mehrere Ausgangsports.

Für jeden Ausgangsport wird ein boolescher Ausdruck definiert, um festzulegen, welche Eingangszeilen an ihn übertragen werden.

Ein Ausgangsport ist als "Standard" gekennzeichnet, um alle Eingangszeilen zu empfangen, die nicht an einen der anderen Ports gesendet wurden.

Diese Folie zeigt ein Beispiel für einen Fallknoten.

Nach dem Fallknoten können Sie weitere Knoten wie Projektions- oder Aggregationsknoten hinzufügen, um ein spezifisches Transformationsverhalten für jede der Teilmengen der vom Fallknoten generierten Daten zu definieren. Bei Bedarf können Sie die verschiedenen Ergebnismengen in einer einzigen Ausgabe mit einem zusätzlichen Union-Knoten zusammenführen.

Starten Sie das folgende Video, um zu erfahren, wie Sie einen Flowgraph mit einer Vielzahl von Knoten anlegen können, um ein komplexes Datentransformationsbeispiel zu verarbeiten.