0Pricing
Digital Marketing Academy · Lektion

Marketingdaten modellieren

Bereinigte, verknüpfte Tabellen.

Marketingdaten modellieren ist eine kostenlose Digital Marketing Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Digital Marketing Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Digital Marketing Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum überhaupt modellieren

Rohtabellen von Konnektoren sind unübersichtlich: uneinheitliche Spaltennamen, gemischte Währungen, unterschiedliche Granularitäten und plattformspezifische Besonderheiten. Direkte Abfragen dieser Tabellen führen zu falschen und nicht reproduzierbaren Zahlen.

Datenmodellierung ist die Disziplin, aus Rohzeilen saubere, konsistente und geschäftstaugliche Tabellen zu erstellen. Hier werden ROAS, Conversion und Umsatz einmalig und korrekt definiert, sodass jeder Bericht dieselben Ergebnisse liefert.

Das Star-Schema

Das vorherrschende Analytics-Modell ist das Star-Schema: eine zentrale Faktentabelle mit messbaren Ereignissen, umgeben von Dimensionstabellen, die diese Ereignisse beschreiben. Fakten enthalten Zahlen wie Ausgaben, Klicks und Umsatz; Dimensionen enthalten den Kontext wie Kampagne, Datum, Kanal und Kunde.

Diese Struktur ist für Marketingfachleute intuitiv und für BI-Tools effizient. Sie verknüpfen eine Faktentabelle mit mehreren Dimensionen, um Kennzahlen nach beliebigen Attributen aufzuschlüsseln.

        dim_date
           |
dim_channel -- fct_ad_spend -- dim_campaign
           |
        dim_account

fct_ad_spend (facts): impressions, clicks, cost, conversions
dims: who / what / when context

Fakten vs. Dimensionen

Eine Faktentabelle ist lang und additiv: Sie enthält eine Zeile pro Ereignis oder pro Tag und Kampagne sowie numerische Messwerte, die Sie summieren. Eine Dimensionstabelle ist breit und beschreibend: Sie enthält eine Zeile pro Kampagne oder Kunde sowie Attribute, nach denen Sie filtern und gruppieren.

Die Faustregel: Wenn Sie einen Wert mit SUM aggregieren würden, ist er eine Kennzahl in einer Faktentabelle; wenn Sie ihn mit GROUP BY gruppieren würden, ist er eine Dimension. Ausgaben sind eine Kennzahl; der Kampagnenname ist eine Dimension.

fct_ad_spend         dim_campaign
----------------     ----------------
date                 campaign_id (PK)
campaign_id (FK)     campaign_name
cost      <-SUM->     channel
clicks    <-SUM->     objective
conversions          start_date

Granularität: die erste Entscheidung

Die Granularität beschreibt, wofür eine Zeile in einer Faktentabelle steht. Sie zuerst festzulegen, ist die wichtigste einzelne Modellierungsentscheidung. Das Vermischen von Granularitäten, etwa täglichen Zeilen mit Gesamtwerten über die gesamte Laufzeit, führt zu Doppelzählungen und verfälscht jede nachgelagerte Kennzahl.

Beschreiben Sie die Granularität in klaren Worten: eine Zeile pro Kampagne und Tag. Jede Spalte muss dann auf dieser Granularität korrekt sein, und jeder Ladevorgang muss sie einhalten.

Declared grain: one row per campaign per day

-- enforce uniqueness on the grain
SELECT date, campaign_id, COUNT(*)
FROM fct_ad_spend
GROUP BY 1,2
HAVING COUNT(*) > 1;   -- must return 0 rows

Staging-Modelle

Erstellen Sie vor Fakten und Dimensionen Staging-Modelle: eines pro Quelltabelle, mit Umbenennung der Spalten in einen Standard, Typkonvertierung und Vereinheitlichung der Einheiten, etwa Cent in Dollar und UTC-Daten. Ein Staging-Modell bildet genau eine Rohtabelle ab, nicht mehr.

Staging ist die Bereinigungsebene. Sie kapselt Besonderheiten der Quellen, sodass Ihre nachgelagerten Marts nicht wissen müssen, dass Meta den Wert Ausgaben nennt und Google ihn Kosten nennt.

-- stg_google_ads__spend
SELECT
  date AS spend_date,
  campaign_id,
  'google' AS channel,
  cost_micros / 1000000 AS cost,   -- micros -> dollars
  clicks,
  conversions
FROM raw.google_ads__campaign_stats;

Kanäle zusammenführen

Jede Werbeplattform berichtet anders, aber nach dem Staging haben die Daten eine gemeinsame Struktur. Das nächste Modell führt sie in einer kanalübergreifenden Ausgaben-Faktentabelle zusammen, der Grundlage für ein kanalübergreifendes Reporting.

Diese eine Tabelle macht den Gesamt-ROAS möglich. Da alle Kanäle auf dieselben Spalten vereinheitlicht sind, summiert eine einzige Abfrage die Ausgaben von Google, Meta und TikTok gleichzeitig.

-- fct_ad_spend: union all channels
SELECT * FROM stg_google_ads__spend
UNION ALL
SELECT * FROM stg_meta_ads__spend
UNION ALL
SELECT * FROM stg_tiktok_ads__spend;

-- now: SUM(cost) GROUP BY channel works

Konforme Dimensionen

Für kanalübergreifende Analysen müssen Dimensionen konform sein: eine gemeinsame dim_date und dim_channel, mit denen sich jede Faktentabelle identisch verknüpfen lässt. Dann bedeutet „Umsatz nach Monat und Kanal“ dasselbe, unabhängig davon, ob die Quelle Werbung, E-Mail oder Web ist.

Konforme Dimensionen ermöglichen es, Ausgaben und Umsatz in einem Diagramm direkt gegenüberzustellen. Ohne sie sind Verknüpfungen nicht deckungsgleich und die Summen weichen unbemerkt voneinander ab.

Conformed dims shared across facts:
dim_date     -> joined by every fact on date
dim_channel  -> 'google','meta','email','organic'
dim_campaign -> unified campaign keys

-> spend and revenue line up on the same axes

Attribution in SQL

Attribution ordnet Kontaktpunkten den Anteil an einer Conversion zu. Last Click ist am einfachsten: Die letzte Marketingquelle vor der Conversion erhält die gesamte Zuordnung. First Click, lineare und positionsbasierte Modelle verteilen die Zuordnung auf unterschiedliche Weise.

In einem Data Warehouse implementieren Sie Attribution als Modell und nicht als Blackbox einer Plattform. Mit ereignisbasierten GA4-Daten können Sie die Kontaktpunkte pro Nutzer mit Window Functions erfassen, beliebige Regeln anwenden und die Ergebnisse verschiedener Modelle sachlich vergleichen.

-- last non-direct click per conversion
WITH touches AS (
  SELECT user_id, channel, event_time,
    ROW_NUMBER() OVER (PARTITION BY user_id
      ORDER BY event_time DESC) AS rn
  FROM web_touchpoints
  WHERE channel <> 'direct'
)
SELECT channel, COUNT(*) FROM touches WHERE rn=1
GROUP BY 1;

Slowly Changing Dimensions

Dimensionsattribute ändern sich im Laufe der Zeit: Die für das Budget einer Kampagne verantwortliche Person wechselt oder die Stufe eines Kunden wird angehoben. Eine Slowly Changing Dimension vom Typ 2 bewahrt den Verlauf, indem sie eine neue Zeile mit Gültigkeitsdaten hinzufügt, statt die bestehende zu überschreiben.

Das ist für eine korrekte zeitpunktbezogene Berichterstattung wichtig. Um zu wissen, welchem Segment ein Kunde zum Zeitpunkt seiner Conversion angehörte, benötigen Sie die damals gültige Version der Dimension und nicht die heutige.

dim_customer (SCD Type 2)
cust_id  tier      valid_from   valid_to     is_current
101      free      2026-01-01   2026-04-01   false
101      pro       2026-04-01   9999-12-31   true

-- join on event_date BETWEEN valid_from AND valid_to

Tests und Dokumentation

Modelle sind Code, also testen Sie sie. Mit Tools wie dbt können Sie sicherstellen, dass Schlüssel eindeutig und nicht null sind, dass Kanalwerte zu einer erlaubten Wertemenge gehören und dass Beziehungen zwischen Tabellen intakt sind.

Tests erkennen Schema Drift und fehlerhafte Verknüpfungen, bevor diese ein Dashboard erreichen. Zusammen mit automatisch generierter Dokumentation und Lineage machen sie das Modell vertrauenswürdig und leichter zugänglich, statt es zu einer fragilen Blackbox werden zu lassen.

# dbt schema test
models:
  - name: fct_ad_spend
    columns:
      - name: campaign_id
        tests: [not_null]
      - name: channel
        tests:
          - accepted_values:
              values: ['google','meta','tiktok']

Marts: die letzte Ebene

Die oberste Ebene bilden Marts: geschäftstaugliche Tabellen, die auf bestimmte Zielgruppen zugeschnitten sind, etwa ein marketing_performance Mart, das Ausgaben bereits mit Umsatz verknüpft und den ROAS pro Kanal und Tag berechnet.

BI-Tools lesen ausschließlich aus Marts. Durch das Vorabverknüpfen und Vorabaggregieren bleiben Dashboards hier schnell und kostengünstig, und jeder Analyst verwendet automatisch dieselben korrekten Definitionen.

-- marts.marketing_performance (1 row / day / channel)
SELECT s.spend_date, s.channel,
  SUM(s.cost)               AS spend,
  SUM(r.revenue)            AS revenue,
  SAFE_DIVIDE(SUM(r.revenue), SUM(s.cost)) AS roas
FROM fct_ad_spend s
LEFT JOIN fct_revenue r USING (spend_date, channel)
GROUP BY 1,2;

Kurzer Check

Sie erstellen eine Faktentabelle zur Werbeleistung und müssen Doppelzählungen vermeiden. Was müssen Sie unbedingt festlegen, bevor Sie eine einzige Spalte anlegen?

Zusammenfassung

Datenmodellierung verwandelt unübersichtliche Rohdatentabellen durch mehrere Schichten in vertrauenswürdige, geschäftsfertige Daten: Staging bereinigt und vereinheitlicht jede Quelle, Fakten und konforme Dimensionen bilden ein Sternschema, und Data Marts verknüpfen alles vorab für BI.

Definieren Sie zuerst die Granularität, führen Sie Kanäle für kombinierte Kennzahlen zusammen, implementieren Sie Attribution und die Historie nach SCD Type 2 in SQL und testen Sie jedes Modell, damit falsche Zahlen sofort auffallen, statt in einem Dashboard zu landen.

Häufig gestellte Fragen

Ist die Lektion „Marketingdaten modellieren“ kostenlos?

Ja — der vollständige Text von „Marketingdaten modellieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Digital Marketing Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Digital Marketing Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Marketingdaten modellieren“?

Bereinigte, verknüpfte Tabellen. Du übst Digital Marketing Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Digital Marketing Academy zu starten?

Keine Vorkenntnisse erforderlich. Digital Marketing Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Marketingdaten modellieren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Digital Marketing Academy-Lektion Code schreiben und ausführen?

Ja. Jede Digital Marketing Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Warum ein Data Warehouse
  2. ETL und Konnektoren
  3. Marketingdaten modellieren
  4. Dashboards, die Maßnahmen auslösen
← Zurück zu Digital Marketing Academy