Dieser Beitrag ist wieder über Slowly Changing Dimensions Type 2, betrachtet aber eine andere Fragestellung. Wie kann man die Erkennung der Änderungen validieren? Wenn wir mehrere Versionen derselben Daten haben, wie kann man prüfen, welche Felder sich von Version zu Version geändert haben? In Kundeprojekten, wo ich mit Systemen wie Siebel CRM gearbeitet habe, die in einigen Tabellen mehr als 500 Spalten haben, fand ich diese Möglichkeit oft sehr nützlich.
Natürlich kann man mit PL/SQL-Mitteln in einer Schleife über die Spalten ihre Werte vergleichen. Ich habe mich spaßeshalber gefragt, ob es auch in „pure SQL“ ginge – hier ist die Lösung. Weiterlesen
Schlagwort-Archive: Historisierung
Datenhistorisierung II
Im vorherigen Post habe ich die Möglichkeit gezeigt, wie man eine Kombination aus UNION ALL und GROUP BY nutzen kann, um die Daten als Slowly Changing Dimension Type 2 zu historisieren. Seitdem habe ich einige Performance-Tests durchgeführt, um diesen Ansatz mit herkömmlichen Vorgehensweisen in verschiedenen Situationen zu vergleichen. Weiterlesen
Wie vereinfache ich die Historisierung der Daten?
Die Historisierung der Daten ist eine typische aber auch rechen- und zeitintensive Aufgabe im Data Warehouse Umfeld. Man hat damit beim Beladen von historisierter Core-Schicht (auch bekannt als Enterprise Data Warehouse or Foundation Layer), Data Vault Datenmodellen, Slowly Changing Dimensions, etc. zu tun. Typische Methoden führen einen Outer Join und eine Art der Deltaerkennung aus. Diese Deltaerkennung ist wohl der kniffligste Teil, denn man muss die Null-Werte besonders beachten. Eine sehr gute Übersicht der verwendeten Techniken hat Dani Schnider in seinem Blog zusammengestellt: Delta Detection in Oracle SQL
Auf der anderen Seite bietet die SQL-Standardfunktionalität genau das Verhalten an, das hier gebraucht wird: die Group By Klausel oder Partitioning-Klausel bei analytischen Funktionen. Kann man das ausnutzen? Macht es Sinn? Wie wird dann der ETL Prozess aussehen? Können wir eventuell das Laden durch Partition Exchange weiter beschleunigen? Ich werde diese Fragen in den nächsten Beiträgen beleuchten. Weiterlesen