Data Warehousing und Data Mining ETL: Extraction, Transformation, Load Ulf Leser Wissensmanagement in der Bioinformatik Sprachen für OLAP Operationen • Sprachen für OLAP Operationen – Bereitstellung der notwendigen Operationen – Ökonomisches Design • Keine vielfach geschachtelten SQL Operationen • Keine „Programmierung“ • Hauptsächlich zwei Ansätze – Multidimensional Expressions (MDX) • Basiert direkt auf MDDM Elementen: Cube, Dimension, Fakt, ... • Auf dem Vormarsch als Standard – Erweiterungen von SQL • Erweiterungen um spezielle Operationen (ROLLUP, CUBE, …) • Daten müssen relational vorliegen • „MDDM-unaware“ – Anfragen müssen auf Star-/ SnowflakeSchema formuliert werden Ulf Leser: DWH und DM, Sommersemester 2007 2 MDX • MDX: Multidimensional Expressions – Microsoft‘s Vorschlag, „OLE DB for OLAP“ • Eigene Anfragesprache – – – – – Standard ohne feste Semantik (by example) MDDM Konzepte als First-Class Elemente Dadurch kompaktere Anfragen als mit SQL SQL-artige Syntax Sehr mächtig und komplex • Erzeugung der Objekte (DDL) erfolgt anderweitig – DSO Interface (Decision Support Objects) von SQL Server • Wird von vielen kommerziellen Tools zur Kommunikation mit OLAP Datenbank benutzt Ulf Leser: DWH und DM, Sommersemester 2007 3 Struktur einer MDX Query SELECT <axis-spec1>, <axis-spec2>, .. FROM <cube-spec1>, <cube-spec2>, ... WHERE <slice-specification> • Dimensions (SELECT) – Angabe der darzustellenden Achsen – Abbildung in „mehrdimensionale“ Tabellen • ON COLUMNS, ROWS, PAGES, CHAPTER, ... – Jede Achsenspezifikation muss eine Menge von Members beschreiben • Als explizit angegebene Menge (in {}) • Oder durch Funktionen – Namen von Members werden in [] verpackt • Wenn nötig zur syntaktischen Abgrenzung • Cube (FROM) – Auswahl des Basis-Cubes für die Anfrage • Slicer (WHERE) – Auswahl des betreffenden Fakten – Intuitiv zu lesen als „etwas zu tun haben mit“ Ulf Leser: DWH und DM, Sommersemester 2007 4 Beispiel Member: Unique Names oder Navigation Verschiedene Klassifikationsstufen in einer Dim möglich SELECT {Wein, Bier, Limo, Saft} ON COLUMNS {[2000], [1999], [1998].[1], [1998].[2]} on ROWS FROM Sales WHERE (Measures.Menge, Region.Germany) Auswahl des Fakt „Menge“ Beschränkung auf WerteWein in BRD Bier Limo Saft 2000 1999 Implizite Summierung 1998.1 1998.2 Ulf Leser: DWH und DM, Sommersemester 2007 5 Navigation in den Hierarchien SELECT {Prodgroup.MEMBERS, [Becks Bier].PARENT} ON COLUMNS {Year.MEMBERS} on ROWS FROM Sales WHERE (Measures.Menge) Navigationsfunktionen • • • • • MEMBERS: Knoten einer Klassifikationsstufe CHILDREN: Kinderknoten eines Klassifikationsknoten PARENT: Vaterknoten eines Klassifikationsknoten LASTCHILD, FIRSTCHILD, NEXTMEMBER, LAG, LEAD... DESCENDENTS: Rekursives Absteigen Ulf Leser: DWH und DM, Sommersemester 2007 6 SQL und OLAP • Übersetzung MDDM in Star- oder Snowflake Schema • Triviale Operationen – Auswahl (slice, dice): Joins und Selects – Verfeinerung (drill-down): Joins und Selects • Einfache Operation – Aggregation um eine Stufe: Group-by • Interessant – Hierarchische Aggregationen – Multidimensionale Aggregationen – Analytische Funktionen (gleitende Durchschnitte etc.) • Ist alles in SQL-92 möglich, aber nur kompliziert auszudrücken und ineffizient in der Bearbeitung Ulf Leser: DWH und DM, Sommersemester 2007 7 Hierarchische Aggregation –2Alle Verkäufe der Produktgruppe „Wein“ nach Tagen, Monaten und Jahren Benötigt UNION und eine Query pro Klassifikationsstufe SELECT FROM WHERE T.day_id, sum(amount*price) sales S, product P P.pg_name=„Wein“ AND P.product_id = S.product_id SELECT T.month_id, sum(amount*price) GROUP BY FROM T.day_id sales S, product P, time T WHERE P.pg_name=„Wein“ AND P.product_id = S.product_id AND SELECT T.year_id, sum(amount*price) T.day_id FROM = S.day_id sales S, product P, time T GROUP BY T.month_id WHERE P.pg_name=„Wein“ AND P.product_id = S.product_id AND T.day_id = S.day_id GROUP BY T.year_id Ulf Leser: DWH und DM, Sommersemester 2007 8 ROLLUP Beispiel SELECT FROM WHERE GROUP BY T.year_id, T.month_id, T.day_id, sum(...) sales S, time T T.day_id = S.day_id ROLLUP(T.year_id, T.month_id, T.day_id) 1997 Jan 1 1997 Jan ... 1997 Jan 31 1997 Jan ALL 1997 Feb ... 1997 March ALL 1997 ... ... 1997 ALL ALL 1998 Jan 1 1998 ... ... 1998 ALL ALL ... ... ... ALL ALL ALL Ulf Leser: DWH und DM, Sommersemester 2007 200 300 31.000 450 1.456.400 100 45.000 12.445.750 9 Multidimensionale Aggregation Verkäufe nach Produktgruppen und Jahren 1998 • • • • 1999 2000 Gesamt Weine 15 17 13 45 Biere 10 15 11 36 Gesamt 25 32 24 81 sum() ... GROUP BY pg_id, year_id sum() ... GROUP BY pg_id sum() ...viele GROUP BY year_id Wie Queries sind notwendig sum() Ulf Leser: DWH und DM, Sommersemester 2007 ? 10 CUBE - Beispiel SELECT pg_id, shop_id, sum(amount*price) FROM sales S ... GROUP BY CUBE (S.pg_id, S.shop_id, T.year_id) Bier Kreuzberg ALL ... Bier Charlottenburg ALL ... Bier ALL 1997 ... Wein ALL 1998 ... ALL Kreuzberg 1997 ... ALL Charlottenburg 1998 ... Bier ALL ALL ... Wein ALL ALL ... ALL ALL 1997 ... ALL ALL 1998 ... ALL Kreuzberg ALL ... ALL Charlottenburg ALL ... ALL ALL ALL ... Ulf Leser: DWH und DM, Sommersemester 2007 11 SQL Analytical Functions • Erweiterung in SQL3 zur flexibleren Berechnung von Aggregaten und Rankings – Ausgabe der Summe Verkäufe eines Tages zusammen mit der Summe Verkäufe des Monats in einer Zeile – Rang der Summe Verkäufe eines Monats im Jahr über alle Jahre – Vergleich der Summe Verkäufe eines Monats zum gleitenden Dreimonatsmittel • OLAP Funktionen – Erscheinen in der SELECT Klausel – Berechnen für jedes Tupel des Stroms der Groupby-Query einen Wert – Diese Werte können von neuen, in der SELECT Klausel angegeben Partitionierungen und Sortierungen abhängen – Damit kann man unabhängige Gruppierungen in einer Zeile des Ergebnisses verwenden • CUBE etc. erzeugen immer neue Tupel Ulf Leser: DWH und DM, Sommersemester 2007 12 OVER() mit lokaler Partitionierung • OVER() gestattet die Angabe attributlokaler Partitionen • Ausgabe der Summe Verkäufe eines Tages im Verhältnis zu Verkäufen des Jahres SELECT FROM GROUP BY S.day_id, sum(amount) AS day_sum, sum(amount) OVER(PARTITION BY YEAR(S.day_id)) AS year_sum, day_sum/year_sum AS ratio sales S, SQL Funktion S.day_id; day_id day_sum YEAR() day_id day_sum year_sum Ratio 1.1.1999 500 1.1.1999 500 5.000 0.10 2.1.1999 500 2.1.1999 500 5.000 0.10 3.1.1999 1.000 3.1.1999 1.000 5.000 0.20 1.2.1999 1.500 1.2.1999 1.500 5.000 0.30 2.2.1999 1.500 2.2.1999 1.500 5.000 0.30 1.1.2000 600 1.1.2000 600 1.000 0.60 5.5.2000 400 5.5.2000 400 1.000 0.40 4.000 4.000 1.00 13 1.10.2001 4.000 1.10.2001 Ulf Leser: DWH und DM, Sommersemester 2007 Veranschaulichung S.day_id, sum(amount), sum(amount) OVER(PARTITION BY YEAR(S.day_id)) GROUP BY S.day_id GROUP BY YEAR(day_id) (S.day_id, sum(amount)) FROM sales S Ulf Leser: DWH und DM, Sommersemester 2007 14 Lokale Sortierung • Durch lokale Sortierung mit ORDER BY kann die Reihenfolge der Tupel im inneren Strom pro OVER() Klausel bestimmt werden • Die Aggregatfunktion iteriert bei einem ORDER BY nur über die Tupel zwischen dem ersten bis zum aktuellen Tupel (bzgl. der angegebenen Ordnung) • Dadurch kann man kumulierte Summen erreichen • Beispiel: Summe der Verkäufe pro Tag sowie die kumulierten Gesamtverkäufe nach Tagen, und die kumulierten Verkäufe im jeweiligen Monat nach Tagen SELECT FROM GROUP BY S.day_id, sum(amount) AS day_sum, sum(amount) OVER(ORDER BY S.day_id) AS cum_sum, sum(amount) OVER(PARTITION BY S.month_id ORDER BY S.day_id) AS cumm_sum sales S, S.day_id; Ulf Leser: DWH und DM, Sommersemester 2007 15 Dynamische Fenster • Der Vergleich der Werte des aktuellen Tuples mit den lokalen Aggregaten zieht immer folgende Tupel in die Aggregation mit ein – OVER() ohne Argument: Alle Tupel – OVER(PARTITION BY): Alle Tupel der gleichen Partition – OVER(ORDER BY): Alle Tupel zwischen Ordungsbeginn und aktuellem Tupel • Das Fenster des Vergleichs kann man auch explizit angeben – ROWS BETWEEN … AND … – Möglich jeweils • UNBOUND PRECEDING / FOLLOWING: Vom Anfang / bis zum Ende • K PRECEDING / FOLLOWING: Die k Tupel vorher / nachher • CURRENT ROW: aktuelles Tupel • Damit kann man gleitende Durchschnitte bilden Ulf Leser: DWH und DM, Sommersemester 2007 16 Inhalt dieser Vorlesung • ETL: Extraction, Transformation, Load - - Extraktion von Daten aus Quellen Das Differential Snapshot Problem Laden von Daten in das DWH Schema- und Datenheterogenität - • Datenkonflikte Datentransformation Datenqualität – – Data Cleansing Der Merge/Purge Algorithmus Ulf Leser: DWH und DM, Sommersemester 2007 17 Der ETL Prozess 100 80 60 40 20 0 1. 2. 3. 4. Qr t l. Qr t l. Qr t l. Qr t l. • Extraction • Transformation • Load Ulf Leser: DWH und DM, Sommersemester 2007 18 ETL - Übersicht • Daten werden mehrmals physikalisch bewegt – Von den Quellen zur Staging Area • Extraktion von Daten aus den Quellen • Erstellen / Erkennen von differentiellen Updates • Erstellen von LOAD Files – Von der Staging Area zur Basisdatenbank • Data Cleaning und Tagging • Erstellung integrierter Datenbestände • Ziele – Kontinuierliche Datenversorgung des DWH – Sicherung der DWH Konsistenz bzgl. Datenquellen • Effiziente Methoden essentiell -> Sperrzeiten minimieren • Rigorose Prüfungen essentiell -> Datenqualität sichern Ulf Leser: DWH und DM, Sommersemester 2007 19 1. Extraktion • Aufgabe: Extraktion von Änderungsdaten aus Quellen – Ist auf Kooperation der Quellen angewiesen – Quellen müssen ihre Daten preisgeben • Überwindet Systemgrenzen – Zugriff auf HOST Systeme ohne Online Zugriff • BATCH Jobs, Reportwriter – Daten in Non-standard Datenbanken • Keine Anfragesprachen im eigentlichen Sinne • Programmierung in PL-1, COBOL, Natural, IMS, ... – Verteiltes (Herrschafts-)Wissen • Unklare Semantik, Doppelbelegung von Feldern, sprechende Schlüssel • Fehlende Dokumentation – Oftmals kommerzielle Tools vorhanden • Insb. zum Zugriff auf Standardsoftware Ulf Leser: DWH und DM, Sommersemester 2007 20 Extraktion • Zwei wichtige Eigenschaften des Extraktionsschritts – Zeitpunkt – Art der extrahierten Daten • Zu beachten – Wir betrachten meistens „Flow“-artige DWH • Alle Veränderungen (Verkäufe, Telefonate, …) sollen im Cube repräsentiert werden • Nachträgliche Änderungen sind möglich, aber eher selten – Stornierungen, Rücksendungen – Die Situation ist anders bei „Stock“-artigen Daten • Zustand zu einem bestimmten Zeitpunkt (Lagerbestand) • Hier müssen die Zeitpunkte festgelegt werden Ulf Leser: DWH und DM, Sommersemester 2007 21 Zeitpunkt der Extraktion • Synchrone Extraktion – Quelle propagiert jede Änderung • Asynchrone Extraktion – Periodisch • Push: Quellen erzeugen regelmäßig Extrakte – Das ist Standard: Reportgenerierung • Pull: DWH fragt regelmäßig Datenbestand ab – Ereignisgesteuert • Push: Quelle informiert z.B. alle X Änderungen • Pull: DWH erfragt Änderungen bei bestimmten Ereignissen – Jahresabschluss, Quartalsabschluss, … – Anfragegesteuert • Push: • Pull: DWH erfragt Änderungen bei jedem Zugriff auf die (noch nicht vorhandenen oder potentiell veralteten) Daten Ulf Leser: DWH und DM, Sommersemester 2007 22 Art der Daten • Snapshot: Quelle liefert kompletten Datenbestand – Lieferantenkatalog, Preisliste, etc. („Stock“-artige Daten) – Korrekter Import erfordert Erkennen von Änderungen • Differential Snapshot-Problem • Alternative: Komplettes Überschreiben (aber IC!) – Historie kann nicht exakt abgebildet werden • Warum nicht? • Log: Quelle liefert jede Änderung seit letztem Export – Transaktionslogs oder anwendungsgesteuertes Logging – Kann direkt importiert werden • Das DWH speichert dann ggf. Ereignis und seine Stornierung • Nettolog: Quelle liefert das Delta zum letzten Export – Kann direkt importiert werden – Bei „Stock“-artigen Daten keine komplette Historie möglich Ulf Leser: DWH und DM, Sommersemester 2007 23 Datenversorgung Quelle ... Technik Aktualität DWH Belastung DWH Belastung Quellen ... erstellt periodisch Exportfiles Reports, Snapshots Je nach Frequenz Eher niedrig Eher niedrig ... pushed jede Änderung Trigger, Changelogs, Replikation Maximal Hoch Hoch ... erstellt Extrakte auf Anfrage (Poll) Vor Benutzung Sehr schwierig Maximal Medium Medium Anwendungsgesteuert Je nachdem Je nach Frequenz Je nach Frequenz Je nach Frequenz Ulf Leser: DWH und DM, Sommersemester 2007 24 Inhalt dieser Vorlesung • ETL: Extraction, Transformation, Load - - Extraktion von Daten aus Quellen Das Differential Snapshot Problem Laden von Daten in das DWH Schema- und Datenheterogenität - • Datenkonflikte Datentransformation Datenqualität – – Data Cleansing Der Merge/Purge Algorithmus Ulf Leser: DWH und DM, Sommersemester 2007 25 Differential Snapshot Problem [LGM96] • Viele Quellen liefern immer den vollen Datenbestand – – – – Molekularbiologische Datenbanken Kundenlisten, Angestelltenlisten Produktkataloge „Dumme“ Reports • Problem – Ständiges Einspielen aller Daten ineffizient • Häufige Wiederholung derselben Operationen – Duplikate müssen erkannt und gelöscht werden • Erfordert vorheriges Löschen oder Überschreiben • Viele Probleme mit Schlüsseln, IC‘s, … • Gesucht: Algorithmen zur Berechnung von DELTA-Files für sehr große Dateien Ulf Leser: DWH und DM, Sommersemester 2007 26 Das Differential Snapshot Problem (DSP) • Quelle liefert Snapshots als Files Fi – Einfache und identische Struktur mit Attributen A1, … An – Jedes Tupel hat einen Schlüssel k – File = ungeordnete Menge von Records (K, A1, ... An) • Definition Gegeben zwei Dateien F1, F2 gleicher Struktur mit f1=|F1|, f2=|F2|. Das Differential Snapshot Problem (DSP) besteht darin, die kleinste Menge O={INS, DEL, UPD}* zu finden für die gilt: O(F1) = F2 • Bemerkung – INS, DEL, UPD operieren jeweils auf genau einem Tupel identifiziert über seinen Schlüssel k • Änderungen in mehreren Attributen eines Tuples zählen wir nur einmal – O ist im Allgemeinen nicht eindeutig • O1={ (ins(X)),(del(X)) } ≡ {} Ulf Leser: DWH und DM, Sommersemester 2007 27 Szenario Alter Snapshot INS INS DEL UPD K104, k,k,... K4, t,r,... K202, a,a,... K102, p,q,... Neuer Snapshot K103 K3 K4 K202: ... DSP - Algorithmus K103, t,h,... K104, k,k,... K102, p,q,... K3, t,r,... K202, b,b,... Ulf Leser: DWH und DM, Sommersemester 2007 DWH 28 Annahmen • Kostenmodell – IO Komplexität – Alle Operationen im Hauptspeicher sind umsonst – Das Lesen jedes Records kostet 1 • Sequentielles Lesen – Das Schreiben des DS ignorieren wir • Das ist immer gleich teuer (wenn wir das kleinste finden …) – Keine Beachtung von Blockgrößen etc. • Hauptspeichergröße: m Records • Files wesentlich größer als Hauptspeicher • Achtung: Ähnlich zu Joins, aber … – Wir haben keine Duplikate (0-1 : 0-1 Beziehung) – Joins erzeugen keine INS, DEL • Sondern (in gewisser Weise) nur UPD Ulf Leser: DWH und DM, Sommersemester 2007 29 1. Versuch: DSsmall - kleine Files • Annahme: Hauptspeicher m >f1 oder >f2 • Algorithmus (sei m>f1) – F1 komplett in den Hauptspeicher lesen – F2 sequentiell lesen. Für Record r • r∈F1: O=O∪(UPD r) (oder ignorieren, wenn keine Änderung) • r∉F1: O=O∪(INS r) • A[r]=true – Abschließend: Alle Records r∈F1 mit A[r]=false: O=O∪(DEL r) • Anzahl IO: • f1+f2 • Verbesserungen • F1 im Speicher sortieren – schnellerer Lookup Ulf Leser: DWH und DM, Sommersemester 2007 30 2. Versuch: DSnaive – Nested Loop • Ab jetzt: m<<f1 und m<< f2 • Algorithmus – – – – – Record r aus F1 lesen r in F2 suchen, dazu F2 sequentiell lesen r nicht in F2: O=O∪(DEL r) r verändert in F2 : O=O∪(UPD r) r unverändert in F2 : ignorieren • Problem? – INS wird nicht gefunden • Lösung – – – – Array A mit IDs aus F2 on-the-fly generieren Für jedes r, das in F2 enthalten ist: A[r]=true Abschließender Lauf über A; A[r]=false : (INS r) Nachteil? • Geht nur, wenn A in den Hauptspeicher passt • Sonst: Nested Loop in die Gegenrichtung laufen lassen Ulf Leser: DWH und DM, Sommersemester 2007 31 DSnaive – Verbesserungen • Kosten? – Anzahl IO : f1*f2+INS-Erzeugung • Verbesserungen? – Suche in F2 abbrechen, wenn r gefunden • Verbessert die Laufzeit erheblich, Worst-Case Komplexität bleibt gleich – Jeweils Partition mit Größe m von F1 laden • Verbesserung der Kosten auf f1/m*f2 • Ähnlich zu Blocked-Nested-Loop Ulf Leser: DWH und DM, Sommersemester 2007 32 3. Versuch: DSsort – Sort-Merge • Sortieren auf Sekundärspeicher – F1 in Partitionen Pi mit |Pi|=m lesen – Pi im Hauptspeicher sortieren und als Fi schreiben – Alle Fi mergen • Dazu müssen wir vielleicht sehr viele Dateien öffnen • Kann man umgehen (hierarchisches, externes Sortieren) 1x f 1x f 2xf • Sortiertes F2 aufheben für nächstes DS – Pro DS muss dann nur ein F (F2) sortiert werden • Algorithmus – Sortierte F1‘ und F2 ‘ öffnen – Mergen (paralleles Lesen mit Skipping) f1 + f 2 • Anzahl IO • f1+5*f2 Ulf Leser: DWH und DM, Sommersemester 2007 33 DSsort2 – Verbesserung • Sortiertes F1 vorhanden – Vom letzten Berechnen • Berechnung von O – F2 in Partitionen Pi mit |Pi|=m lesen – Pi im Hauptspeicher sortieren und als F2i schreiben – Alle F2i mergen und gleichzeitig mit F1 vergleichen • Dabei sortierte F2i für das nächste Mal schreiben 1x f2 1x f2 f1 + 2*f2 ¾ Anzahl IO: f1+4*f2 Geht‘s noch besser ? Ulf Leser: DWH und DM, Sommersemester 2007 34 4. Versuch: DShash – Partitioned Hash • Trick: Persistente Sortierung der Pi ist nicht wirklich notwendig • Algorithmus – F2 in Partitionen Pi mit |Pi|=m/2 hashen • Sicherstellen der Obergrenze für Platzbedarf der Hash-Buckets ist hier die Schwierigkeit 2x f2 – F1 liegt noch partitioniert vom letzten Mal vor • Mit derselben Hashfunktion • Damit hat man genau zwei m/2 große Partitionen von Records, die alle denselben Hashkey haben • Partitionen sind nicht sortiert f1+ f2 – Jeweils P1,i und P2,i parallel lesen und DS berechnen • Anzahl IO: f1 + 3*f2 Ulf Leser: DWH und DM, Sommersemester 2007 35 Warum nicht einfach ... • … UNIX diff verwenden? – diff erwartet / beachtet Umgebung der Records – Hier: Records sind völlig ungeordnet • … DSP in der Datenbank lösen? – Dreimaliges Lesen jeder Relation notwendig • … je nachdem, wie gut die Datenbank optimiert … INSERT INTO delta SELECT ‚UPD‘, ... FROM F1, F2 WHERE F1.K=F2.K AND K1.W≠F2.W UNION SELECT ‚INS‘, ... FROM F2 WHERE NOT EXISTS ( ...) UNION SELECT ‚DEL‘, ... FROM F1 WHERE NOT EXISTS ( ...) Ulf Leser: DWH und DM, Sommersemester 2007 36 Vergleich - Eigenschaften IO Bemerkungen DSnaiv f1 * f2 Außerdem INS-Datenstruktur notwendig Dssmall f1 + f2 Nur für kleine Dateien Dssort2 f1 + 4*f2 Dshash f1 + 3*f2 Gleichverteilende Hashfunktion notwendig Partitionsgröße schwierig zu schätzen Auf keinen Fall größer als 2*m/2 werden Gefahr, beträchtlich Speicher zu verschwenden Ulf Leser: DWH und DM, Sommersemester 2007 37 Weitere DS Verfahren • Anzahl Partitionen / Runs größer als Filehandles des OS – Hierarchische externe Sortierverfahren • Kompression – • • • Files komprimieren Größere Partitionen / Runs Größere Chance, Vergleich in-memory durchzuführen In Realität schneller (bei unserem Kostenmodell nicht) • „Windows“ Algorithmus – – – – Annahme: Files haben eine „unscharfe“ Ordnung Merging mit sliding window über beide Files Liefert u.U. redundante INS-DEL Paare Anzahl IO: f1+f2 Ulf Leser: DWH und DM, Sommersemester 2007 38 DS mit Zeitstempel • • • • Annahme: Records sind (K, A1,...,An,T) T: Zeitstempel der letzten Änderung Kann man das für einen O(f2)-Algorithmus ausnutzen? Algorithmus – Festhalten von des letzten Update jedes Files (T0) – F2 sequentiell lesen • Nur Records mit T > T0 interessant – Aber: INS oder UPD? – Weiteres Problem: DEL wird nicht gefunden • Zeitstempel erspart nur Attributvergleich, aber nicht das Lesen der Records Ulf Leser: DWH und DM, Sommersemester 2007 39 Inhalt dieser Vorlesung • ETL: Extraction, Transformation, Load - - Extraktion von Daten aus Quellen Das Differential Snapshot Problem Laden von Daten in das DWH Schema- und Datenheterogenität - • Datenkonflikte Datentransformation Datenqualität – – Data Cleansing Der Merge/Purge Algorithmus Ulf Leser: DWH und DM, Sommersemester 2007 40 Load • Aufgabe – Effizientes Einbringen von externen Daten in DWH • Kritischer Punkt – Load-Vorgänge blockieren unter Umständen die komplette DB (Schreibsperre auf Faktentabelle) • Möglichkeiten – Satzbasiert – BULK-Load – Anwendungsspezifische Schnittstellen • Z.B. SAP • Aspekte – Trigger, Integritätsconstraints, Indexaktualisierung – Update oder Insert? Ulf Leser: DWH und DM, Sommersemester 2007 41 Satzbasiert • Standard-Schnittstellen: PRO*SQL, JDBC, ODBC, ... • Arbeitet im normalen Transaktionskontext • Trigger, Indexe und Constraints bleiben aktiv – Manuelle Deaktivierung möglich • Keine großräumigen Sperren – Satzsperren – Sperren können durch Zwischen-COMMIT verringert werden • In Oracle ist das weniger performant – shadow blocks • Aber andere Prozesse erhalten wieder eine Chance • Benutzung von Prepared Statements essentiell • Teilweise proprietäre Erweiterungen (Arrays) verfügbar Ulf Leser: DWH und DM, Sommersemester 2007 42 BULK Load • DB-spezifische Erweiterungen zum Laden großer Datenmengen • Läuft (meist) in speziellem Kontext – – – – – – – – Oracle: sqlldr mit DIRECTPATH Option Komplette Tabellensperre Keine Beachtung von Triggern oder Constraints Indexe werden erst nach Abschluss aktualisiert Kein transaktionaler Kontext Kein Logging (d.h. kein Recovery etc.) Checkpoints zum Wiederaufsetzen Rasend schnell • Praxis: BULK Uploads Ulf Leser: DWH und DM, Sommersemester 2007 43 Beispiel: ORACLE sqlldr Controlfile LOAD DATA INFILE 'book.dat' REPLACE INTO TABLE book ( book_title POSITION(1) CHAR(35), book_price POSITION(37) ZONED(4,2), book_pages POSITION(42) INTEGER, book_id "book_seq.nextval" ) Quelle: Oracle 9.2, Dokumentation Ulf Leser: DWH und DM, Sommersemester 2007 44 BULK Load Beispiel • Vielfältige Optionen – – – – – – – – – Behandlung von Ausnahmen (Badfile) Einfache Datentransformationen Checkpoints Optionale Felder Konditionales Laden in mehrere Tabellen Konditionales Laden von Records REPLACE oder APPEND Paralleles Laden ... Ulf Leser: DWH und DM, Sommersemester 2007 45 Direct Path Quelle: Oracle 9.2, Dokumentation Ulf Leser: DWH und DM, Sommersemester 2007 46 Technik: Quelle – Arbeitsbereich - BasisDB Quelle 1 RDBMS Quelle 2 IMS Rel. Schema Q1 Rel. Schema Q2 Cube; Integriertes Schema • BULK Load nur für ersten Schritt • Zweiter Schritt – INSERT INTO ... SELECT .... – Logging ausschaltbar – Parallelisierbar Ulf Leser: DWH und DM, Sommersemester 2007 47 Transformationen beim Laden der Daten • Extraktion der Daten aus Quelle mit einfachen Filtern – Spaltenauswahl, Keine Reklamationen, ... • Erstellen eines LOAD Files mit einfachen Konvertierungen – Zahl – String, Integer – Real, ... • Transformation meist zeilenorientiert • Vorbereitung für den DB-spezifischen BULK-LOADER while (read_line) parse_line if (f[10]=2 & f[12]>0) write(file, f[1], string(f[4]), f[6]+f[7],... ... bulk_upload( file) Ulf Leser: DWH und DM, Sommersemester 2007 48 Transformationen in Staging Area • Benutzt SQL • Effiziente mengenorientierte Berechnungen möglich • Vergleiche über Zeilen hinaus möglich – Schlüsseleigenschaft, Namensduplikaterkennung, ... • Vergleiche mit Daten in Basisdatenbank möglich – Duplikate, Plausibilität (Ausreißer), Konsistenz (Artikel-Ids) • Typisch: Tagging von Datensätzen durch Prüf-Regeln UPDATE sales SET price=price/MWST; UPDATE sales SET cust_name= (SELECT cust_name FROM customer WHERE id=cust_id); ... UPDATE sales SET flag1=FALSE WHERE cust_name IS NULL; ... INSERT INTO DWH SELECT * FROM sales WHERE f1=TRUE & f2=TRUE & ... Ulf Leser: DWH und DM, Sommersemester 2007 49 Quelle – Arbeitsbereich – Cube Was macht man wo und wann ? Quelle -> Arbeitsbereich Arbeitsbereich -> Cube Art des Zugriffs Satzorientiert (read) Mengenorientiert (SQL) Verfügbare Datenbasen Eine Quelle Viele Quellen Verfügbare Datensätze Quellabhängig: Alle, alle Änderungen, Deltas Zusätzlich Cube verfügbar (für Duplikate etc.) Programmiersprache Skripte: Perl, AWK, ... oder 3GL SQL, PL/SQL Ulf Leser: DWH und DM, Sommersemester 2007 50 Inhalt dieser Vorlesung • ETL: Extraction, Transformation, Load - • Extraktion von Daten aus Quellen Das Differential Snapshot Problem Laden von Daten in das DWH Schema- und Datenheterogenität - • Datenkonflikte Datentransformation Datenqualität – – Data Cleansing Der Merge/Purge Algorithmus Ulf Leser: DWH und DM, Sommersemester 2007 51 Heterogenität • Zwei Informationssysteme sind heterogen, wenn sie sich „irgendwie“ unterscheiden • Verschiedene Ausprägungen von „irgendwie“ => verschiedene Arten von Heterogenität • Informationsintegration = Überbrückung von Heterogenität • Erstellung eines homogenen Systems • Materialisierte Integration • Oder: Erweckung des Anscheins eines homogenen Systems • Virtuelle Integration Ulf Leser: DWH und DM, Sommersemester 2007 52 Heterogenität DWH CRMSystem Lagerverwaltung Ulf Leser: DWH und DM, Sommersemester 2007 Produktionsplanung CRM-System der Tocherfirma 53 Übersicht • Technische Heterogenität • • Technische Realisierung des Datenzugriffs Technische Unterschiede in der Darstellung • Syntaktische Unterschiede • • Unterschiede in der Darstellung Gleiche Dinge syntaktisch verschieden repräsentieren • Datenmodellheterogenität • Strukturelle Heterogenität • • Strukturelle Unterschiede in der Darstellung Gleiche Dinge verschieden modellieren • Semantische Heterogenität • • Unterschiede in der Bedeutung von Namen (Schema und Daten) Gleiches sagen, verschiedenes meinen (oder andersrum) Ulf Leser: DWH und DM, Sommersemester 2007 54 Syntaktische Heterogenität • Unterschiedliche Darstellung desselben Sachverhalts • • • • • • • Dezimalpunkt oder –komma Euro oder € Comma-separated oder tab-separated HTML oder ASCII oder Unicode Notenskala 1-6 oder „sehr gut“, „gut“, … Binärcodierung oder Zeichen Datumsformate (12. September 2006, 12.9.2006, 9/12/2006, …) • Überwindung in der Regel nicht problematisch • Umrechnung, Übersetzungstabellen, … Ulf Leser: DWH und DM, Sommersemester 2007 55 Datenmodellheterogenität • Typische Datenmodelle • • • • • • CSV Relational (Tupel) XML (XML) Non-Standard (ASN.1) Domänenspezifisch (ACeDB, EXPRESS, OPEN-GIS, …) Proprietär (UniProt, PDB, …) • Unterschied: Zum Austausch oder zur Speicherung • XML als Speicherformat? • Black-Box-Sicht – was zählt, ist was die Quelle liefert • Erfordert Konvertierung • Spezielle Semantik geht unter Umständen verloren • XML-Schachtelung im relationalen Modell? Ulf Leser: DWH und DM, Sommersemester 2007 56 Beispiel „Fast“ dasselbe in verschiedenen Datenmodellen Ulf Leser: DWH und DM, Sommersemester 2007 57 Strukturelle Heterogenität • Allgemein • Gleiche Dinge in unterschiedlichen Schemata ausdrücken • Andere Aufteilung von Attributen auf Tabellen • Fehlende / neue Attribute (wenn Intension nicht betroffen ist) • Setzt intensionale Überlappung voraus („gleiche Dinge“) • Fast immer mit semantischer Heterogenität verbunden • Ausnahme: 1:1 Beziehungen • Spezialfall: Schematische Heterogenität • Verwendung anderer Elemente eines Datenmodells • Kann nicht durch SQL überwunden werden Ulf Leser: DWH und DM, Sommersemester 2007 58 Beispiel • Verursacht durch verschiedene Abbildungen eines objektorientierten Modells • Gleichwertig? • Nur durch zusätzliche IC • S1: typ darf nur bestimmte Werte annehmen • S1: umsatz darf nicht immer gefüllt sein (abh. von typ) • S2: Gleiche film_id darf nicht in verschiedenen Tabellen vorkommen • … Ulf Leser: DWH und DM, Sommersemester 2007 59 Spezialfall: Schematische Heterogenität maenner( Id, vorname, nachname) frauen( Id, vorname, nachname) Relation vs. Wert person( Id, vorname, nachname, maennlich?, weiblich?) person( Id, vorname, nachname, geschlecht) Ulf Leser: DWH und DM, Sommersemester 2007 Relation vs. Attribut Attribut vs. Wert 60 Integrierte Sichten • Verlangt viele Verrenkungen • Sicht muss angepasst werden, wenn neue Filmtypen vorliegen • Datenänderungen bedingen Schemaänderungen • Das will man unbedingt vermeiden Ulf Leser: DWH und DM, Sommersemester 2007 61 Exotische Probleme? • Oh nein • Schema zur Speicherung von Filmen des Verleihers „XYZ“ • ACTORS als VARCHAR • ORIGINAL – bedeutet was? • TITLE, YEAR, … an drei Stellen • ID-Räume DEUTSCH und ORIGINAL getrennt? • … Ulf Leser: DWH und DM, Sommersemester 2007 62 Exotische Probleme? • Schema von eachmovie (HP) • Eine einzige Tabelle für Filme • Zusätzliche Informationen über Benutzer des WebSystems • Wenig Infos über Filme, aber Links zu weiteren Quellen • GENRE sind boolsche Attribute • … Ulf Leser: DWH und DM, Sommersemester 2007 63 Schema des Filmdienst FILM-PERSONEN ist m:n FILM-GENRE ist m:n Personen können mehrere Namen haben (Aliase, Künstlernamen) Ulf Leser: DWH und DM, Sommersemester 2007 Eigene Tabelle für Filmtitel und Filmtiteltypen (?) 64 Schema der IMDB ACTOR und ACTRESS in verschiedenen Tabellen Beteiligte in eigenen Tabellen (FD hat Tabelle FUNKTIONEN) Ulf Leser: DWH und DM, Sommersemester 2007 65 Semantik • Fremdwörterduden zu “Semantik” • „Teilgebiet der Linguistik, das sich mit den Bedeutungen sprachlicher Zeichen und Zeichenfolgen befasst“ • „Bedeutung, Inhalt eines Wortes, Satzes oder Textes“ • Programmiersprachen • Syntax: EBNF, Grammatiken • Semantik: Wirkungen der Ausführung; operationale Semantik, Fixpunktsemantik, … • Sprache • Syntaktisch falsch: „Ich esse Butterbrot ein“ • Semantisch falsch: „Ich esse einen Schrank“ Ulf Leser: DWH und DM, Sommersemester 2007 66 Semantik von was? Name Extension Realweltliche Objekte Ulf Leser: DWH und DM, Sommersemester 2007 Intension repräsentiert Konzept 67 Synonyme • Verschiedene Namen für dasselbe Konzept – Und die selbe „Menge“ von Objekten DB1: Angestellter( Id, Vorname, Name,männlich,weiblich) DB2: Person( Id, Vorname, Nachname, Geschlecht) Ulf Leser: DWH und DM, Sommersemester 2007 68 Homonyme • Gleiche Namen für verschiedene Konzepte – Treten oft bei Überschreitung von Domänengrenzen auf Sekr., Sachbearbeiter, Bereichsleiter, etc. DB1: Angestellter( Id, Vorname, Name, m, w, Funktion) DB2: Protein( Id, Sequenz, organismus, Funktion, …) Transport, Katalyse, Signal, … Ulf Leser: DWH und DM, Sommersemester 2007 69 Probleme • Mögliche Beziehungen zwischen Mengen A, B realweltlicher Objekte, die Konzepte c(A), c(B) repräsentieren • A=B (Äquivalenz): „semantische“ (echte) Synonyme • Kreditinstitut, Bank (?) • Gibt es echte Synonyme? • A⊆B (Inklusion): c(B) ist Hyperonym (Oberbegriff) zu c(A); c(A) ist Hyponym zu c(B) • Tochter ⊆ Kind • A ∩ B ≠ ∅ ∧ A≠B (Überlappung): Schwierigster Fall • Küche-Kochnische; Haus-Gebäude; Regisseur-Schauspieler • A ∩ B = ∅ (Disjunktion): nicht verwandte Begriffe (häufigster Fall) • Dose-Lohnsteuerjahresausgleich Ulf Leser: DWH und DM, Sommersemester 2007 70 Semantik: Woher nehmen? • Was bestimmt die Semantik eines Namens? • Für Attributnamen • • • • • • • • • • Datentyp Constraints (Schlüssel, FK, unique, CHECK, …) Zugehörigkeit zu einer Relation Andere Attribute dieser Relation Beziehung der Relation zu anderen Relationen Dokumentation Vorhandene Werte Wissen über den Anwendungsbereich … Der Kontext Ulf Leser: DWH und DM, Sommersemester 2007 71 Kontext • Semantik eines Namens ändert sich mit dem Kontext • Beispiel • • • • Unternehmen A: angestellte( …) Unternehmen B: mitarbeiter( …) Mitarbeiter und Angestellte kann man als Synonyme betrachten Aber: A.angestellte ∩ B.mitarbeiter = ∅ • Wenn Personen nicht in zwei Unternehmen beschäftigt sind • Erst bei einem Merger von A und B werden A.angestellte und B.mitarbeiter zu Synonymen • Sollten dann zu einer Tabelle integriert werden Ulf Leser: DWH und DM, Sommersemester 2007 72 Inhalt dieser Vorlesung • ETL: Extraction, Transformation, Load - • Extraktion von Daten aus Quellen Das Differential Snapshot Problem Laden von Daten in das DWH Schema- und Datenheterogenität - • Datenkonflikte Datentransformation Datenqualität – – Data Cleansing Der Merge/Purge Algorithmus Ulf Leser: DWH und DM, Sommersemester 2007 73 Datenkonflikte • Datenkonflikt • Zwei Duplikate haben unterschiedliche Attributwerte für ein semantisch gleiches Attribut • Datenkonflikte entstehen • Innerhalb eines Informationssystems (intra-source) • Bei der Integration mehrerer Informationssysteme (intersource) • Besser: Konflikte werden durch Integration aufgedeckt • Voraussetzung • Existenz von Duplikaten auf Datenebene • Betrifft nur identifizierbare Objekte • Keine Duplikate in Brückentabellen etc. • Duplikate müssen als solche erkannt werden • Duplikaterkennung Ulf Leser: DWH und DM, Sommersemester 2007 74 Datenkonflikte - Beispiel Konflikt kann auch mit NULL-Wert herrschen amazon.de 0766607194 H. Melville $3.98 $5.99 ID 0766607194 Herman Melville Moby Dick bol.de Ulf Leser: DWH und DM, Sommersemester 2007 75 Entstehung von Intra-Source-Konflikten • Innerhalb eines Informationssystems • Fehlende Integritätsbedingungen oder Konsistenz-Checks • Freitextfelder, Kommentarfelder • Intensional redundante Schemata • Fehlerhafte Normalisierung • Falsche Einträge • Tippfehler, Übertragungsfehler, OCR-Fehler , … • Sich ändernde Werte – Zeitbezug • Adressen, Einkommen, Preise, … • … Ulf Leser: DWH und DM, Sommersemester 2007 76 Entstehung von Inter-Source-Konflikten • Bei der Integration von Informationssystemen • Lokal konsistent aber global inkonsistent • Andere Datentypen („1“ versus „eins“) • Andere lokale Schreibweisen oder Konventionen • Skalen (inch – cm) , Währungen, rechtliche Bedingungen (MWST), … • Übertragungsfehler • Fehlerhafte Parser beim ETL • Verwendung unterschiedlicher Standards • Produktnummern, Produktklassen, Berufsbezeichnungen, … • Divergierende Aktualisierungszeitpunkte • … Ulf Leser: DWH und DM, Sommersemester 2007 77 Auflösen amazon.de 0766607194 H. Melville $3.98 $5.99 ID 0766607194 bol.de Herman Melville Moby Dick • Konfliktlösungsfunktionen • Zum Beispiel durch • Präferenzordnung über Datenquellen • Aktualität, Trust (Vertrauen), Verfügbarkeit, usw. Ulf Leser: DWH und DM, Sommersemester 2007 78 Inhalt dieser Vorlesung • ETL: Extraction, Transformation, Load - - Extraktion von Daten aus Quellen Das Differential Snapshot Problem Laden von Daten in das DWH Schema- und Datenheterogenität - • Datenkonflikte Datentransformation Datenqualität – – Data Cleansing Der Merge/Purge Algorithmus Ulf Leser: DWH und DM, Sommersemester 2007 79 Transformation • Aufgabe – Umwandlung der Daten in eine „DWH-gerechte“ Form • Form follows Function – Quellen: hoher Transaktionsdurchsatz – DWH: statistische Analysen • Arten von Transformationen – Schematransformation – Datentransformation • Transformationen möglich an zwei Stellen – Transformation der Quell-Extrakte zu Load-Files – Transformation von der Staging-Area in die Basis-DB Ulf Leser: DWH und DM, Sommersemester 2007 80 Schematransformationen • Transformation von Daten eines Schemas in ein anderes Schema • Unterschiedliche Modellierung – – – – – Unterschiedliche Normalisierung Was ist Relation, was Attribut, was Wert ? Aufteilung von Daten in Tabellen Redundanzen aus Quellsystemen Schlüssel ¾ In SQL nur teilweise gut unterstützt – INSERT hat(te) nur eine Zieltabelle – SQL greift auf Daten zu, nicht auf Schemaelemente • Keine Überbrückung schematischer Heterogenität – Erfordert oftmals Programmierung Ulf Leser: DWH und DM, Sommersemester 2007 81 Beispiele quelle(id, name, strasse, plz, umsatz) kunde(id, name, umsatz) adresse(id, strasse, plz) Erfordert zwei Durchläufe der Quelltabelle - INSERT INTO kunde ... SELECT - INSERT INTO adresse ... SELECT Erfordert zwei Durchläufe der Quelltabelle premium_k(id, name, umsatz) normal_k(id, name, umsatz) Ulf Leser: DWH und DM, Sommersemester 2007 - INSERT INTO premium_k ... SELECT ... WHERE umsatz>=X - INSERT INTO normal_k ... SELECT ... WHERE umsatz<XYZ 82 Vermeidung redundanter INSERTs • Multi-Table INSERT INSERT ALL WHEN umsatz < X THEN INTO normal_k WHEN umsatz >= X THEN INTO premium_k ELSE INTO normal_k SELECT id, name, umsatz FROM quelle; • Alternative: PL/SQL (JDBC) Programmierung – Durchlauf der Quelltabelle mit Cursor – Conditionales Insert in Zieltabelle – Cursor meistens langsamer Ulf Leser: DWH und DM, Sommersemester 2007 83 Transformation bei schematischer Heterogenität tab1( id, name, geschlecht) tab2( id, name, M, W) tab31( id, name) tab32( id, name) • tab1 → tab2 – – • INSERT SELECT INSERT SELECT INTO tab2 (id, name, ‚T‘, ‚F‘) … geschlecht=‚maennlich‘ INTO tab2 (id, name, ‚F‘, ‚T‘) … geschlecht=‚weiblich‘ tab3 → tab1 – – INSERT INTO tab1(id, name, ‚weiblich‘) ... SELECT ... FROM tab31 INSERT INTO tab1(id, name, ‚maennlich‘) ... SELECT ... FROM tab32 • Alle Werte müssen zum Zeitpunkt der Anfrageformulierung feststehen • Neues Geschlecht – Alle Queries ändern Ulf Leser: DWH und DM, Sommersemester 2007 84 Datentransformationen • Syntax von Werten – Datum: 20. Januar 2003, 20.01.2003, 1/20/03 – Codierungen: „1: Adr. unbekannt, 2: alte Adresse, 3: gültige Adresse, 4: Adr. bei Ehepartner, ...“ – Sprache – Abkürzungen/Schreibweisen: Str., strasse, Straße, ... – Datentypen: Real, Integer, String – Genauigkeit, Feldlänge, Nachkommastellen, ... – Skalen: Noten, Temperatur, Längen, Währungen,... • Transformation in SQL recht gut unterstützt – Vielfältige Funktionen im Sprachstandard – Stringfunktionen, Decodierung, Datumsumwandlung, Formeln, Systemvariable, ... – Funktionen in PL/SQL erstellen – in SQL verwenden Ulf Leser: DWH und DM, Sommersemester 2007 85 Beispiele „Leser, Ulf“ „Naumann, Felix“ „Leser“, „Naumann“, „Ulf“ „Felix“ INSERT INTO kunden( nachname, vorname) SELECT SubStr(name, 0, inStr(name,',')-1), SubStr(name, inStr(name,',')+1) FROM rawdata; „Leser“, 12/20/1954 „Naumann“, 18/5/1954 „Leser“, „Naumann“, 20.12.1954 18.05.1954 INSERT INTO kunden( name, geburtsdatum) SELECT name, to_date( birthday, ‚MM/DD/YYYY‘) FROM rawdata; „Müller“, ‚m‘, „sehr gut“ „Meier“, ‚w‘, „gut“ „Müller“ „Meier“ 0 1 1 2 INSERT INTO schueler(name, geschlecht, klasse) SELECT name, decode( upper(sex), ‚M‘, 0, 1), decode( grade, ‚sehr gut‘, 1, ‚gut‘, 2, ...) FROM rawdata; Ulf Leser: DWH und DM, Sommersemester 2007 86 Inhalt dieser Vorlesung • ETL: Extraction, Transformation, Load - - Extraktion von Daten aus Quellen Das Differential Snapshot Problem Laden von Daten in das DWH Schema- und Datenheterogenität - • Datenkonflikte Datentransformation Datenqualität – – Data Cleansing Der Merge/Purge Algorithmus Ulf Leser: DWH und DM, Sommersemester 2007 87 Datenqualität • Was ist Datenqualität? – „Fitness for use“ – Anwendungsabhängig • Folgen geringer Datenqualität – Falsche Prognosen – Verpasstes Geschäft • DWH besonders anfällig für Qualitätsprobleme – Probleme akkumulieren • Qualität der Ursprungsdaten (Eingabe, Fremdfirmen, ...) • Qualität der Quellsysteme (Konsistenz, Constraints, Fehler, ...) • Qualität des ETL-Prozess (Parsen, Transformieren, ...) – Probleme treten erst bei Konsolidierung zu Tage – DWH unterstützt strategische Entscheidungen: Hohe Folgekosten bei Fehlentscheidungen Ulf Leser: DWH und DM, Sommersemester 2007 88 Data Cleansing im DWH Daten quellen Data Extraction Data Transformation Data Loading Data Warehouse ... Data scrubbing Lookup tables Data cleansing Ulf Leser: DWH und DM, Sommersemester 2007 Similarity Functions Object Fusion 89 Beispiel: Kampagnenmanagement • Probleme im CRM eines Multi-Channel Vertriebs – – – – Kunden doppelt geführt Kunden falsch bewertet Falsche Adressen Haushalte / Konzernstrukturen nicht erkannt • Folgen – „False positives“: Verärgerte Kunden durch mehrere / unpassende Mailings – „False negatives“: Verpasste Gelegenheiten durch fehlende / falsche Zuordnung (Cross-Selling) – Sinnlose Portokosten bei falschen Adressen – … Ulf Leser: DWH und DM, Sommersemester 2007 90 Aspekte von Datenqualität 1. Datenintegrität: Schlüssel, Fremdschlüssel, Integritätsbedingungen, ... 2. Fehlende Daten: Fehlende Attributwerte, fehlende Tupel 3. Falsche Daten – – Objektiv falsch: Negative Preise, 32.13.2002, Buchstaben statt Ziffern Widersprüchliche Werte aus unterschiedlichen Quellen 4. Formatfehler 5. Unplausible Daten: Ausreißer, unerwartete Werte, ... 6. Semantik von NULL Werten – – – Wert möglich, aber unbekannt: Ist er Professor? Wert möglich, existiert aber nicht: Er ist kein Professor! Wert unmöglich: Kinder unter 18 haben keinen Titel 7. Duplikate 8. Schlechte / fehlende Dokumentation 9. … Ulf Leser: DWH und DM, Sommersemester 2007 91 Data Cleansing Operationen • Ziel: Verbesserung der Datenqualität – – – – Ergänzung fehlender Werte Korrektur durch Lookup, Neuberechnen, Runden, ... Erkennen und Löschen „unrettbarer“ Daten Optimum kaum erreichbar: 80/20 Regel • DQ muss (und kann) gemessen werden – DQ Metriken notwendig – Verbesserungen quantifizieren • Data Cleansing – Domänenabhängiger Prozess – Produkte gibt es vor allem für Adressdaten Ulf Leser: DWH und DM, Sommersemester 2007 92 Data Cleansing Schritte [KRRT98] 1. Elementizing • • Zerlegung der Werte Erste Normalform 2. Standardizing • Schreibweisen, Vokabulare, Bezeichnungen, Titel 3. Verifying • Fehlende Werte, Cross-Matching, Plausibilität 4. Matching • Erkennen gleicher Objekte: Kunden, Lieferanten, ... 5. Household – Matching • Erkennen von Organisationen: Haushalte, Abteilungen, Firmen 6. Documenting Ulf Leser: DWH und DM, Sommersemester 2007 93 Nachvollziehbarkeit • Daten müssen erklärbar sein – – – – – – Anwender eines DWH: „Da fehlt ein Produkt im Report“ Analysewerkzeug fehlerhaft? Report falsch? Data Mart Definition falsch? Basisdatenbank unvollständig? ETL Prozeduren fehlerhaft? • DC Aktionen müssen nachvollziehbar sein – Protokollieren der Aktionen durch alle Prozessschritte – Wiederholbarkeit aller Aktionen bei neuen Daten / Anfragen • Schwierig: Unsystematische ad-hoc Aktionen • DC programmieren, keine manuellen Änderungen – Mühsam, aber notwendig zur Unterstützung kontinuierlicher Prozesse Ulf Leser: DWH und DM, Sommersemester 2007 94 Inhalt dieser Vorlesung • ETL: Extraction, Transformation, Load - • Extraktion von Daten aus Quellen Das Differential Snapshot Problem Laden von Daten in das DWH Schema- und Datenheterogenität - • Datenkonflikte Datentransformation Datenqualität – – Data Cleansing Duplikaterkennung und der Merge/Purge Algorithmus Ulf Leser: DWH und DM, Sommersemester 2007 95 Duplikate und Fusion • Viele Fehler findet man erst durch Vergleich – Quelle 1: Hans Meyer, Frankfurter Allee 200 – Quelle 2: Hans Meier, Frankfurter Alee 202 • Vergleich erfordert Identifikation verschiedener Repräsentationen desselben Objekts • Fusion verschmilzt Duplikate zu einem Objekt – Nicht-redundante Darstellung: Jedes Objekt ist nur einmal im Ergebnis repräsentiert – Homogene Darstellung: Jedes (einwertige) Attribut dieses Objekts hat nur einen Wert – Datenfusion: Bestimmte diese Werte aus den Attributwerten der Duplikate Ulf Leser: DWH und DM, Sommersemester 2007 96 Duplikate • Relationale Welt – Duplikat = Zwei Tupel einer Relation die identische Werte in allen Attributen besitzen • Allgemein – Duplikat = Paar von Tupeln, die demselben Realweltobjekt entsprechen („synonyme“ Objekte) • Beispiele – Personen, Rechnungen, Lieferungen, Bestellungen, … • Viele kommerzielle Tools – Vor allem im Bereich Customer Relationship Management (CRM) • Duplikate von „Duplikaterkennung“ – Record Linkage, Object Identification, Deduplication, Entity Resolution, … Ulf Leser: DWH und DM, Sommersemester 2007 97 Einspielen neuer Objekte? • Duplikatvermeidung: Vor dem Einfügen eines neuen Tupels prüfen, ob das Objekt schon vorhanden ist – Nehmen wir Namen als Schlüssel an • Typischer Ablauf – FOR $new IN new_cust SELECT count(*) INTO c FROM cust WHERE name=$new; if (c == 0) INSERT INTO cust VALUES( $new, …); else // Daten ändern UPDATE cust SET … WHERE name=$new; END FOR; • Effizient? Ulf Leser: DWH und DM, Sommersemester 2007 98 MERGE • Für jedes UPDATE zwei Suchen nach $new in cust • Besser: MERGE („Upsert“) – MERGE INTO cust C USING ( SELECT * FROM new_cust) N ON (C.name = N.name) WHEN MATCHED THEN UPDATE SET … WHEN NOT MATCHED THEN INSERT VALUES (…); • Benötigt für jedes existierende N-Tupel nur einen Zugriff auf cust – Cursor ist implizit definiert – Effizient, wenn Duplikaterkennung einfach ist (Schlüssel) Ulf Leser: DWH und DM, Sommersemester 2007 99 Duplikate: Das formale Problem • Gegeben: Tupel T={t1,..,tm} mit Attributen A1,…,Ak – Kein „semantischer“ Schlüssel – Komplexere Modelle (Bäume, Graphen) möglich • Tupel entsprechen Objekten O={o1,…,on} – Über die wissen wir meistens nichts, man kennt nur die Tupel – Manche der Tupel sind Duplikate • Gesucht: eine Funktion dup: TxT→bool – dup gibt true zurück, wenn Tupel t1 und t2 demselben Objekt o entsprechen • Eine Möglichkeit: dedup: T → N – Jedem Tupel wird eine natürliche Zahl zugeordnet – Zwei Tupel bekommen dann und nur dann dieselbe Zahl zugeordnet, wenn sie Duplikate sind – Berechnung eines identifizierenden Schlüssels Ulf Leser: DWH und DM, Sommersemester 2007 100 Transitivität • Im strengen Sinne ist die Duplikateigenschaft transitiv – (dup(t1,t2)=true ∧ dup(t2,t3)=true) → dup(t1,t3)=true • Im realen Leben muss man damit vorsichtig sein – – – – Man nimmt an, dass Duplikate irgendwie ähnlich sind Ähnlichkeit misst man durch eine Funktion sim: TxT → [0,1] Verwend. eines Schwellwerts: dupsim(t1,t2)=true gdw. sim(t1,t2)>t Aber: Ähnlichkeit ist mitnichten transitiv • Meier, Meyer, Mayer, Bayer, Bayes, Bades, … • Meier, Meir, Mer, Er, R, … • Gut überlegen, bevor man in Algorithmen Transitivität ausnutzt – Hängt ab vom Vertrauen in sim und in t – Kann Fehlerraten drastisch erhöhen Ulf Leser: DWH und DM, Sommersemester 2007 101 Genauigkeit der Duplikaterkennung • Annahme: Verwendung von sim und Threshold t • Weitere Annahme: sim(t1,t2) korreliert mit der Wahrscheinlichkeit, dass t1 und t2 Duplikate sind – sim irrt sich also meistens nicht oder nur ein wenig • Dann hängt die Genauigkeit von dupsim von t ab • Hohes t – Nahezu alle Duplikate, die man findet, sind auch welche – Aber man findet viele Duplikate nicht, weil sim nicht groß genug ist • Niedriges t – Man findet praktisch alle Duplikate – Aber man findet auch viele falsche Duplikate Ulf Leser: DWH und DM, Sommersemester 2007 102 Prinzipielles Vorgehen • Annahme: Verwendung einer „guten“ sim • Um alle Duplikate zu finden, muss man alle Paare miteinander vergleichen • Beim Vergleich geht man attributweise vor – Schema Matching muss also schon vorher erfolgt sein • Ähnlichkeit zweier Tupel setzt sich aus der Ähnlichkeit ihrer Attribute zusammen – Ggf mit Gewichtung der Attribute Ulf Leser: DWH und DM, Sommersemester 2007 103 Vom Attribut zum Tupel • Theoretisch könnte man die Ähnlichkeit zweier Tupel als (gewichtetes) Mittel der Ähnlichkeiten ihrer Attributwerte definieren – Oder Verwendung von Fuzzy-Logik oder probablistischen Modellen • In der Praxis verwendet man eher Domänen- wissen, das man in Regeln kodiert Ulf Leser: DWH und DM, Sommersemester 2007 104 Die Sorted Neighborhood Methode • Input – Tabelle mit N Tupeln – Ähnlichkeitsmaß • Output – Cluster äquivalenter Tupel (= Duplikate) • Problem: Viele Tupel – Es gibt O(n2) viele Tupelpaare – Das dauert zu lange – Außerdem: Nur sehr wenige sind tatsächlich Duplikate • Idee – Partitioniere Tabelle geschickt – Tupelpaare werden nur noch innerhalb einer Partition gebildet Ulf Leser: DWH und DM, Sommersemester 2007 105 Sorted Neighborhood [HS98] • Sorted Neighborhood Algorithmus – Sortiere Tupel so, dass Duplikate (hoffentlich) nahe beieinander liegen • Dazu: Erzeuge einen Sortierschlüssel aus relevanten Attributen – Merge-Phase: Fenster der Größe w über sortierte Liste schieben – Nur Tupel innerhalb eines Fensters vergleichen • Man hat also überlappende Partitionen – Purge-Phase: Duplikate werden verschmolzen, gelöscht, getagged, … • Komplexität – – – – n Tupel Schlüsselerzeugung sei linear Sortieren ist O(n*log(n)) Anzahl Vergleiche ist O(n*w) • N „neue“ Tupel werden mit (w-1) Tupeln im Fenster verglichen – Zum Vergleich: Naiver Ansatz war O(n2) Ulf Leser: DWH und DM, Sommersemester 2007 106 1. Schlüsselerzeugung • Schlüsselerzeugung ist zentral für die Effektivität des Verfahrens – Ordnung der Schlüssel bestimmt die Partitionen – Schlechte Reihenfolge – schlechter Recall • Leider ist überhaupt nicht klar, was ein guter Schlüssel zur Duplikaterkennung ist – Implizit erfolgt eine Priorisierung der Attribute durch den Aufbau des Schlüssels – Wieder: Domänenwissen Vorname Nachname Adresse ID Schlüssel Sal Stolpho 123 First St. 456780 STOSAL123FRST456 Mauricio Hernandez 321 Second Ave 123456 HERMAU321SCND123 Felix Naumann Hauptstr. 11 987654 NAUFEL11HPTSTR987 Sal Stolfo 123 First Street 456789 STOSAL123FRST456 Ulf Leser: DWH und DM, Sommersemester 2007 107 Merge • Vorname Nachname Adresse ID Schlüssel Mauricio Hernandez 321 Second Ave 123456 HERMAU321SCND123 Felix Naumann Hauptstr. 11 987654 NAUFEL11HPTSTR987 Sal Stolpho 123 First St. 456780 STOSAL123FRST456 Sal Stolfo 123 First Street 456789 STOSAL123FRST456 Regelbasierte Entscheidung auf Duplikat, z.B. – – IF last_name(r1) = last_name(r2) AND edit_distance(first_name(r1), firstname(r2)) < 5, AND address(r1) = address(r2) THEN dup(r1,r2)=true IF (ID(r1) = ID(r2) OR last_name(r1) = last_name(r2)) AND address(r1) = address(r2) AND city(r1) = city(r2) AND (state(r1) = state(r2) OR zip(r1) = zip(r2)) THEN dup(r1,r2)=true Ulf Leser: DWH und DM, Sommersemester 2007 108 Praktischer Aufwand • Komplexität: O(n*log(n)+n*w) • Praktisch – IO. Mindestens drei Läufe notwendig – Schlüssel erzeugen und speichern – Sortieren – Fenster schieben • Man hält immer w Tupel im Speicher • Beim Verschieben fällt ein Tupel raus und eines kommt hinzu • Das neue Tupel wird mit w-1 Tupeln im Fenster vergleichen – Praktisch sollte sich w also an der Blockgröße und der Größe des Hauptspeichers orientieren • Nicht nur IO: Teure Operationen – Schlüssel erzeugen – große Schlüssel müssen viele Werte anfassen – Vergleichen – komplexe Regeln erfordern viele Einzelvergleiche – Die Merge-Phase dominiert typischerweise die Gesamtkosten Ulf Leser: DWH und DM, Sommersemester 2007 109 Problem • Genauigkeit schlecht – Sortierkriterium bevorzugt immer Attribute – Sind erste Buchstaben wichtiger für Identität als letzte? – Ist Nachname wichtiger als Hausnummer? • Lösung 1: Fenster vergrößern? – Dominanz eines Attributes bleibt gleich, aber Laufzeit verschlechtert sich erheblich – Folge: keine nennenswerte Verbesserung bei kleiner Vergrößerung und sehr hohe Kosten bei großer Vergrößerung • Anderer Vorschlag? Ulf Leser: DWH und DM, Sommersemester 2007 110 Multipass Verfahren • Lösung 2: Multipass – Merge-Purge mehrmals mit verschiedenen Schlüsseln laufen lassen – Pro Lauf können kleine w und einfache Schlüssel verwendet werden – Duplikatbeziehungen aller Läufe sind gleichwertig – Für k Läufe benötigt man ~(1+2*k) Scans der Tabelle • Alle Schlüssel in einem Lauf berechnen – Weniger effizientes, aber deutliches effektiveres Verfahren als Single-Pass Ulf Leser: DWH und DM, Sommersemester 2007 111 Bewertung • Hier nur Merge betrachtet – Auch Purge nicht trivial! • Parallelisierung – Sortierung parallelisierbar – Window-Vergleiche partitionierbar • Merge/Purge in der Datenbank – Sortierungen müssen materialisiert werden – Gleichheitsregeln in PL/SQL implementieren Ulf Leser: DWH und DM, Sommersemester 2007 112 Literatur • [Bae01] Baer: „ETL Processing with Oracle 9i“, Oracle Corp. White Paper, 2001 • [RD00] Rahm, Do: „Data Cleaning: Problems and Current Approaches“, IEEE Data Engineering Builletin, 2000 • [LGM96] Labio, W. and Garcia-Molina, H. (1996). "Efficient Snapshot Differential Algorithms for Data Warehousing". 22nd VLDB, Bombay, India. pp. 63-74. • [LN06] Leser, U. and Naumann, F. (2006) „Informationsintegration“, dpunkt.verlag Heidelberg. • [HS98] M. Hernandez and S. Stolfo „Real-world data is dirty: Data cleansing and the merge/purge problem“. Data Mining and Knowledge Discovery, 2(1): 9-37. Ulf Leser: DWH und DM, Sommersemester 2007 113