Skip to Content
Technical Articles

Orchestrierung von HANA SDI mit SAP Data Intelligence

SAP Data Intelligence ist ein Tool womit z.B. externe Prozesse, Tools und andere Systeme sehr gut orchestriert werden können. Ein Use Case ist es bsp. das SAP HANA Smart Data Integration (ein ETL Werkzeug mit nativer HANA Technologie, um Daten aus SAP und NON SAP Quellen in die HANA zu schreiben) anzubinden und ein bereits bestehenden Prozess (in HANA SDI nennt man das “Flowgraph”) zu orchestrieren. In diesem Blog widme ich mich diesem Szenario und starte einen ganz einfachen SDI Flowgraph mit Hilfe von Data Intelligence. Im reellen Leben würde man natürlich noch deutlich mehr machen und Data Hub nicht nur nutzen um einen Data Services Job zu triggern, aber hier soll es primär nur um die Machbarkeit gehen bzw. um zu zeigen, wie die Anbindung funktioniert bzw. aussieht.

Kurze Info zur Abkürzung und den Namen: 

SAP hat zuerst den Namen “SAP Data Hub” verwendet. Das stand für das ausschließlich verfügbare on premise Produkt. Nun gibt es seit 15 Juli 2019 auch eine Cloud Variante (Saas, Software as a Service, wo Kunden über die SAP Cloud Platform die Software ohne eigene Infrastruktur verwenden können) unter dem Namen “Data Intelligence”. Man findet immer wieder die Abkürzungen “SAP DH” (Data Hub) und auch “SAP DI” oder “SDI”. Das führt zur Verwirrung, denn viele kennen diese Abkürzung vom Smart Data Integration. Wenn ich in diesem Blog “SDI” verwende, meine ich Smart Data Integration.

Als Basis verwende ich SAP Data Intelligence in der Version 2.7 und SAP HANA Smart Data Integration (SDI) in der Version 1.134.1.

In meinem Fall habe ich eine SAP CAL (SAP Cloud Appliance Library) Landschaft verwendet. Als Kunde muss natürlich sichergestellt werden, dass Data Intelligence auf SDI zugreifen kann (über das Netzwerk). Über einen Ping und Portscanner kann das zuerst überprüft werden um sicher zu gehen, dass diese Kommunikation auch funktionieren wird.

SAP HANA Smart Data Integration (SDI): 

In SDI habe ich einen sehr einfachen Prozess erstellt, der eine “csv” Datei mit Adressdaten ausliest und diese 1:1 in eine Datenbanktabelle schreibt. Data Intelligence soll diesen Job orchestrieren, bzw. starten. In einer produktiven Umgebung kann man das verwenden, um eine bestehende Programmierung in SDI in einer Pipeline zu nutzen. Man muss die Extraktion, bzw. den entwickelten Code in SDI nicht neu aufbauen in SDI, sondern verwendet die Logik einfach wieder.

Prozess in SDI: 

Werfen wir einen Blick auf den Flowgraph in SDI, den ich dafür erstellt habe:

In diesem Flowgraph wird eine Tabelle mit Kundendaten in eine Template Tabelle geschrieben. Dazwischen befindet sich noch ein Filter, sodass man einstellen kann, welche Datensätze übermittelt werden. Dieser Flowgraph ist also nicht sehr komplex und kann einfach nachgebaut werden. In meinem Fall liegt der Fokus auf Data Intelligence und wie man den Flowgraph konnektiert, daher habe ich bewusst nichts komplexes erstellt.

Prozess in Data Intelligence: 

Jeder Flowgraph in SDI kann, via Data Intelligence, angetriggert werden. Um das zu realisieren, müssen wir zuerst in Data Intelligence eine Verbindung zum System SDI herstellen. Sobald diese Verbindung hergestellt ist, kann man die Flowgraphs sehen und selektieren in SAP Data Intelligence.

Zuerst erstellen wir also die Verbindung in Data Intelligence. Dazu gehen wir in das “Connection Management”:

und klicken hier auf “create”:

Anschließend erscheint ein leeres Feld:

Hier müssen wir nun die Verbindungsparameter zu SDI eintragen:

In meinem Beispiel habe ich den Namen “DEMO_SDI” gewählt, als Connection Typ “HANA_XS” selektiert und anschließend den Host/IP, Port, Protocol um auf SDI Prozesse zuzugreifen, eingegeben. Das Passwort wird nicht dargestellt um anderen Usern keine Möglichkeit zu geben darauf zuzugreifen.

Anschließend kann man in der Übersicht der verbundenen Systeme den neuen Eintrag sehen:

Die Verbindung kann man nun testen, in dem man bei der Verbindung (in diesem Fall “HANAXS”) rechts auf die 3 Punkte klickt und “Check Status” anklickt:

Dann sollte folgendes angezeigt werden:

Wenn alles ok ist, kann man mit dem Designen der Pipeline in Data Intelligence weitermachen:

In Data Intelligence habe ich also einen “Graph” designed (durch Drag&Drop), um den erstellten SDI Flowgraph anzutriggern. Das sieht dann folgendermaßen aus:

Im Flowgraph Operator kann man nun selektieren, welcher Flowgraph angetriggert werden soll. Dazu selektiert man zuerst die Connection, die die Verbindungsparameter zur HANA DB enthält:

Anschließend selektiert man den Flowgraph, den man in dem aktuellen Operator orchestrieren möchte:

Wenn man den Flowgraph selektiert hat, sieht das dann so aus:

Wenn man im Flowgraph “Variablen”  verwendet, werden diese hier angezeigt.

Ansich war es das schon. Nun können wir die Pipeline speichern und anschließend starten:

Anhand des Status kann man sehen, das der SDI Flowgraph erfolgreich angetriggert und beendet hat.

Werfen wir nun noch einen Blick in den Metadata Explorer, ob die Tabelle vorhanden ist und Datensätze beinhaltet:

Damit ist die Orchestrierung bereits beendet und die Integration erfolgreich durchgeführt.

Um diese Integration von Data Intelligence und SDI nachzustellen, kann man genau die gleichen Steps durchführen (natürlich angepasst um die entsprechenden Hostnames, bzw. Verlinkungen). Damit kann die Integration durchgeführt werden zwischen beiden Tools.

Wer die Integration / Orchestrierung von Data Services durchführen möchte, kann sich meinen Blog dazu ansehen:

Orchestrierung von Data Services

Viel Spaß dabei!

5 Comments
You must be Logged on to comment or reply to a post.
  • Hi Frederik,

    A very informative blog to understand the functionalities of SAP DI.

    I have one query , we need to do a batch load (in specific intervals) from SAP ECC (on HANA DB) to Hadoop DB using SAP BODS. Once that job is completed successfully (need to do this check ) then we have to initiate a load from this table to HANA physical table though SDI (flow-graph), this is also a scheduled batch job.

    Can we use SAP DI for the above scenario ?

     

    Regards

    Arjun KT

    • Hi Frederik,

      Thanks a lot for your response, I have one last question. Our current architecture contains 21 source systems, we are using integration tools “BODS, Kafka, Sqoop, and ESB” to connect different source systems with Hadoop, then data processing will happen in Hadoop system and finally we will bring it into HANA (Using SDI) for further processing and presentation. Can we use SAP DI to integrate and schedule job across all this systems.

      For example I need to fetch data from source_system_1 to Cloudera (using Kafka) then check whether this job is success, if yes then load this data to HANA.

       

      Can we use SAP DI in such a scenario?

      Thanks in advance.

       

      Regards

      Arjun KT

    • Hi Frederik,

      Thank you for the reply.

      Our plan is to use SAP DI as an external scheduler, so the system check is a must.

      There are multiple systems in the architecture, so after first load we should check whether the job has successfully completed, if yes then we should start the second job.

      Do we have this provision in SAP DI ?

      Thanks in advance.

       

      Regards

      Arjun KT