Eine Einführung in Slowly Changing Dimensions (SCD) am Beispiel eines Online-Shops

Data warehouse technology concept with blue text

Der Begriff „Slowly Changing Dimensions“ (SCD) bezieht sich auf die verschiedenen Techniken zur Handhabung von Änderungen in den Dimensionsdaten innerhalb eines Data Warehouses. Dimensionen in einem Data Warehouse dienen dazu, die Fakten in einer Faktentabelle zu beschreiben und zu kategorisieren, um eine aussagekräftige Analyse zu ermöglichen. Da sich Geschäftsdaten im Laufe der Zeit ändern können, ist es entscheidend, eine Strategie für das Management dieser Änderungen zu haben. Hier treten SCDs ins Spiel.

Typen von Slowly Changing Dimensions

Es gibt verschiedene Typen von SCDs, die eine Reihe von Techniken zum Management von Dimensionsänderungen anbieten:

  • SCD Typ 1: Bei dieser Methode werden historische Daten einfach durch aktuelle ersetzt, ohne die Historie zu bewahren.
  • SCD Typ 2: Hier wird die Historie durch das Hinzufügen von neuen Zeilen bewahrt, um Änderungen und die Gültigkeitszeiträume der Daten festzuhalten.
  • SCD Typ 3: Dieser Typ verfolgt die Änderungen durch das Hinzufügen neuer Attribute in der Dimensionstabelle, meistens mit einem „ursprünglichen“ und einem „aktuellen“ Wert.

Beispiel: Online-Shop Data Warehouse

Betrachten wir ein einfaches Beispiel eines Online-Shops, um die SCD-Typen in der Praxis zu verstehen. Hier haben wir mehrere Dimensionen, wie z.B. DimBenutzer, DimProdukt, und eine Faktentabelle FactBestellung.

  • DimBenutzer: Hier speichern wir Informationen zu den Benutzern/Kunden, wie z.B. Name, E-Mail, und Adresse.
  • DimProdukt: Diese Dimension hält die Produkteigenschaften, wie Produktname, Kategorie, und Preis.
  • FactBestellung: Diese Faktentabelle speichert Transaktionsdaten, wie Benutzer, Produkt, Bestelldatum, und Menge.

Anwenden von SCD-Typen auf unseren Online-Shop

1. SCD Typ 1 – Änderungen ohne Historie:

Angenommen, ein Benutzer ändert seine E-Mail-Adresse. Mit SCD Typ 1 würden wir einfach die alte E-Mail-Adresse durch die neue ersetzen, ohne die alte Adresse zu speichern.

UPDATE DimBenutzer
SET Email = 'neue-email@onlinedatawarehouse.de'
WHERE BenutzerID = XYZ;

2. Slowly Changing Dimension Typ 2 (SCD2) – Historie bewahren:

Slowly Changing Dimension Typ 2 (SCD2) ist eine weitverbreitete Methode, um den historischen Verlauf von Daten in einem Data Warehouse zu speichern und zu verwalten. Im Gegensatz zu anderen SCD-Methoden ermöglicht SCD2 das Nachverfolgen von unbegrenzten Historien und ist besonders nützlich, wenn es um die Analyse von Trends und Veränderungen über die Zeit geht. Aufgrund seiner Fähigkeit, umfassende Datenhistorien effektiv zu bewältigen, ist SCD2 die am häufigsten implementierte Art der SCD.

Grundkonzept

SCD2 handhabt Änderungen, indem es einen neuen Datensatz mit der geänderten Information hinzufügt, während der alte Datensatz unverändert bleibt. Dies ermöglicht es, den Verlauf und die Entwicklungen von Daten klar nachzuvollziehen. Um den aktuellsten Wert zu identifizieren und den Gültigkeitszeitraum eines jeden Datensatzes zu kennen, werden üblicherweise zusätzliche Attribute wie „Gültig_von_Datum“ und „Gültig_bis_Datum“ eingeführt.

Beispiel

Betrachten wir eine Dimensionstabelle „Mitarbeiter“:

| MitarbeiterID | Name     | Position     | Gültig_von_Datum | Gültig_bis_Datum |
|---------------|----------|--------------|------------------|------------------|
| 1             | Max M.   | Entwickler   | 01-01-2021       | 31-12-9999       |

Wenn Max zur „Teamleitung“ befördert wird, wird ein neuer Datensatz wie folgt hinzugefügt:

| MitarbeiterID | Name    | Position    | Gültig_von_Datum | Gültig_bis_Datum |
|---------------|---------|-------------|------------------|------------------|
| 1             | Max M.  | Entwickler  | 01-01-2021       | 31-03-2023       |
| 2             | Max M.  | Teamleitung | 01-04-2023       | 31-12-9999       |

Hierbei markiert das „Gültig_bis_Datum“ 31-12-9999 den aktuellsten Datensatz.

Schlüsselaspekte

  • Umfassende Historie: SCD2 ermöglicht das Nachverfolgen vollständiger Historien von Datenänderungen.
  • Datenintegrität: Die historischen Daten bleiben unverändert, was zu zuverlässigen Analysen führt.
  • Komplexität: Die Verwaltung von Datensätzen, insbesondere in Bezug auf das Einfügen neuer Zeilen und das Aktualisieren von Gültigkeitsdaten, kann komplex sein.

Vorteile und Herausforderungen

  • Vorteile:
    • Detailreiche Verlaufsdaten und Fähigkeit zur Durchführung zeitbasierter Analysen.
    • Erhalt der Datenintegrität und Sicherstellung einer klaren Historie.
  • Herausforderungen:
    • Der Speicherbedarf kann signifikant steigen, insbesondere bei häufigen Änderungen.
    • Abfragen können komplexer und performanceintensiver werden aufgrund der Notwendigkeit, zwischen historischen und aktuellen Daten zu unterscheiden.

SCD2 ist in der Data-Warehouse-Welt ein fundamentales Muster zur Historisierung von Daten und bietet eine robuste Lösung, um zeitliche Analysen und Trends zu verstehen. Obwohl es mit Herausforderungen in Bezug auf Speicher und Komplexität verbunden ist, bleibt es die bevorzugte Methode für Szenarien, in denen umfassende, zuverlässige Historien von entscheidender Bedeutung sind.

Hier ist ein einfaches Beispiel, wie SCD Typ 2 in SQL implementiert werden könnte. Nehmen wir an, es gibt eine Änderung für einen Mitarbeiter, wie im obigen Beispiel mit Max und seiner Beförderung zur Teamleitung.

Zuerst aktualisieren wir den alten Datensatz mit einem Enddatum und fügen dann einen neuen Datensatz mit den aktualisierten Informationen und einem offenen Enddatum hinzu:

-- Aktualisieren des alten Datensatzes
UPDATE Mitarbeiter
SET Gültig_bis_Datum = '2023-03-31'
WHERE MitarbeiterID = 1
AND Gültig_bis_Datum = '9999-12-31';

-- Einfügen des neuen Datensatzes
INSERT INTO Mitarbeiter (MitarbeiterID, Name, Position, Gültig_von_Datum, Gültig_bis_Datum)
VALUES (2, 'Max M.', 'Teamleitung', '2023-04-01', '9999-12-31');

Hierbei ist es wichtig zu beachten, dass die MitarbeiterID im realen Szenario wahrscheinlich nicht manuell zugewiesen wird, sondern eine Art von auto-incrementing ID oder eine andere Logik zur Generierung von eindeutigen IDs implementiert sein sollte.

Wenn Sie Abfragen für Berichte oder Analysen erstellen, können Sie das „Gültig_bis_Datum“ verwenden, um den relevantesten Datensatz zu identifizieren:

-- Abfrage des aktuellsten Datensatzes für jeden Mitarbeiter
SELECT *
FROM Mitarbeiter
WHERE Gültig_bis_Datum = '9999-12-31';

Dies gibt Ihnen eine Momentaufnahme der aktuellen Daten, während die gesamte Historie für detailliertere Analysen oder Audits erhalten bleibt. In komplexeren Szenarien, besonders bei großen Datenmengen, können zusätzliche Strategien oder Optimierungen notwendig sein, um die Performance zu gewährleisten.

3. SCD Typ 3 – Veränderungen nachverfolgen:

SCD Typ 3 ist eine Methode zur Handhabung von Änderungen in langsam veränderlichen Dimensionen in einem Data Warehouse. Dabei wird bei einer Änderung in einem Attribut eine neue Spalte in der Dimensionstabelle hinzugefügt, die den vorherigen Wert speichert. Hierdurch können Sie historische Daten verfolgen, ohne eine unbegrenzte Anzahl von Zeilen zu erzeugen. SCD3 ist nützlich, wenn Sie nur einen oder eine begrenzte Anzahl von historischen Änderungen verfolgen möchten.

Struktur:

Ein SCD Typ 3-Design könnte folgendermaßen aussehen:

  • Es gibt eine aktuelle Wertspalte für ein Attribut.
  • Es gibt eine oder mehrere zusätzliche Spalten, die die historischen Werte des Attributs aufnehmen.
  • Es könnte zusätzliche Spalten geben, die den Gültigkeitszeitraum für den jeweiligen Wert anzeigen.

Beispiel:

Betrachten wir unsere Tabelle, die Benutzerdaten enthält:

| EmployeeID | EmployeeName | CurrentTitle | PreviousTitle | DateTitleChanged |
|------------|--------------|--------------|---------------|------------------| 
| 1          | John Doe     | Manager      | Analyst       | 01-01-2023       | 
| 2          | Jane Smith   | Sr. Analyst  | Analyst       | 15-02-2023       |

In diesem Beispiel:

  • CurrentEmail ist das Attribut, dessen Änderungen wir verfolgen.
  • PreviousEmail speichert den vorherigen Wert von CurrentEmail.
  • DateEmailChanged speichert das Datum, an dem die Änderung stattgefunden hat.

Wenn John Doe nun zum „Director“ befördert wird, würde die Tabelle so aktualisiert werden:

Anwendungsfälle:

SCD Typ 3 ist nützlich in Szenarien, wo:

  • Nur eine begrenzte Historie der Daten verfolgt werden muss.
  • Der Fokus auf der Analyse der Änderungen im Verlauf liegt.

Vorteile und Nachteile:

  • Vorteile:
    • Ermöglicht die Verfolgung von historischen Daten ohne exponentielle Zunahme der Datensatzanzahl.
    • Einfach zu implementieren und zu verstehen.
  • Nachteile:
    • Begrenzte Verfolgung der Historie (normalerweise nur ein vorheriger Wert).
    • Nicht ideal für Attribute, die häufig geändert werden, da die Struktur der Tabelle angepasst werden muss, um zusätzliche Änderungen aufzunehmen.
    • Kann zu einer komplexen Struktur führen, wenn viele Attribute verfolgt werden.

SCD Typ 3 bietet eine effiziente Möglichkeit, eine begrenzte Historie von Datenänderungen zu verfolgen. Obwohl es in bestimmten Anwendungsfällen nützlich ist, sollten die speziellen Anforderungen des Geschäftsszenarios und die Frequenz der Datenänderungen bei der Entscheidung für einen SCD-Typ berücksichtigt werden.

SCDs bieten eine strukturierte Methode zum Umgang mit der natürlichen Evolution von Daten im Laufe der Zeit. Die Auswahl des richtigen SCD-Typs hängt von den spezifischen Geschäftsanforderungen, Reporting-Bedürfnissen und der Komplexität der Datenmanagement-Infrastruktur ab. Egal, ob Sie die Historie von Preisänderungen, Benutzerinformationen oder Produktstatus beibehalten wollen, SCDs bieten flexible Lösungen für die Herausforderungen des Managements sich ändernder Dimensionen in einem Data Warehouse.

Wie hat dir der Artikel gefallen?

Vielen Dank für dein Feedback!
About Frank 83 Articles

Ich bin Frank, Data Warehouse und BI-Entwickler mit langjähriger Expertise in diesem Bereich. Ich verfüge über mehr als 20 Jahre Berufserfahrung im DWH Umfeld. Das Analysieren und Interpretieren von Zahlen, Daten und Fakten ist meine große Leidenschaft, aus diesem Grunde ist auch diese Seite hier entstanden.

1 Comment

  1. Hallo Frank, bei SCD Type 3 sind die Daten nicht ganz konsistent. Die Tabelle in dem Bild hat die Felder „Title“ und der Text darunter bezieht sich auf die Felder für die Historierung der Email (CurrentTitle vs. CurrentEmail usw.). Trotzdem ein prima Artikel!

Leave a Reply

Your email address will not be published.


*