Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
frederik_hopt
Product and Topic Expert
Product and Topic Expert
SAP Data Hub ist ein Tool womit z.B. externe Prozesse, Tools und andere Systeme sehr gut orchestriert werden können. Eine Option ist es bsp. externe Dienste anzubinden. In meinem Beispiel möchte ich die Adressvalidierung auf der SAP Cloud Plattform verwenden. Diese nennt sich "DQM Microservice! also ein Data Quality Management Microservice. Damit kann man Adressen an die CP schicken und erhält validierte Adressen zurück. In diesem Beispiel verwende ich Adressen aus einer selbst erstellten csv Datei, die ich mit dem Microservice validiere und das Ergebnis speichere.

Als Basis verwende ich SAP Data Hub in der aktuellsten Version 2.6

In meinem Fall habe ich eine CAL Landschaft verwendet. Als Kunde muss natürlich sichergestellt werden, dass Data Hub auf Data Services 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.

DQM Microservice:

SAP bietet mehrere Möglichkeiten Adressen zu validieren bzw. anzureichern mit Geolokationsdaten. Eine Variante davon sind die Microservices. Hier liegen die Adressreferenzdaten der einzelnen Länder und die entsprechenden Längen- und Breitengraddaten der Adressen in der SAP Cloud Platform und werden regelmäßig aktualisiert, sodass ein Kunde immer auf die aktuellsten Daten zugreifen kann.

Mehr Informationen dazu in folgendem Blog: https://blogs.sap.com/2017/03/19/sap-data-quality-management-microservices-generally-available-to-cu...

Zuerst müssen wir eine Datei, welche lokal auf meinem Rechner liegt, in die CAL Umgebung uploaden. Zum aktuellen Zeitpunkt ist dies (für mich) die schnellste Möglichkeit eine einzelne Datei einzulesen und zu verwenden. Eine andere Option wäre es, die Datei in eine Cloudumgebung zu übertragen (AWS, HDFS, ...) und dann einzulesen.

Hierzu starten wir das System Management des Data Hub und starten das System Management:



Anschließend muss "Files" selektiert werden:





Dann legen wir einen Ordner an, sodass wir eine Datei darin speichern können und importieren die Datei, die lokal auf dem Rechner liegt:




Die Datei selbst ist eine simple Datei im CSV Format mit einigen Beispiel Adressdaten.

Wenn man über die rechte Maustaste nun auf die Datei auf den Eintrag "View" klickt, kann man den Dateiinhalt sehen:



Nun schaue ich noch im Unionview, ob die Datei auch von überall verfügbar ist:



Damit ist der Upload realisiert und wir wenden uns dem Modeler zu um die Datei einzulesen:



Ich habe mir zuerst einen neuen Graph erstellt, mit Hilfe des DQM Microservice Template Graphs, wobei ich hier den ersten Operator rausgenommen habe:



So sieht der Standard aus:



Den "Message Generator" Operator habe ich gelöscht und einige Operatoren (Multiplexer, Wiretab, Terminal, Converter) eingebunden:



Zuerst habe ich ein Read file Operator eingebunden. Dieser liest die Datei ein. Hier muss ich auch die Quelldatei definieren:







Nachdem die Datei definiert ist, müssen wir die Datei konvertieren zu einem JSON Format, denn der Microservice verlangt ein JSON Format. Dazu gibt es den Format Converter, der genau das übernimmt.

Ich habe ihn eingebunden und folgendermaßen konfiguriert:





Manuell habe ich die einzelnen Felder, wie ich sie im CSV habe, in das Feld "Fields" geschrieben.

Zusätzlich braucht man noch den "toblob_converter", denn der Format Converter benötigt ein Blob...

Das sieht dann so aus:



Anschließend gehe ich in die SCP und definiere mir eine Konfiguration um die Adressen zu validieren:

Ich wähle zuerst aus den "Services" den "Data Quality Service" aus:



Dort wähle ich dann die "Configuration" aus:





Ich habe natürlich schon eine Konfiguration erstellt, habe das aber durch die obere rechte Taste neu angelegt:



Hier habe ich genau die Felder als input definiert, wie ich sie auch im JSON Converter definiert habe. Bei mir wurde exact die identische Schreibweise (auch Groß- und Kleinschreibung!) kontrolliert, bzw. angemeckert. Hier also penibel darauf achten.

Als Output, kann man unten links definieren, wie die validierten Adressen zurückgeschickt werden sollen. Auch kann man Längen-und Breitengrad involvieren:



So nun muss man noch die Details im Operator für den DQM Microservice eingeben:



Hier nochmals die Config auf der rechten Seite im Detail. Hier muss man eigentlich nur den ConfigurationName eintragen und ob man eine "Suggestion List" möchte oder nicht.



Als kleiner Tipp: Ich habe noch mit Multiplexer Wiretabs, bzw. Terminals eingebunden um zu sehen, was aus den einzelnen Operatoren als Ergebnis kommt. Das muss man nicht tun, bietet sich zum test aber immer gut an.

Im DQM Client Operator gibt man nun die Verbindungsdaten an:



Die Werte habe ich aus dem SCP Übernommen, bzw. angelegt:

Dort habe ich zuerst die Application URL gesucht:





Hierbei habe ich das "https://" und den Schluss "/dq" weggelassen.

Anschließend bin ich zurück auf die OAuth Settings und habe mir auf der ersten Seite den Token link notiert und eingetragen:



Danach bin ich auf den "Clients"  Tab gegangen und habe einen neuen angelegt:



Bei "Secret" kann man ein eigenes Passwort eingeben, was man sich natürlich merken muss.

Diese Werte gibt man nun in Data Hub in den Operator ein. Bei "OauthClientSecret" gibt man das selektierte Passwort ein.

Nun muss man eigentlich nur noch den Operator "write file" hinzufügen, damit man die validierten Adressen wieder in eine Datei schreiben kann:



In meinem Fall schreibe ich die Datei wieder in das Filesystem zurück.

Als letztes fehlt noch ein "Graph Terminator" um danach den Prozess zu beenden und einmalig den Prozess zu speichern, bzw. zu starten.



Dann sollte der Prozess wie folgt im Log aussehen:





Als Ergebnis habe ich nun die Dateien, gesplittet nach Datensatz:



Exemplarisch habe ich eine Datei mal geöffnet über rechte Maustaste und "View":



Hier sieht man die Ergebnisse der Validierung inkl. Suggestions und Geocoding Daten.

Wenn man das nun vergleicht mit der Quelldatei für die Suggestion list. Er hat also beim Ort mehrere zur Auswahl. Hier müsste man noch weiter definieren, was damit passieren soll:



Hier ein Beispiel für die validierte und verbesserte Adresse mit Geolokationsdaten:



 

Man muss sicherlich die Einstellungen im Microservice noch verfeinern um ein besseres Ergebnis zu erzielen, aber das war nicht das Ziel dieses Blogs. Ich wollte nur zeigen, wie man mit Hilfe des DataHubs den DQM Microservice anbinden und auch eine csv Datei dafür zur Hilfe nehmen kann.

ich hoffe der ein oder andere kann diesen Blog als eine Art "Anleitung" verwenden um den gleichen Prozess selbst zu verwenden.

Falls man Interesse daran hat auch Data Services anzubinden, ist hier der Link zu meinem Blog, der genau das zeigt:

https://blogs.sap.com/2018/12/17/sap-data-hub-orchestrierung-von-sap-data-services/

Viel Spaß dabei.