Performante Lookups in BW-Transformationen - Die erstmalige Aggregation der selektierten Daten

Performante Lookups in BW-Transformationen - Die erstmalige Aggregation der selektierten Daten

Wir wissen jetzt, wie wir die Daten richtig selektieren, welche Tabellenart wir bei Lookups nutzen sollten und wie wir sicherstellen können, dass wir nur relevante Datensätze durchlesen.

In der Praxis ist es aber oft so, dass man erstmals eine größere und/oder nicht eindeutige Datenmenge von der Datenbank selektieren muss, die dann nach bestimmten Regeln fürs performante Nachlesen aggregiert werden sollte.

Table of Contents

Abhängig vom Aggregationsverfahren wird unterschiedlich vorgegangen. Beim Summieren, Errechnen des Zählers oder des Durchschnitts muss man i. d. R. durch jeden Datensatz der internen Tabelle schleifen. Beim Ermitteln des Minimal- bzw. Maximalwertes geht es aber auch schneller. Dafür muss man die erhaltenen Datensätze sortieren und daraufhin mit der Anweisung DELETE ADJACENT DUPLICATES bereinigen. Dabei hat man die Möglichkeit, mittels des Zusatzes COMPARING zu bestimmen, welche Felder für den Vergleich berücksichtigt werden sollen.

Dies wird anhand des folgenden Beispiels verdeutlicht. Wir haben eine Datenquelle dbTab. Diese beinhaltet unter anderem 3 Schlüsselfelder, ein Lookup-Feld zum Nachlesen und ein Datumsfeld. Unser Ziel ist es, den Lookup-Wert nur für den letzten, aktuellsten Datensatz zu selektieren, damit wir diesen später performanter nachlesen können.

Zuerst selektieren wir alle o. g. Felder aus dbTab, für die eine entsprechende Schlüsselkombination in unserem result_package vorhanden ist.

SELECT

key_field1

key_field2

key_field3

date_field

lookup_field

FROM dbTab INTO TABLE iTab

FOR ALL ENTRIES IN result_package

WHERE key_field1 = result_package-key_field1

AND key_field2 = result_package-key_field2 AND key_field3 = result_package-key_field3

Hiermit haben wir mehrere Datumsfelder pro Schlüsselfeld, wobei wir nur das aktuellste benötigen.

Ganz wichtig ist es, die Ergebnistabelle zu sortieren, da sonst DELETE ADJACENT DUPLICATES nicht funktionieren würde.

SORT iTab BY key_field1 ASCENDING

        key_field2 ASCENDING

         key_field3 ASCENDING

         date_field DESCENDING

Somit haben wir sichergestellt, dass die interne Tabelle iTab so aussieht.

Nach der Anweisung DELETE ADJACENT DUPLICATES bleiben dann nur die relevanten Datensätze übrig und wir können uns auf ein performantes Nachlesen dieser Datensätze freuen. :)

DELETE ADJACENT DUPLICATES FROM iTab COMPARING key_field1 key_field2 key_field3 date_field.

Du hast Fragen? Kontaktiere uns

Helene Fuchs

Your contact person

Helene Fuchs

Domain Lead Data Platform & Data Management

Pia Ehrnlechner

Your contact person

Pia Ehrnlechner

Domain Lead Data Platform & Data Management

Ähnliche Beiträge

chevron left icon
Vorheriger Beitrag
Nächster Beitrag
chevron right icon

Kein vorheriger Beitrag

Kein nächster Beitrag