Deutsch   |   English
   
 digg.com  del.icio.us 

MERGE Statement

Standard Anwendung

Eine (relativ) kleine Update-Tabelle wird benutzt, um Änderungen in eine (relativ) große Fakt-Tabelle zu übernehmen. Dabei sollen existierende Einträge (Primärschlüssel) aktualisiert und neue Einträge eingefügt werden. 

MERGE INTO customers c
USING new_customers n
ON 
(n.customer_no = c.customer_no)
WHEN MATCHED THEN 
    UPDATE SET 
    city_id=n.city_id
WHEN NOT MATCHED THEN 
    INSERT VALUES 
    (customer_no, first_name, last_name, gender, birthday, city_id);
 
 

Merge, reversed scenario

Beim "reversed" Merge geht es in der Regel nicht darum, Daten zu übernehmen, sondern eher um das Markieren von Zeilen nach gewissen Kriterien, z.B. im Zuge von Primary- und Foreign-Key Prüfungen während des ETL-Prozesses. Dementsprechend ist hier die Quelltabelle meist deutlich größer als die Zieltabelle.

INSERT Aktionen sind hier eher selten, in manchen Fällen kann MERGE durch ein entsprechendes UPDATE TABLE Statement mit EXISTS oder IN(SELECT) Konstrukten ersetzt werden. MERGE bietet im vergleich dazu aber die Möglichkeit, die Zieltabelle mit den Daten aus der Quelltabelle zu aktualisieren:

MERGE INTO new_customers n
USING customer c
ON( c.customer_no=n.customer_no )
WHEN MATCHED THEN 
	UPDATE 
	SET error_flag=TRUE, 
	error_text= 'Customer-id already exists with name ' || c.first_name || ',' ||c.last_name
	WHERE 
	c.first_name||c.last_name != n.first_name||n.last_name
 

Merge als Delta-Finder

Ein eher ungewöhnlicher Einsatzzweck für den MERGE-Befehl ist das Ermitteln von Differenzen bzw. Deltas fast identischer Tabellen. Als Beispiel dient hier ein täglicher Tabellenabzug, aus dem festgestellt werden soll, welche  Zeilen seit dem Vortag neu hinzugekommen, gelöscht oder geändert worden sind.

Im Normalfall würden Sie mehrere Einzelschritte mit MINUS-Operatoren bzw. OUTER JOINs durchführen.

  • Mit LEFT OUTER JOIN neue (primary key) Zeilen finden,
  • Mit RIGHT OUTER JOIN gelöschte (primary key) Zeilen finden und
  • Mit INNER JOIN mit Filtern geänderte (non primary key) Zeilen finden.

Alle drei Schritte können in einem einzelnen MERGE-Statement erledigt werden. Das Beispiel arbeitet destruktiv auf dem 'aktuellen' Auszug, der dazu um eine Spalte 'status_flag' erweitert wurde:

MERGE INTO new_customer n
USING customer c
ON 
(c.customer_no=n.customer_no)
WHEN MATCHED THEN
    UPDATE SET 
    status_flag='U'
         DELETE WHERE
        (c.first_name=n.first_name ANDAND c.city_id=n.city_id)
WHEN NOT MATCHED THEN
     INSERT VALUES
     (customer_no, first_name, ..., city_id, 'D')
;

Ergebnis:

  • Zeilen, die seit dem Vortag gelöscht wurden, waren in der today-Tabelle nicht mehr enthalten und wurden über die INSERT-Regel neu eingefügt und tragen das status_flag 'D' für delete.
  • Zeilen, die noch vorhanden sind, erhalten über die UPDATE-Regel generell das Flag 'U' für update.
  • Zeilen, die sich zum Vortag nicht geändert haben, werden über die zusätzliche DELETE-Regel direkt aus der today-Tabelle gelöscht.
  • Zeilen, die neu hinzugekommen sind, also in yesterday noch nicht existieren, sind vom Merge unangetastet und tragen ausschließlich das default- status_flag (ggf. NULL)
Sie kommen nicht weiter?
Von den Experten lernen:
Referenzen
  • AHOOLY
  • COOP
  • „Mit EXASolution sind wir für zukünftiges Datenwachstum bestens gerüstet. Dadurch, dass wir jetzt Geodaten verarbeiten, sprich die Dimension des Raumbezugs mit auswerten können, bieten wir unseren Kunden ganz neue Analysemöglichkeiten und noch umfassendere Marktübersichten. Wir sind sehr zufrieden mit der neuen Lösung, können flexibel auf zukünftige Anforderungen reagieren und trotzdem unsere Total Cost of Ownership reduzieren, da der so gewählte BI-Stack unsere Vision eines „Lean-BI“ in vollem Umfang unsterstützt.“

    Guido Niermann, IT-Leiter, Dataforce GmbH

    Dataforce
  • "Durch die Einbindung von EXASOL können wir unseren Kunden ein ganz neues Erlebnis bezüglich der explorativen Datenanalyse bieten… Neben der Technologie waren wir vor allem mit der Pre-Sales Beratung und dem Support während der Integration äußerst zufrieden."

     Martin Heink
    Geschäftsführer und Inhaber, econda GmbH 

    Econda
  • "Entscheidend für die IMS Health war insbesondere, dass wir uns durch einen sehr schnell aufgesetzten Proof of Concept von der Leistungsfähigkeit von EXASolution direkt überzeugen konnten."

     Michael Kempke
    Director Data Collection Global Operations, IMS Health GmbH & Co. OHG

    IMS
  • "Mit der innovativen Datenbank von EXASOL können wir komplexe Berechnungen genauer und umfangreicher durchführen. Das gibt uns einen signifikanten Technologievorsprung gegenüber der Konkurrenz."

     Tobias Kiessling
    CTO, intelliAd 

    Intelliad
  • "Die durchgängig hohe Leistung und die Möglichkeit, Echtzeitanalysen fahren zu können, waren für uns ausschlaggebend bei der Wahl von EXASolution."

     Tobias Kroha, Geschäftsführer der für das m-pathy-Projekt verantwortlichen seto GmbH

    m-pathy
  • Media Control
  • Olympus
  • "Wir haben uns für EXASolution entschieden, da die Hochleistungsdatenbank mit den zu erwartenden großen Datenmengen sehr gut umgehen kann und optimale Flexibilität bietet."

     Dr. Michael Röbbecke
    (ehem.) Geschäftsführer, RatePAY 

    RatePAY
  • "Mit EXASolution können wir unsere Geschäftsprozesse deutlich optimieren." 

     Gerhard Zapf
    Projektleiter, Semikron 

    Semikron
  • "Ein zuverlässiger und schneller Support, eine bessere Kundenbetreuung sowie eine bewiesene Fachkompetenz…"

     David Hodge
    IT Director, Sony Music Entertainment Germany 

    Sony Music
  • SOQUERO
  • SponsorPay
  • Stayfriends
  • "Die Datenbank von EXASOL ist Technik made in Germany, auf die wir uns langfristig verlassen können. Da sie bei steigendem Datenvolumen selbstständig skaliert und auch physisch beliebig erweitert werden kann, wächst unsere Datenbank mit unserem Unternehmen, und wir können auch in Zukunft flexibel und schnell auf neue Anforderungen reagieren."

     Heinrich Zetlmayer
    Geschäftsführer, Turtle Entertainment 

    Turtle Entertainment
  • United Internet Dialog
  • "Mit EXASolution haben wir eine Lösung erworben, die unsere hohen Leistungsansprüche komplexer Analysen bei steigenden Datenmengen für unsere Kunden optimal erfüllt." 

     Christian Sauer
    Geschäftsführer, Webtrekk GmbH 

    Webtrekk
  • "Wir haben uns nach einem ausgiebigen Benchmark-Test für die Lösung von EXASOL entschieden. Die hohe Performance des Systems, das Preis-/Leistungs-Verhältnis und der Service haben uns vollauf überzeugt"

    Dr. Ulrich Fricke
    Leiter Business Intelligence, XING AG 

    Xing
  • "Neben Wirtschaftlichkeit, Geschwindigkeit und hoher Leistungsfähigkeit war Flexibilität eines der entscheidenden Kriterien bei der Wahl unserer Datenbank… Die neue Datenbank bietet uns diese Skalierbarkeit bei reduzierten Total Cost of Ownership. So können wir auch in Zukunft immer die optimale Analyseleistung für unsere Kunden erbringen…"

     Sebastian Hoop
    Head of Operations, xplosion interactive gmbh 

    Xplosion
  • Zalando