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