Ursprünglich für Reportings und einfache Analysen entworfen, erwarten Unternehmen von einem Data Warehouse heute, dass auf Basis operativer Daten auch spezielle Ad-hoc-Auswertungen für unterschiedliche Fachanwender möglich sind. Der Ausbau des Data Warehouse mit kommerzieller Datenbanksoftware kann dabei schnell zu hohen Lizenz- und Betriebskosten führen. Für die Umsetzung des ETL-Prozesses in unserem Best Practice nutzen wir deshalb das Open Source Tool Pentaho Data Integration.
Datenerfassung mit Pentaho Data Integration
Die Datenerfassung beschäftigt sich mit dem Extrahieren, Transformieren und Laden (ETL) von Daten in das Data Warehouse. Ziel ist es, eine homogene, qualitativ hochwertige Datenbasis zu schaffen, auf der Analysen ausgeführt werden können. Im Rahmen unseres OSDW-Prototyps sollen Vertriebsdaten ausgewertet werden. Zur Erinnerung: unser Datenmodell besteht aus einer OLTP-Datenbank mit mehr als 70 Tabellen, die sich in Human Ressources, Person, Production, Purchasing und Sales unterteilen.Best Practice für Lookup- und Join-Operationen
Pentaho Data Integration bietet vordefinierte ETL-Schritte, die über eine grafische Drag-and-Drop-Oberfläche (Spoon) erstellt werden. Auf diese Weise können auch Nicht-Programmierer mit geringem Aufwand professionelle ETL-Routinen und -Jobs aufbauen. Um Daten vergleichen und kombinieren zu können, verwendet das Tool Lookup- und Join-Operationen. Da innerhalb des ETL-Prozesses viele Tabellen kombiniert werden müssen, wirkt sich die Auswahl der richtigen Schritte deutlich auf die Verarbeitungsgeschwindigkeit aus. Die wichtigsten Schritte sind:- Database Lookup: ermöglicht den Abgleich verschiedener Tabellen einer Datenbank;
- Stream Lookup: zu vergleichende Daten können direkt aus dem Stream extrahiert werden;
- Merge Join: setzt die klassische Join-Operation um und eignet sich insbesondere für große Data Sets mit hoher Kardinalität;
- Database Join: verknüpft Datenbanktabellen und erstellt native Abfragen;
- Dimension Lookup: kombiniert die Funktionalitäten von Insert/Update und Database Lookup;
Umsetzung des ETL-Prozesses
Bevor mit dem Befüllen des Data Warehouse begonnen werden kann, müssen die Datenverbindungen zwischen Datenquelle und dem Data Warehouse definiert werden: entscheidend sind die Auswahl der richtigen Datenbank, der Einsatz des richtigen Treibers sowie benutzerspezifische Einstellungen. Insgesamt sollen fünf Dimensionen in Bezug auf die OLTP-Datenbank erstellt werden, und zwar Datum, Kunde, Produkt, Vertriebsweg und Währung. Wichtig ist, dass die JDBC-Treiber der beiden Datenbanken im Verzeichnis lib des Data Integration Tool hinterlegt sind.Dimensionen, Tabellen und Kategorien festlegen
Die Dimensionen DimCurrency und DimCustomer werden aus der Sales-Tabelle erzeugt und kommen ohne Join-Operation aus. Für die Analyse werden lediglich Name und Kürzel der Währung übernommen sowie Vor- und Nachname in einem gemeinsamen Feld kombiniert. DimPerson wird über Database Lookup um die Strukturen Telefonnummer und E-Mail-Adresse erweitert. DimProduct wird aus drei Tabellen der OLTP-Datenbank generiert. Den Ausgangspunkt der Transformation bildet die Tabelle Produktion, diese wird um die Attribute Name und Produktkategorie der Tabelle Produktion erweitert. Das zweite Attribut dient dabei als Schlüssel der zweiten Lookup-Operation auf die Tabelle Produktkategorie. Die Transformation DimSalesTerritory entspricht den vorangegangenen Prozessen. Diese wird im durch Lookups um die Attribute Name und Gruppe der Tabellen Land/Region und Vertriebsgebiet erweitert. Im Anschluss wird die Dimension innerhalb eines Merge Joins mit der Tabelle Adresse verknüpft.DimDate lässt sich nicht aus der OLTP-Datenbank extrahieren, sondern muss manuell erzeugt werden. Als Grundlage dient eine CSV-Datei, die eine eindeutige Identifikationsnummer, das konkrete Datum und den entsprechenden Wochentag enthält. Die CSV lässt sich in Pentaho Data Integration über CSV Input File einbinden. Anschließend können die Daten verarbeitet und in die Zieldatenbank geladen werden.
FactSales
Ausgangspunkt bildet die Tabelle Sales. Diese enthält bereits viele wichtige Schlüssel und Kennzahlen. Die Verbindungen sind aber selten performant gestaltet, weshalb im ersten Abschnitt OrderDate und ShipDate durch DimDate ersetzt werden, das innerhalb der Dimension generiert wurde. Anschließend wird noch das Attribut ToCurrencyCode über einen Lookup integriert. Als Schlüssel dient die CurrencyRateID. Mittels Merge Join wird noch die Tabelle SalesOrderDetail integriert, die Detailinformationen zu den einzelnen Bestellungen liefert. Die kombinierten Datensätze haben unterschiedliche Aggregationsstufen, weshalb sie nachträglich angepasst werden müssen. Um die Daten weiterverarbeiten zu können, wird pro Bestellung ein zusätzlicher Datensatz angelegt, der die aggregierten Kennzahlen beinhaltet. Insgesamt enthält die fertige Faktentabelle sieben Schlüssel und sechs Kennzahlen.Diese Artikel könnten Sie auch interessieren: