Code & Queries

Code & Queries: Your Source for SQL, Python, and AI Insights

Ein Data Warehouse (DWH) ist ein zentraler Bestandteil der Business Intelligence (BI) und dient der Speicherung, Organisation und Analyse großer Datenmengen. Die Struktur eines DWH basiert oft auf dem sogenannten Sternschema (Star Schema), das aus Dimensionen und Fact-Tables besteht. In diesem Blogbeitrag werden wir die verschiedenen Arten von Dimensionen und Fact-Tables detailliert betrachten, Beispiele geben und auch einige Skripte zur Veranschaulichung bereitstellen.


1. Dimensionen im Data Warehouse

Dimensionen sind Tabellen, die beschreibende Informationen enthalten und den Kontext für die Fakten in den Fact-Tables liefern. Sie sind die "Wer, Was, Wo, Wann" eines Data Warehouses. Es gibt verschiedene Arten von Dimensionen:

a) Reguläre Dimensionen

Reguläre Dimensionen sind die häufigsten und enthalten statische Daten, die sich selten ändern. Beispiele sind Produkt-, Kunden- oder Zeitdimensionen.

Beispiel: Produktdimension

CREATE TABLE Dim_Product (
    ProductID INT PRIMARY KEY,
    ProductName VARCHAR(100),
    Category VARCHAR(50),
    Price DECIMAL(10, 2),
    SupplierID INT
);

b) Slowly Changing Dimensions (SCD)

SCDs werden verwendet, wenn sich die Daten in einer Dimension im Laufe der Zeit ändern. Es gibt drei Haupttypen: - SCD Typ 1: Überschreibt alte Daten mit neuen Daten. - SCD Typ 2: Behält alte Daten bei und fügt neue Zeilen für geänderte Daten hinzu. - SCD Typ 3: Fügt eine neue Spalte hinzu, um sowohl alte als auch neue Werte zu speichern.

Beispiel: SCD Typ 2 (Kundendimension)

CREATE TABLE Dim_Customer (
    CustomerID INT PRIMARY KEY,
    CustomerName VARCHAR(100),
    Address VARCHAR(200),
    City VARCHAR(50),
    State VARCHAR(50),
    StartDate DATE,
    EndDate DATE,
    IsCurrent BIT
);

c) Junk Dimensionen

Junk Dimensionen kombinieren mehrere kleine, nicht zusammenhängende Attribute, die keine eigene Dimension rechtfertigen.

Beispiel: Junk Dimension

CREATE TABLE Dim_Junk (
    JunkID INT PRIMARY KEY,
    PaymentMethod VARCHAR(50),
    ShippingMethod VARCHAR(50),
    OrderPriority VARCHAR(20)
);

d) Degenerierte Dimensionen

Degenerierte Dimensionen sind Attribute, die keine eigene Tabelle haben, sondern direkt in der Fact-Tabelle gespeichert werden.

Beispiel: Bestellnummer in einer Fact-Tabelle

CREATE TABLE Fact_Sales (
    SalesID INT PRIMARY KEY,
    OrderID INT, -- Degenerierte Dimension
    ProductID INT,
    CustomerID INT,
    SalesAmount DECIMAL(10, 2)
);

e) Conformed Dimensions

Conformed Dimensions sind Dimensionen, die in mehreren Data Marts oder DWHs verwendet werden, um Konsistenz zu gewährleisten.

Beispiel: Zeitdimension

CREATE TABLE Dim_Time (
    TimeID INT PRIMARY KEY,
    Date DATE,
    Day INT,
    Month INT,
    Year INT,
    Quarter INT
);

2. Fact-Tables im Data Warehouse

Fact-Tables enthalten die quantitativen Daten (Fakten), die analysiert werden sollen. Sie sind mit Dimensionen über Fremdschlüssel verbunden.

a) Transaktions-Fact-Tables

Diese Tabellen speichern Daten auf Transaktionsebene, z. B. jede Verkaufs- oder Bestelltransaktion.

Beispiel: Verkaufs-Fact-Tabelle

CREATE TABLE Fact_Sales (
    SalesID INT PRIMARY KEY,
    ProductID INT,
    CustomerID INT,
    TimeID INT,
    SalesAmount DECIMAL(10, 2),
    Quantity INT,
    FOREIGN KEY (ProductID) REFERENCES Dim_Product(ProductID),
    FOREIGN KEY (CustomerID) REFERENCES Dim_Customer(CustomerID),
    FOREIGN KEY (TimeID) REFERENCES Dim_Time(TimeID)
);

b) Periodische Snapshot-Fact-Tables

Diese Tabellen speichern Daten zu bestimmten Zeitpunkten, z. B. monatliche Kontostände.

Beispiel: Monatlicher Kontostand

CREATE TABLE Fact_AccountBalance (
    BalanceID INT PRIMARY KEY,
    AccountID INT,
    TimeID INT,
    BalanceAmount DECIMAL(10, 2),
    FOREIGN KEY (TimeID) REFERENCES Dim_Time(TimeID)
);

c) Akkumulierte Snapshot-Fact-Tables

Diese Tabellen verfolgen den Fortschritt eines Prozesses über mehrere Schritte hinweg, z. B. eine Bestellung von der Platzierung bis zur Lieferung.

Beispiel: Bestellprozess

CREATE TABLE Fact_OrderProcess (
    OrderID INT PRIMARY KEY,
    ProductID INT,
    CustomerID INT,
    OrderDateID INT,
    ShipDateID INT,
    DeliveryDateID INT,
    OrderAmount DECIMAL(10, 2),
    FOREIGN KEY (ProductID) REFERENCES Dim_Product(ProductID),
    FOREIGN KEY (CustomerID) REFERENCES Dim_Customer(CustomerID),
    FOREIGN KEY (OrderDateID) REFERENCES Dim_Time(TimeID),
    FOREIGN KEY (ShipDateID) REFERENCES Dim_Time(TimeID),
    FOREIGN KEY (DeliveryDateID) REFERENCES Dim_Time(TimeID)
);

3. Beispiel: Sternschema in der Praxis

Angenommen, wir haben ein einfaches Data Warehouse für einen Online-Shop. Das Sternschema könnte wie folgt aussehen:

  • Dimensionen:
    • Dim_Product (Produktinformationen)
    • Dim_Customer (Kundeninformationen)
    • Dim_Time (Zeitinformationen)
  • Fact-Tabelle:
    • Fact_Sales (Verkaufstransaktionen)

SQL-Skript zur Erstellung des Schemas:

-- Dimensionen
CREATE TABLE Dim_Product (
    ProductID INT PRIMARY KEY,
    ProductName VARCHAR(100),
    Category VARCHAR(50),
    Price DECIMAL(10, 2)
);

CREATE TABLE Dim_Customer (
    CustomerID INT PRIMARY KEY,
    CustomerName VARCHAR(100),
    Address VARCHAR(200),
    City VARCHAR(50),
    State VARCHAR(50)
);

CREATE TABLE Dim_Time (
    TimeID INT PRIMARY KEY,
    Date DATE,
    Day INT,
    Month INT,
    Year INT
);

-- Fact-Tabelle
CREATE TABLE Fact_Sales (
    SalesID INT PRIMARY KEY,
    ProductID INT,
    CustomerID INT,
    TimeID INT,
    SalesAmount DECIMAL(10, 2),
    Quantity INT,
    FOREIGN KEY (ProductID) REFERENCES Dim_Product(ProductID),
    FOREIGN KEY (CustomerID) REFERENCES Dim_Customer(CustomerID),
    FOREIGN KEY (TimeID) REFERENCES Dim_Time(TimeID)
);

4. Fazit

Dimensionen und Fact-Tables sind die Grundbausteine eines Data Warehouses. Durch die richtige Modellierung dieser Komponenten können Unternehmen effizient Daten analysieren und fundierte Geschäftsentscheidungen treffen. Die Wahl der richtigen Dimensionstypen und Fact-Tables hängt von den spezifischen Anforderungen des Unternehmens und den zu analysierenden Daten ab.


Unterschiedliche Arten von Dimensionen, Facts und Measures im Data Warehouse (DWH)

In der Welt des Data Warehousing (DWH) sind Dimensionen, Facts und Measures zentrale Konzepte, die das Fundament für die Analyse und Auswertung von Daten bilden. Sie helfen dabei, komplexe Datenstrukturen zu organisieren und ermöglichen es, aussagekräftige Berichte und Analysen zu erstellen. In diesem Blogbeitrag werfen wir einen genaueren Blick auf die verschiedenen Arten von Dimensionen, Facts und Measures und wie sie im DWH eingesetzt werden.


Dimensionen: Die Strukturgeber des Data Warehouses

Dimensionen sind die „Beschreibungsmerkmale“ der Daten. Sie liefern den Kontext für die Fakten (Facts) und helfen dabei, Daten in verständliche Kategorien zu unterteilen. Es gibt verschiedene Arten von Dimensionen, die je nach Anwendungsfall zum Einsatz kommen:

  1. Reguläre Dimensionen
    Dies sind die häufigsten Dimensionen, die direkt mit den Fakten verknüpft sind. Beispiele hierfür sind Zeitdimensionen (Jahr, Monat, Tag), Produktdimensionen (Produktname, Kategorie) oder Kundendimensionen (Kundenname, Standort).

  2. Zeitdimensionen
    Eine spezielle Form der regulären Dimension, die sich ausschließlich auf Zeitangaben bezieht. Sie ist unverzichtbar für zeitbasierte Analysen wie Trends oder Vergleiche über verschiedene Zeiträume.

  3. Hierarchische Dimensionen
    Diese Dimensionen enthalten eine natürliche Hierarchie. Ein Beispiel ist die geografische Dimension, die von Land über Region bis hin zur Stadt strukturiert ist.

  4. Degenerierte Dimensionen
    Diese Dimensionen enthalten keine eigenen Attribute, sondern sind lediglich Schlüssel, die direkt in der Faktentabelle gespeichert werden. Ein Beispiel ist eine Bestellnummer, die keine weiteren Details enthält.

  5. Junk-Dimensionen
    Hier werden verschiedene Attribute zusammengefasst, die keine eigene Dimension rechtfertigen. Zum Beispiel könnten Statusflags oder binäre Werte in einer Junk-Dimension gespeichert werden.

  6. Conformed Dimensions
    Diese Dimensionen werden über mehrere Data Marts oder DWHs hinweg verwendet, um Konsistenz zu gewährleisten. Ein Beispiel ist eine globale Kundendimension, die in verschiedenen Abteilungen genutzt wird.

  7. Slowly Changing Dimensions (SCD)
    Diese Dimensionen berücksichtigen Änderungen über die Zeit. Es gibt verschiedene Typen von SCDs, z. B.:

    • SCD Typ 1: Überschreibt alte Daten mit neuen Daten.
    • SCD Typ 2: Behält alte Daten bei und fügt neue Zeilen für geänderte Daten hinzu.
    • SCD Typ 3: Speichert sowohl alte als auch neue Werte in separaten Spalten.

Facts: Die Messgrößen des Data Warehouses

Facts sind die quantitativen Daten, die analysiert werden sollen. Sie repräsentieren messbare Ereignisse oder Transaktionen und sind in der Regel numerisch. Facts werden in Faktentabellen gespeichert und sind mit Dimensionen verknüpft. Es gibt verschiedene Arten von Facts:

  1. Additive Facts
    Diese Facts können über alle Dimensionen hinweg summiert werden. Ein Beispiel ist der Umsatz, der nach Zeit, Produkt oder Region aggregiert werden kann.

  2. Semi-Additive Facts
    Diese Facts können nur über bestimmte Dimensionen hinweg summiert werden. Ein Beispiel ist der Kontostand, der über die Zeit nicht sinnvoll summiert werden kann, aber über andere Dimensionen wie Kunden oder Konten.

  3. Nicht-additive Facts
    Diese Facts können nicht summiert werden. Beispiele sind Durchschnittswerte oder Prozentsätze, die erst nach der Aggregation berechnet werden können.

  4. Factless Facts
    Diese Faktentabellen enthalten keine numerischen Werte, sondern dienen dazu, Beziehungen zwischen Dimensionen zu erfassen. Ein Beispiel ist die Erfassung von Anwesenheiten (z. B. welche Kunden an welchen Veranstaltungen teilgenommen haben).


Measures: Die konkreten Werte

Measures sind die konkreten Werte, die in den Faktentabellen gespeichert werden. Sie repräsentieren die messbaren Größen, die analysiert werden sollen. Beispiele für Measures sind: - Umsatz (Sales) - Menge (Quantity) - Kosten (Cost) - Gewinn (Profit)

Measures können je nach Anforderung aggregiert werden, z. B. durch Summierung, Durchschnittsbildung oder Zählung.


Zusammenspiel von Dimensionen, Facts und Measures

Das Zusammenspiel dieser Elemente ist entscheidend für die Funktionsweise eines Data Warehouses. Hier ein einfaches Beispiel:

  • Dimensionen: Zeit (Jahr, Monat, Tag), Produkt (Produktname, Kategorie), Kunde (Kundenname, Standort)
  • Facts: Verkaufszahlen (Umsatz, Menge)
  • Measures: 100.000 € Umsatz, 500 verkaufte Einheiten

Durch die Verknüpfung dieser Elemente können komplexe Abfragen gestellt werden, wie z. B.:
„Wie hoch war der Umsatz im Jahr 2022 für Produkte der Kategorie ‚Elektronik‘ in der Region ‚Europa‘?“


Fazit

Dimensionen, Facts und Measures sind die Bausteine eines effektiven Data Warehouses. Sie ermöglichen es, Daten in einer strukturierten und analysierbaren Form zu speichern. Durch das Verständnis der verschiedenen Arten und ihrer Anwendungsfälle können Unternehmen ihre Daten optimal nutzen, um fundierte Entscheidungen zu treffen und wertvolle Erkenntnisse zu gewinnen.

Egal, ob Sie ein Data Warehouse neu aufbauen oder ein bestehendes optimieren – die richtige Modellierung von Dimensionen, Facts und Measures ist der Schlüssel zum Erfolg. Haben Sie Fragen oder benötigen Sie Unterstützung bei der Implementierung? Dann lassen Sie uns gerne darüber sprechen!


Weiterführende Tipps:
- Nutzen Sie Conformed Dimensions, um Konsistenz über verschiedene Data Marts hinweg zu gewährleisten.
- Achten Sie bei der Modellierung auf die Anforderungen an Slowly Changing Dimensions.
- Vermeiden Sie übermäßig komplexe Hierarchien, um die Performance nicht zu beeinträchtigen.

Viel Erfolg bei Ihren Data-Warehouse-Projekten! 🚀I