Suchen...
Generic filters
Exact matches only
Search in title
Search in excerpt
Search in content

SSIS-Importe für SAP HANA

Typischerweise sind in SAP-HANA die Daten, die später mithilfe von DeltaMaster angezeigt werden sollen, bereits aus dem ERP-System vorhanden und müssen nicht extra dorthin importiert werden. Trotzdem kommt es vor, dass zusätzliche Datentöpfe aus externen Quellen hinzugezogen werden sollen.

Agiles Business Intelligence mit SAP-Daten


In zwei Tagen zum Data Warehouse in der Jackentasche

Die Bissantz ERP Solutions zeigen, was mit KI-basierter Data-Warehouse-Modellierung in­zwischen möglich ist. So standardisiert wie möglich, so individuell wie nötig entsteht in kürzester Zeit ein komplett fertig paketiertes Business-Intelligence-System – mit allen not­wendigen Ver­arbeitungs­schritten, vom Laden der Daten aus SAP ERP bis zur auto­matischen Daten­versorgung mobiler Endgeräte.

Ein weiterer typischer Fall sind Demo-Systeme. Für solche Systeme müssen als Datenquelle häufig Excel- oder CSV-Dateien herhalten. In diesem Blog wird gezeigt, wie solche externen Datenquellen aus Dateien oder anderen Datenbanken per SQL Server Integration Services (SSIS) in SAP-HANA importiert werden können und was dabei zu beachten ist.

Treiber und DSN einrichten

Für den in SSIS benötigten Verbindungs-Manager greifen wir auf die DSN zu unserer HANA zurück. Diese wird in jedem Fall benötigt, um per relationaler Schnittstelle aus dem DeltaMaster heraus auf die HANA zugreifen zu können.

Um diese ODBC-Datenquelle im ODBC-Datenquellen-Administrator anlegen zu können, müssen zunächst die Treiber installiert werden, die mit dem sogenannten SAP HANA Client installiert werden können. Dieser wird üblicherweise als .SAR-Paket bereitgestellt. Zum Entpacken wird dann noch die kleine exe-Datei SAPCAR benötigt. Am einfachsten legt man beide Dateien in einem gemeinsamen Ordner ab. Die Pfade zu den beiden Dateien sollten keine Leerzeichen enthalten.

Per Kommandozeile muss nun in diesen Ordner navigiert werden und folgendes Kommando ausgeführt werden:

<SAPCAR-Dateiname>.exe -xvf <Pfad + Dateiname-SAR-Datei>.SAR -R <Zielordner für die entpackten Treiber>

Beispiel:
C:\Temp\HANAClient64>SAPCAR_712-80000938.exe -xvf C:\Temp\HANAClient64\IMDB_CLIENT20_00_74-80002083_64.SAR -R C:\Temp\HANAClient64

 

Im Zielordner muss nun die Datei hdbsetup.exe ausgeführt und dem Installer gefolgt werden.
Jetzt kann der ODBC-Datenquellen-Administrator gestartet werden, um die DSN anzulegen. Dabei muss die Version des Datenquellen-Administrators gewählt werden, die der Bit-Version der installierten Treiber entspricht.
Die Einrichtung der System- oder Benutzer-DSN muss wie folgt vorgenommen werden:

  • Als Treiber wird HDBODBC (64-Bit Version) bzw. HDBODBC32 (32-Bit Version) gewählt.

  • Sprechenden Namen & Beschreibung wählen und den Server inklusive Port (<Server-IP>:<Port>) angeben:

Verbindungs-Manager in SSIS einrichten

Zunächst muss eine neue Verbindung angelegt werden.

Im nachfolgenden Dialog den Typ „ODBC“ wählen.

Jetzt muss eine neue Datenverbindung angelegt werden:

Als Datenquellenname muss über das Drop-Down-Menü die gerade angelegte ODBC-DSN gewählt werden und anschließend noch Benutzername und Passwort für die HANA-Instanz angegeben werden. Ein single sign on wie etwa für den SQL-Server ist nicht möglich. Das sollte bei den ProtectionLevel-Einstellungen für solche Pakete berücksichtigt werden!

Datenimport

Ein Verbindungs-Manager für die gewünschte Quelle (z. B. SQL-Server, Excel- oder CSV-Datei) wird vorausgesetzt. Jetzt kann ein klassischer Import-Prozess gebaut werden.
In unserem Beispiel wollen wir die Daten der Produkt-Dimension aktualisieren. Dafür wird ein Sequenzcontainer angelegt. In diesen wird ein „SQL ausführen“-Objekt platziert. Dieses wird mit einem Datenflusstask-Objekt verbunden.

Im „SQL ausführen“-Objekt wird die Zieltabelle in der HANA vor der Befüllung geleert. Als ConnectionType wird ODBC gewählt und als Connection der angelegte HANA-Verbindungs-Manager. Als SQL-Abfrage wird ein HANA-spezifisches Truncate-Statement eingefügt:

truncate table "FOODMART_PLUS"."PRODUCT";

Im Datenflusstask wird eine OLE-DB-Quelle angelegt und die Quelltabelle ausgewählt. Für die Import-Tabelle in der HANA wird ein ODBC-Ziel angelegt und der HANA-Verbindungs-Manager gewählt. Als Datenzugriffsmodus ist „Tabellenname – Batch“ empfehlenswert.

Die Zuordnung der einzelnen Spalten aus Quelle und Ziel erfolgt gemäß dem üblichen Vorgehen.

Anders als beim Import in den Microsoft SQL-Server steht keine Möglichkeit bereit die Zieltabelle automatisch anlegen zu lassen. Diese muss in der HANA manuell angelegt werden.

Mögliche Schwierigkeiten

Bit-Problematik

Häufig kommt es beim Ausführen des .dtsx-Pakets zu wenig sprechenden Fehlermeldungen wie der Folgenden:

Ursache ist dann häufig eine Bit-Problematik. Zur Behebung über den Menüeintrag „Projekt  -Eigenschaften  Konfigurationseigenschaften  Debuggen“ die Einstellung von Run64BitRuntime auf False ändern.

Datentypen in SAP-HANA

Insbesondere wenn als Import-Quelle Tabellen aus anderen Datenbanksystemen genutzt werden, gibt es Datentypen, die in SAP-HANA so nicht existieren.
Beim Import aus dem SQL-Server gibt es z. B. folgende Probleme:

  • Den Datentyp MONEY gibt es nicht in der HANA. Als Lösung kann z. B. der Datentyp DOUBLE genutzt werden
  • Der Datentyp BIT trägt in der HANA den Namen BOOLEAN
  • Statt (SMALL)DATETIME sollte LONGDATE verwendet werden

Fazit

Die Nutzung von SSIS zur Anbindung externer Datentöpfe ist für SAP HANA sicherlich nicht so komfortabel wie für den Microsoft SQL-Server. Dennoch bietet die Nutzung einen gewissen Komfort im Vergleich zum sehr einfach gehaltenen CSV-Import-Verfahren, das mit HANA Studio möglich ist.
Außerdem lassen sich Importe auf diese Weise auch automatisieren und somit wiederholt ausführen. Hierfür kann das .dtsx-Paket z. B. über die Windows Aufgabenplanung mithilfe einer batch-Datei aufgerufen werden.