Der folgende Abschnitt behandelt das Laden der SAP-Extraktionsdaten in den Cloud-Speicher Amazon S3.
Für mehr Informationen über Amazon S3, siehe Erste Schritte mit Amazon S3.

Tipp: Sie können Xtract Universal auf einer Amazon Elastic Compute (EC2) Instanz installieren, siehe Amazon EC2: Erste Schritte mit Amazon EC2. Um Latenz zu reduzieren, stellen Sie sicher, dass die Instanz in derselben Region läuft, wie Ihre SAP-Lösung.

Voraussetzungen #

Hinweis: Xtract Universal verwendet für den Upload nach S3 einen sog. Multipart Upload. Das heißt, die extrahierten Daten werden Stück für Stück als sogenannte Parts nach S3 geschickt und dort zwischengepuffert. Im Falle einer erfolgreichen Extraktion werden die einzelnen Parts dann zu einer Datei zusammengefügt. Diese Datei ist auf S3 erst dann sichtbar, wenn die Extraktion in XU erfolgreich abgeschlossen ist.

Empfehlung: Wir empfehlen eine S3 Versioning zu verwenden oder regelmäßig Backups zu erstellen, siehe Amazon AWS: Erste Schritte mit Backup und Wiederherstellung mit AWS.

Fehlgeschlagene Extraktion #

Im Falle eines Extraktionsabbruchs aufgrund von Exceptions in XU o.Ä., veranlasst XU das Löschen der einzelnen Parts auf S3-Seite. Im Falle von “unkontrollierten” Extraktionsabbrüchen, z.B. aufgrund von Netzwerkproblemen, kann XU ein Löschen der Multiparts nicht veranlassen.

Aus diesem Grund ist es empfehlenswert, auf S3-Seite ein automatisches Löschen von Parts, z.B. nach einem Tag, vorzunehmen. Die Einstellung findet man, indem man in S3 auf den Bucket klickt und auf den Management Tab wechselt. Dort klickt man unter “Lifecycle” auf “Add lifecycle rule” und fügt eine entsprechende Regel hinzu.

S3_Multipart_Rule

Verbindung #

Eine Destination hinzufügen #

  1. Navigieren Sie im Hauptfenster des Designers zu Server > Manage Destinations. Das Fenster “Manage Destination” wird geöffnet.
  2. Klicken Sie auf [Add], um eine neue Destination hinzufügen. Das Fenster “Destination Details” wird geöffnet.
  3. Geben Sie einen Namen für die Destination ein.
  4. Wählen Sie den Destinationstyp aus dem Dropdown-Menü aus.

Destination Details #

XU_S3_DestinationDetails

S3 Einstellungen #

Connection - Verbindung

Inherit Credentials from IAM role
Die Anmeldeinformationen und Berechtigungen der IAM Rolle, die der EC2-Instanz, auf der Xtract Universal läuft, zugewiesen wurde, werden für die Authentisierung verwendet. Für mehr Informationen zur IAM Rolle, siehe Amazon Dokumentation: Bewährte Methoden für die Sicherheit in IAM.

Access key ID und Secret key
Option zur Authentifizierung gegenüber Amazon AWS. Über das Identity and Access Management (IAM) können Sie die notwendige Werte ermitteln.
Nähere Informationen finden Sie in der AWS Dokumentation.

Connect
Klicken Sie auf [Connect], nachdem Sie Access key ID und Secret key eingegeben haben. Wenn die Verbindung erfolgreich hergestellt ist, können Sie Bucket Name und Region auswählen.

Bucket

Bucket Name und Region
Wählen Sie einen Bucket und die diesem Bucket zugehörige Region aus. In diesen Bucket werden die extrahierten Daten geschrieben.

Hinweis: In den Drop-Down Menüs werden alle Buckets und Regionen angezeigt. Achten Sie auf die richtige Kombination aus Bucket und Region. Prüfen Sie über die Schaltfläche [Test Connection], dass der Bucket erreichbar ist.

Test Connection
Prüft, ob die Kombination aus Bucket und Region korrekt ist und ob der Bucket von Xtract Universal aus mit den eingegebenen Access Keys beschreibbar ist.

Server-side encryption

Wählen Sie, wie die Daten nach dem Hochladen in S3 verschlüsselt werden sollen.

Server-side encryption
Verschlüsselt die Datei serverseitig, nachdem diese nach S3 hochgeladen wurden.

Hinweis: Die Einstellungen unter “Server-side encryption” beziehen sich nicht auf die Transportverschlüsselung zwischen Xtract Universal und S3. Transportverschlüsselung zwischen Xtract Universal und S3 ist standardmäßig aktiviert.

Misc

Alle Einstellungen in Misc sind optional.

Folder Path
Geben Sie den Pfad ein, in dem Dateien hochgeladen werden.

File Owner
Wenn man als AWS User eines Accounts A in den Bucket eines Accounts B hochladen möchte, kann man die Option “Bucket Owner” auswählen. Ohne Owner können hochgeladene Dateien nicht ohne Weiteres geöffnet werden.

File Format #

File type
Wählen Sie das gewünschte Dateiformat zwischen Parquet und CSV. azure_blob_destination_settings_csv_settings

CVS Settings - Einstellungen

Die CSV Einstellungen entsprechen denen der allgemeinen Flat File CSV Einstellungen.

Parquet Settings - Einstellungen

Die folgenden Kompatibilitätsmodi sind verfügbar:

  • Pure
  • Spark
  • BigQuery

Spark unterstützt nicht die im Pure-Mode verwendeten Datentypen, daher müssen andere Datentypen verwendet werden.
Sonderzeichen und Leerzeichen werden im Spark-Modus durch einen Unterstrich _ ersetzt.

SAP Pure / BigQuery Spark
INT1 UINT_8 INT16
TIMS TIME_MILLIS UTF8

AWS S3 compability

Column encryption - Verschlüsselung #

Allgemeines

Sie können Daten sowohl verschlüsselt als auch unverschlüsselt speichern. Die “Column Encryption” (Spalten-Verschlüsselung) ermöglicht Ihnen eine Verschlüsselung der Spalten bevor die extrahierten Daten in die Destination hochgeladen werden. Dadurch kann sichergestellt werden, dass sensible Informationen geschützt sind.

Diese Funktion unterstützt außerdem wahlfreien Zugriff, d.h. dass Daten von jedem beliebigen Startpunkt aus entschlüsselt werden können. Da wahlfreier Zugriff einen erheblichen Overhead verursacht, wird empfohlen die Spalten-Verschlüsselung nicht auf den gesamten Datensatz anzuwenden.

Weiteres Vorgehen

Hinweis: Der Benutzer muss einen öffentlichem RSA Schlüssel zur Verfügung stellen.

  1. Wählen Sie die zu verschlüsselnden Spalten unter Extraction settings > General settings > Encryption aus. XU_Column_Encryption_01

  2. Stellen Sie sicher, dass die Enable column level encryption Checkbox unter Extraction settings > General settings > Misc. ausgewählt ist. XU_Column_Encryption_02

  3. Klicken Sie unter Destination Details > Column Encryption auf […], um den öffentlichen Schlüssel als .xml-Datei zu importieren.

  4. Führen Sie die Extraktion aus.

  5. Warten Sie bis XtractUniversal die verschlüsselten Daten und die “metadata.json” Datei auf die Destination hochgeladen hat.

  6. Triggern Sie manuell oder automatisch Ihre Entschlüsselungsroutine.

Entschlüsselung

Die Entschlüsselung ist abhängig von der Destination. Beispiele für eine Implementierung mit Azure Storage, AWS S3 und lokalen CVS Dateien finden Sie in GitHub. Die Beispiele beinhalten sowohl Kryptografie als auch ein Interface, um “metadata.json” und CSV Daten zu lesen. Der kryptografische Aspekt ist Open Source, das Interface nicht.

Technische Informationen

Die Verschlüsselung ist als Hybridverschlüsselung implementiert. Das bedeutet, dass ein zufälliger AES Session Key (Sitzungsschlüssel) generiert wird sobald eine Extraktion ausgeführt wird. Die Daten werden dann über den AES-GCM Algorithmus in Kombination mit dem Session Key verschlüsselt.
Die Implementierung verwendet die empfohlene Länge von 96 bits für den Initialisierungsvektor (IV). Um den wahlfreien Datenzugriff zu garantieren, erhält jede Zelle seinen eigenen IV/nonce und einen Message Authentication Code (MAC). Der MAC ist ein Authentifizierungstoken in GCM. Im daraus resultierenden Datenset sind die Zellen wie folgt verschlüsselt:

    IV|ciphertext|MAC

mit IV als 7-Bit Integer. Der Session Key wird daraufhin mit dem öffentlichen RSA Schlüssel des Benutzers verschlüsselt und zusammen mit einer Liste verschlüsselter Spalten und Formatinformation als “metadata.json” Datei auf die Destination hochgeladen.

Connection Retry -Verbindungswiederholung #

Die Retry-Funktion ist eine eingebaute Funktion der AWS S3 Destination. Die Retry-Funktion ist automatisch aktiviert. Die Retry-Funktion verhindert, dass Extraktionen fehlschlagen, wenn kurzzeitige Verbindungsunterbrechungen zu AWS S3 auftreten.

Weitere allgemeine Informationen über Strategie der Wiederholversuche in einer AWS-S3-Umgebung finden Sie in der offiziellen AWS Hilfe. Xtract Universal verfolgt eine exponentielle Strategie der Wiederholversuche. Dies bedeutet, dass 8 Verbindungsversuche gestartet werden in einem Zeitraum von 140 Sekunden. Sollte in dem Zeitraum von 140 Sekunden keine Verbindung zustande kommen, wird die Extraktion abgebrochen.

Einstellungen #

Destination Settings öffnen #

  1. Eine bestehende Extraktion anlegen oder auswählen, siehe Erste Schritte mit Xtract Universal.
  2. Klicken Sie auf [Destination]. Das Fenster “Destination Settings” wird geöffnet. Destination-settings

Die folgenden Einstellungen können für die Destination definiert werden.

Destination Settings - Destinationseinstellungen #

XU_S3_DestinationEinstellungen

File Name #

File Name bestimmt den Namen der Zieltabelle. Sie haben die folgenden Optionen:

  • Same as name of SAP object: Name des SAP-Objekts übernehmen
  • Same as name of extraction: Name der Extraktion übernehmen
  • Custom: Hier können Sie einen eigenen Namen definieren
  • Append timestamp: fügt den Zeitstempel im UTC-Format (_YYYY_MM_DD_hh_mm_ss_fff) dem Dateinamen der Extraktion hinzu.

Hinweis: Wenn der Name eines Objekts nicht mit einem Buchstaben beginnt, wird ‘x’ als Präfix ergänzt, z.B. wird das Objekt _namespace_tabname.csv zu x_namespace_tabname.csv, wenn es auf die Destination hochgeladen wird. Damit wird die Kompatibilität zu Azure Data Factory, Hadoop und Spark sichergestellt, die mit Buchstaben beginnende Objektnamen voraussetzen oder die nicht alphabetischen Zeichen besondere Bedeutungen zuweisen.

Skript-Ausdrücke als dynamische Dateinamen

Skript-Ausdrücke können für die Generierung eines dynamischen Dateinamens verwendet werden. Dadurch kann ein Name generiert werden, der sich aus den Eigenschaften einer Extraktion zusammensetzt, z.B. Extraktionsname, SAP-Quellobjekt. Unterstützt werden Skript-Ausdrücke, die auf .NET basieren, sowie folgende XU-spezifische Skript-Ausdrücke:

Eingabe Beschreibung
#{Source.Name}# Name der SAP Quelle.
#{Extraction.ExtractionName}# Name der Extraktion.
#{Extraction.Type}# Extraktionstyp (Table, ODP, DeltaQ, etc.).
#{Extraction.SapObjectName}# Name des SAP Objekts, von dem die Extraktion Daten extrahiert.
#{Extraction.Timestamp}# Zeitstempel der Extraktion.
#{Extraction.SapObjectName.TrimStart("/".ToCharArray())}# Entfernt einen führenden Schrägstrich, z.B. wird aus /BIO/TMATERIAL dann BIO/TMATERIAL, damit kein leeres Verzeichnis angelegt wird.
#{Extraction.SapObjectName.Replace('/', '_')}# Entfernt alle Schrägstriche eines SAP Objekts, z.B. wird aus /BIO/TMATERIAL dann _BIO_TMATERIAL. Dadurch wird verhindert, dass die Schrägstriche innerhalb des Namens des SAP Objekts, nicht als Verzeichnistrenner interpretiert werden.
#{Extraction.Context}# Nur für ODP Extraktionen: Kontext des ODP Objekts (SAPI, ABAP_CDS, etc.).
#{Extraction.Fields["[NameSelectionFiels]"].Selections[0].Value}# Nur für ODP Extraktionen: Eingabewert einer definierten Selektion / eines Filter.
#{Odp.UpdateMode}# Nur für ODP Extraktionen: Load-Verfahren (Delta, Full, Repeat) der Extraktion.
#{TableExtraction.WhereClause}# Nur für Table Extraktionen: WHERE-Bedingung der Extraktion.

Column Name Style #

Definiert den Spaltennamen. Folgende Optionen sind verfügbar:

column_name_style_options

  • Code: Der technische Spaltenname aus SAP wird als Spaltenname verwendet, z.B. MAKTX
  • PrefixedCode: Der technische Name der Tabelle wird mit dem Tilde-Zeichen und dem entsprechenden Spaltennamen verbunden, z. B. MAKT~MAKTX.
  • CodeAndText: Der technische Name und die Beschreibung der Spalte aus SAP mit einem Unterstrich verbunden werden als Spaltennamen verwendet, z.B. MAKTX_Material Description (Short Text).
  • TextAndCode: Die Beschreibung und der technische Name der Spalte SAP mit einem Unterstrich verbunden werden als Spaltennamen verwendet, z.B. Material Description (Short Text)_MAKTX.
  • Text: Die Beschreibung aus SAP wird als Spaltenname verwendet, z.B. Material Description (Short Text).

Date conversion #

Convert date strings
Konvertiert die Zeichenabfolge des SAP-Datums (YYYYMMDD, z.B. 19900101) zu einem formatierten Datum (YYYY-MM-DD, z.B. 1990-01-01). Im Datenziel hat das SAP-Datum keinen String-Datentyp sondern einen echten Datumstyp.

Convert invalid dates to
Falls ein SAP-Datum nicht in ein gültiges Datumsformat konvertiert werden kann, wird das ungültige Datum zu dem eingegebenen Wert konvertiert. NULL wird als Wert unterstützt.

Bei der Konvertierung eines ungültigen SAP-Datums werden zuerst die beiden Sonderfälle 00000000 und 9999XXXX überprüft.

Convert 00000000 to
Konvertiert das SAP-Datum 00000000 zu dem eingegebenen Wert.

Convert 9999XXXX to
Konvertiert das SAP-Datum 9999XXXX zu dem eingegebenen Wert.

Folder Name #

Geben Sie hier einen Ordnernamen ohne Schrägstriche ein, wenn die Extraktion in einen Ordner innerhalb eines S3 Buckets extrahiert werden soll.
Unterordner werden ebenfalls unterstützt und können wie folgt eingegeben werden:Ordner/Unterordner1/Unterordner2/

Skript-Ausdrücke als dynamische Ordnerpfade

Skript-Ausdrücke können für die Generierung eines dynamischen Ordnerpfads verwendet werden. Dadurch kann ein Ordnerpfad generiert werden, der sich aus den Eigenschaften einer Extraktion zusammensetzt, z.B. Extraktionsname, SAP-Quellobjekt. Unterstützt werden Skript-Ausdrücke, die auf .NET basieren, sowie folgende XU-spezifische Skript-Ausdrücke:

Eingabe Beschreibung
#{Source.Name}# Name der SAP Quelle.
#{Extraction.ExtractionName}# Name der Extraktion.
#{Extraction.Type}# Extraktionstyp (Table, ODP, DeltaQ, etc.).
#{Extraction.SapObjectName}# Name des SAP Objekts, von dem die Extraktion Daten extrahiert.
#{Extraction.Timestamp}# Zeitstempel der Extraktion.
#{Extraction.SapObjectName.TrimStart("/".ToCharArray())}# Entfernt einen führenden Schrägstrich, z.B. wird aus /BIO/TMATERIAL dann BIO/TMATERIAL, damit kein leeres Verzeichnis angelegt wird.
#{Extraction.SapObjectName.Replace('/', '_')}# Entfernt alle Schrägstriche eines SAP Objekts, z.B. wird aus /BIO/TMATERIAL dann _BIO_TMATERIAL. Dadurch wird verhindert, dass die Schrägstriche innerhalb des Namens des SAP Objekts, nicht als Verzeichnistrenner interpretiert werden.
#{Extraction.Context}# Nur für ODP Extraktionen: Kontext des ODP Objekts (SAPI, ABAP_CDS, etc.).
#{Extraction.Fields["[NameSelectionFields]"].Selections[0].Value}# Nur für ODP Extraktionen: Eingabewert einer definierten Selektion / eines Filter.
#{Odp.UpdateMode}# Nur für ODP Extraktionen: Load-Verfahren (Delta, Full, Repeat) der Extraktion.
#{TableExtraction.WhereClause}# Nur für Table Extraktionen: WHERE-Bedingung der Extraktion.
#{Extraction.Fields["[0D_NW_CODE]"].Selections[0].Value}# Nur für BWCube Extraktionen (MDX Modus): Eingabewert einer definierten Selektion.
#{Extraction.Fields["[0D_NW_CHANN]"].RangeSelections[0].LowerValue}# Nur für BWCube Extraktionen (MDX Modus): Niedriger Eingabewert eines definierten Selektionsbereichs.
#{Extraction.Fields["[0D_NW_CHANN]"].RangeSelections[0].UpperValue}# Nur für BWCube Extraktionen (MDX Modus): Hoher Eingabewert eines definierten Selektionsbereichs.
#{Extraction.Fields["0D_NW_CODE"].Selections[0].Value}# Nur für BWCube Extraktionen (BICS Modus): Eingabewert einer definierten Selektion.
#{Extraction.Fields["0D_NW_CHANN"].RangeSelections[0].LowerValue}# Nur für BWCube Extraktionen (BICS Modus): Niedriger Eingabewert eines definierten Selektionsbereichs.
#{Extraction.Fields["0D_NW_CHANN"].RangeSelections[0].UpperValue}# Nur für BWCube Extraktionen (BICS Modus): Hoher Eingabewert eines definierten Selektionsbereichs.

Compression #

None
Die Daten werden unkomprimiert übertragen und als csv-Datei abgelegt.

gzip
Die Daten werden komprimiert übertragen und als gz-Datei abgelegt.

Hinweis: Diese Option ist nur für das csv-Dateiformat verfügbar, siehe Verbindung: File Format.

File Splitting #

File Splitting

Schreibt die Extraktionsdaten einer einzelnen Extraktion in mehrere Dateien im die Cloud. Dabei wird an jeden Dateinamen _part[nnn] angehägt.

Max. file size
Geben Sie die Maximalgröße der Dateien ein, die hochgeladen werden sollen.

Note: Die Option Max. file size wird nicht von gzip-Dateien unterstützt. Die Größe von durch gzip-Verfahren komprimierten Dateien kann nicht im Voraus bestimmt werden.