Zum Hauptinhalt springen

Performante Lookups in BW-Transformationen – Die relevanten Datensätze finden

Nachdem wir uns mit relevanten Selektionstechniken und mit den unterschiedlichen Arten von internen Tabellen auseinandergesetzt haben, sind die wichtigsten Performanceoptimierungen für die Lookups in unseren BW-Transformationen zunächst einmal sichergestellt.

Hiermit ist das Thema jedoch nicht komplett abgedeckt. Denn bis jetzt sind wir davon ausgegangen, dass nur die relevanten Informationen in unseren Lookup-Tabellen durchsucht werden. Wie können wir dies aber sicherstellen?

 

lookup-selektion-relevanter-datensaetze

 

Anhand unseres Beispiels wird in diesem Artikel verdeutlicht, wie man aus der Datenbanktabelle Y nur die relevanten Datensätze in der internen Tabelle Z zum Durchsuchen selektiert. Die Größe der Datenbanktabelle Y ist hier von zentraler Bedeutung. Wenn in der Transformation die Datenpakete 50.000 Datensätzen beinhalten, die Y-Tabelle allerdings Millionen von Datensätzen enthält, muss sichergestellt werden, dass diese nicht bei jedem Datenpaket komplett durchsucht werden.

Um dies zu gewährleisten, wenden wir folgende Vorgehensweise an. Wir nutzen bei der SELECT aus der Datenbank die Anweisung FOR ALL ENTRIES. Dabei sollte man unbedingt folgende Punkten beachten:

  1. Um FOR ALL ENTRIES performant durchzuführen, ist es unabdingbar, immer den vollständigen Schlüssel der zu lesenden LOOKUP-Tabelle abzufragen.
  2. FOR ALL ENTRIES liefert nur eindeutige Schlüsselwerte (siehe DISTINCT).
  3. Wenn FOR ALL ENTRIES verwendet wird, können die Daten nur mit dem Zusatz PRIMARY KEY sortiert aus der Datenbank abgefragt werden (Anweisung: ORDER BY).

Außerdem gelten bei der Verwendung dieses Zusatzes mehrere Einschränkungen, die berücksichtigt werden sollten. Unter anderem kann man damit keine SINGLES, keine UNIONS und keine GROUP BY-Selektionen durchführen.

Da FOR ALL ENTRIES keine Standard-SQL-Anweisung ist, sondern eine SAP-Erweiterung darstellt, wird bei der Verarbeitung auf den unterschiedlichen Datenbanken letztendlich die Anweisung vom ABAP-Stack ins Standard-SQL übersetzt. Bei sehr komplexen FOR ALL ENTRIES bestehen aus dem Grund weitere Optimierungsmöglichkeiten mithilfe von Parametrisierungen oder Hinweisen. Wenn man eine SAP-HANA-Datenbank im Einsatz hat, kann sogar ein Funktionsmodul (RSDU_CREATE_HINT_FAE) Anwendung finden, das die optimale Durchführung von FOR ALL ENTRIES vorbereitet. Weitere hilfreiche Informationen zu dem Thema können den folgenden SAP-Hinweisen entnommen werden:

Im nächsten Artikel werden wir uns der oftmals notwendigen Aggregation bzw. Verdichtung von nicht eindeutigen Datensätzen widmen. Dies ergibt sich beispielsweise, wenn die aus der Datenbank selektierten Informationen in unterschiedlichen Gruppen verteilt werden müssen.