SAP Data Services Verwendung in SAP Data Intelligence

Seit einigen Jahren gibt es SAP Data Intelligence auf dem Markt.Nebenbei gibt es auch unsere On premise Lösung SAP Data Services die sehr umfangreiche ETL Funktionalitäten bietet. Bisher konnte man “nur” Jobs, die in Data Services modelliert wurden, antriggern, sodass die Daten via Data Services ausgeführt wurden. Man musste diesen Prozess im Design Client von Data Services modellieren inkl. Quelle und Ziel. Mit Hilfe von Data Intelligence konnte man anschließend auf die gespeicherten Daten im Ziel zugreifen und weiterarbeiten.

Nun gibt es aber eine neue Funktion die es Kunden ermöglicht, kleinere Prozesse in Data Intelligence direkt zu modellieren und in Data Services ausführen zu lassen. Das hat natürlich einen riesen Mehrwert, denn nun können bestehende Data Services Kunden ihr Wissen weiterverwenden und innerhalb Data Intelligence ihr Wissen weiterverwenden und um die zusätzlichen Funktionen innerhalb Data Intelligence erweitern!

Um zu sehen wie man so etwas machen kann, habe ich hier ein kleines Beispiel durchgeführt:

Zuerst suchen wir den Operator in Data Intelligence. Ich verwende hier die Modeler Version 2113.15.27 in der SAP Cloud Umgebung via SAP BTP:

Aktuell gibt es diesen Operator (Data Services Transform) sowohl in der Generation 1 wie auch in Generation 2.

Gen1%20Operator

Gen1 Operator

Gen2%20Operator

Gen2 Operator

Es gibt nun in Generation1 zwei verschiedene Operatoren:

Data%20Services%20Operatoren%20in%20Gen1

Data Services Operatoren in Gen1

Nummer 1 ist der hier vorgestellte “Data Services Transform” Operator und

Nummer 2 ist der schon länger existierende “SAP Data Services Job” Operator, der dazu dient, bestehende Data Services Jobs zu orchestrieren, sprich anzutriggern.

Wir erstellen nun eine neue Pipeline und fügen hier den “Data Services Transform” in Gen1 hinzu:

Um nun diesen Operator zu konfigurieren, doppelklicken wir auf diesen und es öffnet sich die Konfiguration:

Nun müssen zuerst die Verbindungseinstellungen hinterlegt werden, denn es können durchaus mehrere Verbindungen zu Data Services Servern vorhanden sein. Nur wenn diese auch im Connection Management hinterlegt wurden, können diese auch selektiert werden. In diesem Fall ist nur ein System hinterlegt, welches durch die Selektion im Feld “Connection ID” erscheint:

Anschließend wählt man das Repository, welches für die Speicherung der Entwicklung genutzt werden soll und gleichzeitig die möglichen Quellen/Ziele definiert, welche im Operator verwendet werden können!

Anschließend wählt man noch einen Jobserver. Das ist notwendig, denn es können zur Lastverteilung auch mehrere Jobserver vorhanden sein:

Nun gibt es noch die “System Configuration” und die “Substitution Parameter”.

Wenn man bsp. eine 3 Systemlandschaft hat, in welcher die gleiche Tabelle vorkommt, kann man das bei den Verbindungsparametern direkt hinterlegen. Damit kann man sehr einfach und unkompliziert vor dem Starten eines Jobs selektieren, gegen welche Systemlandschaft man sich verbinden möchte und das System nutzt die hinterlegten Einstellungen automatisch und man kann bsp. Produktionsdaten als Quelle verwenden, aber die Ergebnisse in die Testumgebung schreiben. Das ist sehr hilfreich wenn man oft transportiert oder viele Verbindungen hat in einem Job.

“Substitution Parameter” wiederum werden als konstante Werte auf der Repository Ebene konfiguriert und verwendet. So kann jedes Repository unterschiedliche Parameter definieren, aber überall die gleiche “Variable” einsetzen. Diese können hier selektiert werden, müssen aber vorab in Data Services definiert worden sein. Sie können hier nicht neu angelegt werden.

Springen wir nun zum grafischen Editor um die Inhalte des Jobs zu konfigurieren. Dazu klickt man auf den Editor im oberen Feld:

Es erscheinen im rechten Feld nun andere Werte als in der Konfigurationssicht:

Dies sind die ” DataSource” und “Projection”.

Wählen wir DataSource aus um eine hinterlegte Quelle zu selektieren, indem wir via Drag&Drop den Operator ins Projektfeld ziehen:

Via Doppelklick darauf öffnen wir die Konfiguration und selektieren eine vorhandene Quelle (aus Data Services!)

Wie man nun sehen kann, habe ich aus dem vorhandenen Repository eine Quelle selektiert, die ich verwenden möchte. Sobald man auf ok klickt, erscheinen die Metadaten der Quelle:

Damit man nun die Struktur anpassen kann, zieht man ein “Projection” Operator in den Editor:

Dieser wird nun verbunden mit der “Data Source”:

Jetzt muss man nur noch die gewünschte Zielstruktur definieren im “Projection” Operator:

Hierzu selektiert man auf der rechten Seite Spalte für Spalte und zieht sie ins rechte “Ziel”:

Nun kann man die Spaltennamen ändern, neue hinzufügen, andere wieder löschen oder auch Datentypen ändern:

Jetzt kann man noch die vorhandene Quelle “filtern”:

Ein bisschen versteckt findet man auf der rechten Seite den “SQL Helper”, welche die möglichen SQL Statements listet:

Hier kann man entsprechende Felder selektieren oder auch Funktionen:

Die Funktionen sind natürlich all die, die man auch in Data Services verwenden kann.

Selektiert man eine der Funktionen, wird die Syntax dargestellt, sodass man einfacher “programmieren” kann:

Nun kann man alle relevanten Filter / bzw. Datenänderungen vornehmen.

Wenn man damit fertig ist, verbindet man die Quelle mit der “Projection” und einem “Output”:

Damit ist die Quelldefinition erledigt, man braucht nur noch ein Ziel, welches von Data Intelligence zur verfügung gestellt wird und verbindet dieses. In meinem Fall möchte ich eine HANA Tabelle befüllen, indem ich diese automatisch anlegen lasse mit der Struktur, die von Data Services bereitgestellt wird.

Gerade diese “automatische Erstellung von Tabellen” ist eine super Funktion, sodass man nicht selbst erst im Ziel eine Tabelle konfigurieren lassen muss. Zusätzlich kann man sogar die Struktur neu anlegen lassen, wenn sich diese ändert!

Was in diesem Bild auffällt ist, dass ich einen “Workflow Terminator” am Schluss angefügt habe. Dieser stellt sicher, dass der Prozess beendet wird, sobald alle Daten übertragen wurden. Dieser muss auch nicht konfiguriert werden.

Gehen wir nun in den Table Producer hinein:

Ich habe eine HANA Tabelle selektiert als Tabelle und den Modus “overwrite” sodass die Struktur, sollte diese sich ändern, automatisch angepasst wird. iim Hintergrund wird die Tabelle im Ziel gelöscht und neu angelegt.

Jetzt warten wir nur noch auf den beendeten Prozess in Data Intelligence un können anschließend die Struktur und Daten ansehen:

Hierzu kann man direkt in den Tableproducer Operator rein, welcher eine “Data Preview” anbietet:

Gut in meinem Fall habe ich eine leere Tabelle als Quelle selektiert, daher sind keine Werte zu sehen. Ich gebe zu, ne andere Tabelle wäre besser gewesen 🙂

So damit wäre gezeigt, dass es funktioniert und das relativ einfach und vor allem komfortabel. Wenn man also Data Services im Einsatz hat, kann man dessen Quellen in DI direkt verwenden, OHNE in Data Services einen Job aufbauen zu müssen! Ich finde diese Funktion großartig!