View a markdown version of this page

OData Dienste (Nicht-ODP-Quellen) - AWS Glue

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

OData Dienste (Nicht-ODP-Quellen)

Full Load

Bei Systemen ohne ODP (Operational Data Provisioning) wird bei Full Load der gesamte Datensatz aus dem Quellsystem extrahiert und in das Zielsystem geladen. Da Nicht-ODP-Systeme inhärent keine fortschrittlichen Datenextraktionsmechanismen wie Deltas unterstützen, ist der Vorgang unkompliziert, kann aber je nach Datengröße ressourcenintensiv sein.

Inkrementelle Last

Bei Systemen oder Entitäten, die ODP (Operational Data Provisioning) nicht unterstützen, kann die inkrementelle Datenübertragung manuell verwaltet werden, indem ein Mechanismus zur Nachverfolgung und Extraktion von Änderungen implementiert wird, der auf Zeitstempeln basiert.

Auf Zeitstempeln basierende inkrementelle Datenübertragungen

Für Nicht-ODP-fähige Entitäten (oder für ODP-fähige Entitäten, die das ENABLE_CDC-Flag nicht verwenden) können wir eine filteringExpression-Option im Connector verwenden, um das datetime-Intervall anzugeben, für das wir Daten abrufen möchten. Diese Methode basiert auf einem Zeitstempelfeld in Ihren Daten, aus dem hervorgeht, wann jeder Datensatz zuletzt erstellt/geändert wurde.

Beispiel

Datensätze werden abgerufen, die nach 2024-01-01T 00:00:00.000 geändert wurden.

sapodata_df = glueContext.create_dynamic_frame.from_options( connection_type="SAPOData", connection_options={ "connectionName": "connectionName", "ENTITY_NAME": "entityName", "filteringExpression": "LastChangeDateTime >= 2024-01-01T00:00:00.000" }, transformation_ctx=key)

Hinweis: In diesem Beispiel ist LastChangeDateTime das Feld, das angibt, wann jeder Datensatz zuletzt geändert wurde. Der tatsächliche Feldname kann je nach Ihrer spezifischen OData SAP-Entität variieren.

Um bei nachfolgenden Ausführungen eine neue Teilmenge von Daten zu erhalten, würden Sie filteringExpression mit einem neuen Zeitstempel aktualisieren. In der Regel wäre dies der maximale Zeitstempelwert der zuvor abgerufenen Daten.

Beispiel

max_timestamp = get_max_timestamp(sapodata_df) # Function to get the max timestamp from the previous run next_filtering_expression = f"LastChangeDateTime > {max_timestamp}" # Use this next_filtering_expression in your next run

Im nächsten Abschnitt stellen wir einen automatisierten Ansatz zur Verwaltung dieser auf Zeitstempeln basierenden inkrementellen Übertragungen vor, sodass der Filterausdruck zwischen den Ausführungen nicht mehr manuell aktualisiert werden muss.