Data Vault Beladung mit Talend Data Integration

Methode für das Beladungsverfahren

Datenbeladung mit Data Vault

Im Bereich Business Intelligence (BI) arbeiten wir mit vielen Unternehmen an Data Warehouse Projekten. Einige dieser Unternehmen setzen bei ihren BI-Projek­ten zur Modellierung des Data Warehouse auf Data Vault und auf Talend Data Integration (Talend DI) als ETL-Tool, um ihr Data Warehouse zu bewirtschaften. Da es in Talend DI keine Komponenten gibt, die explizit die Beladung von Data Vault Strukturen übernehmen, müssen wir auf die vorhandenen Komponenten der jeweiligen Datenbank zurückgreifen. Als Berater stehen wir somit häufig vor der Frage: „Wie gestalte ich für den Kunden die Ladeprozesse?“ In diesem Beitrag erklärt Ihnen unser Kollege Birger eine dieser Möglichkeiten.

Was ist überhaupt Data Vault?

„Data Vault ist eine Modellierungstechnik für Data Warehouses, die insbesondere für agile Data Warehouses geeignet ist. Sie bietet eine hohe Flexibilität bei Erweiterungen, eine vollständige unitemporale Historisierung der Daten und erlaubt eine starke Parallelisierung der Datenladeprozesse“. (Quelle: Wikipedia)

Das Data Vault Modell basiert auf 3 Entitätstypen. Diese Entitätstypen sind Hubs, Links und Satelliten. Die Hubs separieren die Business Keys vom restlichen Modell. Die Links speichern die Beziehungen zwischen den Business Keys und die Satelliten speichern den Kontext (entweder die Attribute des Business Keys oder der Beziehung). Unter einem Business Key versteht man einen Schlüssel, der ein Business-Objekt eindeutig identifiziert. Wie beispielsweise bei einem Buch die ISBN. Alle Entitäten enthalten zudem einen Hash Key, der aus einem verschlüsselten Business Key gebildet wird. Der Hash Key ist der Primärschlüssel der jeweiligen Tabelle.

Die Abhängigkeiten zwischen Hubs, Links und Satelliten sind in Abbildung 1 dargestellt.

Abbildung 1: Hubs, Links und Satelliten

Ich merke an, das eine vollständige Beschreibung des Data Vault Modells den Rahmen des Artikels überschreiten würde. Aus diesem Grund beschränke ich mich hier auf den für die Beladung wichtigen Teil.

Data Vault Beladungsverfahren

Bevor die Hubs, Links und Satelliten im Data Vault Datenbankschema beladen werden können, muss zuerst bestimmt werden, welche Daten noch nicht aus den Quelltabellen übertragen worden sind. Dafür haben wir uns als Talend-Partner ein Framework überlegt. In dem sich jeder Job mit seinem Ausführungsstatus und Ergebnissen in eine Statustabelle einträgt. Aus der Statustabelle werden dann die entsprechenden Informationen für den nächsten Start gelesen. Beim nächsten Start wird zuerst geprüft, welche Job Instance ID (JID) beim letzten Job-Lauf in die Zieltabelle geladen wurde. Er überträgt dann nur noch die Daten ab der letzten erfolgreich gelaufenen Job Instance ID (siehe Abbildung 2: Job Instance Status Tabelle).

Abbildung 2: Job Instance Status Tabelle

Beladung Hubs und Links

Da die Beladung der verschiedenen Data Vault Entitäten (Hub/ Link/ Satellit) immer nach dem gleichen Prinzip verläuft, haben die (ET)Load-Talend-Jobs die gleiche Struktur. Für die Hubs und Links gibt es pro Entität je einen expliziten und für die Satellitentabellen einen generischen Talend-Job. Dieser fasst die Beladungslogik zusammen, ohne dabei Quell- und Zieltabelle zu spezifizieren.

Die Beladung von Hubs und Links verläuft nach dem gleichen Prinzip. Pro Hub sind mehrere Quelltabellen möglich. Für jede Quelltabelle wird in einem separaten Sub Job ein Select Statement generiert. (Siehe 1. Komponente in Abbildung 3: Hub Beladung) Diese Select Statements werden in der tJava-Komponente zwischengespeichert und dann iterativ abgearbeitet. Zuerst wird das Select Statement auf der Quelltabelle abgesetzt. In einer tMap werden die zurückgegebenen Datensätze dann mit den vorhandenen Datensätzen aus dem jeweiligen Hub per Inner Join verknüpft. Nur die Datensätze, die noch nicht im Hub vorhanden sind, werden anschließend in den Hub geschrieben.

Für jeden Hub bzw. Link existiert ein Talend-Job, der so aufgebaut ist wie in Abbildung 3. Es existieren zwei Meta-Tabellen in der Datenbank. Die Hub_Table_Mapping und die Hub_Column_Mapping. Im Hub_Table_Mapping sind die Quell- und Zieltabellen eingetragen. Im Hub_Column_Mapping sind die Hash und Business Keys des jeweiligen Hubs enthalten. Aus diesen Tabellen werden die Select Statements für den Talend-Job generiert. Die Beladung der Links erfolgt analog mit Meta-Tabellen, die nach dem gleichen Prinzip aufgebaut sind wie die der Hubs.

Abbildung 3: Hub Beladung

Beladung der Satelliten

Die Beladung der Satellitentabellen erfolgt über einen generischen Talend-Job, für den als Parameter die Quelltabellen und die Satellitennamen notwendig sind. Zuerst werden dann die Meta-Tabellen Sat_Table_Mapping und Sat_Column_Mapping ausgelesen, die die Informationen enthalten, wie die Spalten der Quelltabellen auf die Zieltabelle gemappt werden. Über Routinen in tJavaRow- und tJavaFlex-Komponenten ist ein SQL-Statement zur Beladung generiert, das dann in einer tDBRow-Komponente ausgeführt wird.

Einen Ausschnitt aus dem generischen Satelliten-Beladungsjob mit den oben beschriebenen Komponenten zeigt Abbildung 4:

Abbildung 4: Satelliten-Beladung

Fazit zu Data Vault Beladung mit Talend

Auch wenn es in Talend DI keine vorgegebenen Komponenten für die komplette Beladung in ein Data Vault Modell gibt, existieren doch genügend Möglichkeiten dies mit den vorhandenen Komponenten umzusetzen. Das hier dargestellte Verfahren ist eins von vielen möglichen Wegen. Talend DI bietet die Flexibilität, Beladungsprozesse nach individuellen Anforderungen zu gestalten.

[[ Dieser Artikel ist am 14. Juni 2019 im Talend Blog erschienen ]]

Kontakt

Rouven Homann
Management Partner

Telefon: +49 (0)40 53302-444
E-Mail: rouven.homann@cimt-ag.de
Twitter: twitter.com/cimtag
Termin vereinbaren

Kommende Veranstaltungen
Datum/Zeit Veranstaltung
20.08.2019 - 22.08.2019
09:00 - 18:00
Data Vault 2.0 Bootcamp
Hamburg, Hamburg Deutschland
div#stuning-header .dfd-stuning-header-bg-container {background-image: url(https://www.cimt-ag.de/wp-content/uploads/2017/10/home-start2_low.jpg);background-color: #848484;background-size: cover;background-position: center center;background-attachment: fixed;background-repeat: no-repeat;}#stuning-header div.page-title-inner {min-height: 300px;}div#stuning-header .dfd-stuning-header-bg-container.dfd_stun_header_vertical_parallax {-webkit-transform: -webkit-translate3d(0,0,0) !important;-moz-transform: -moz-translate3d(0,0,0) !important;-ms-transform: -ms-translate3d(0,0,0) !important;-o-transform: -o-translate3d(0,0,0) !important;transform: translate3d(0,0,0) !important;}