Zum Hauptinhalt springen

💻 WEBINAR am 27.11.2025: Erfolgreiche B2B Marketing Planung 2026 - Gratis anmelden >

07.08.2025: Blog-Serie Teil 3

Geschäftslogik mit dbt und Jinja Templates wiederverwenden


HMA Team Giorgio Frisenda 1b90ede9
Giorgio Frisenda, 07.08.2025

dbt und Jinja ist Teil 3 unserer Blogreihe zur Verwendung von dbt modernen Marketing Data Stack, die sich insbesondere an BI Manager, Data Analysts, Analytics Engineers & Co. richtet.

Im ersten Artikel unserer dbt-Blogpost-Serie sind wir darauf eingegangen, wie dbt komplexe SQL-Workflows vereinfacht und die Verwaltung von Marketing-Daten-Pipelines erleichtert. Im zweiten Teil haben wir gezeigt, wie dbt Teams bei der Sicherstellung ihrer Datenqualität unterstützt: mit automatisierten Tests auf Schema-Ebene (unique, not_null, accepted_values oder relationships) und Freshness-Tests, um veraltete Daten frühzeitig zu erkennen, bevor sie Dashboards oder Reports beeinflussen.

Herausforderung im Marketing: Wiederkehrende Logik, viele Datenquellen

In dynamischen Marketing-Umfeldern muss dieselbe Business-Logik oft auf unterschiedliche Datenquellen angewendet werden. Typische Beispiele sind das Extrahieren von UTM-Parametern aus URLs, die Standardisierung von Kampagnennamen oder die Normalisierung von Plattformbezeichnungen (z. B. Instagram, Facebook, TikTok).

In klassischen SQL-Workflows, etwa direkt in Snowflake, wird diese Logik oft per Copy-Paste über verschiedene Modelle verteilt. Das führt zu doppeltem Code, inkonsistenten Ergebnissen und schwer wartbarem SQL.

Lösung: Wiederverwendbare Logik mit dbt und Jinja

dbt löst dieses Problem mit Hilfe von Jinja Templates. Jinja ist eine schlanke Template-Sprache, mit der sich Steuerlogik wie Schleifen oder Bedingungen (loops, if/else conditions) direkt in SQL-Modelle integrieren lässt, über sogenannte Macros, die wiederverwendbar sind.

Die wichtigsten Vorteile von Jinja Templates in dbt

  • Wiederverwendbare Logik: Einmal definiert, in beliebig vielen Modellen nutzbar
  • Übersichtliche Modelle: Geschäftslogik bleibt im Fokus, wiederkehrender Code wird ausgelagert
  • Konsistenz über Teams und Datenquellen hinweg: Gemeinsame Macros sorgen für einheitliche Berechnungen
  • Einfache Wartung: Eine Änderung im Macro aktualisiert alle Abhängigkeiten automatisch

Ein Beispiel aus der Praxis: UTM-Parameter vereinheitlichen

Stellen wir uns vor, ein Unternehmen sammelt Kampagnendaten aus Facebook, Google Ads, LinkedIn und TikTok. Jede Quelle liefert Click-URLs in einem anderen Format. Das Ziel ist es jeodch, einheitliche UTM-Parameter wie utm_campaign oder utm_source daraus zu extrahieren.

Mit dbt lassen sich dafür wiederverwendbare Macros erstellen, die einmal definiert und überall angewendet werden können, z. B. um URLs zu bereinigen oder UTM-Parameter herauszufiltern.

Hopmann_dbt_Blogpost_Jinja-1
-- macros/clean_url.sql
{% macro clean_url(column_name) %}
    LOWER(
        REPLACE(
            REPLACE(
                REPLACE(
                    REPLACE(
                        REPLACE(
                            REPLACE(
                                REPLACE(
                                    DECODE_URL(
                                        SPLIT_PART(SPLIT_PART({{ column_name }}, '?', 1), '#', 1)
                                    ),
                                    'https://', ''
                                ),
                                'http://', ''
                            ),
                            'ö', 'oe'
                        ),
                        'ü', 'ue'
                    ),
                    'ä', 'ae'
                ),
                'ß', 'ss'
            )
        )
    )
{% endmacro %}
Hopmann_dbt_Blogpost_Jinja-2
-- macros/extract_utm_params.sql
{% macro extract_utm_params(url_col) %}
  regexp_extract({{ url_col }}, '(?:[?&])utm_source=([^&]+)', 1) as utm_source,
  regexp_extract({{ url_col }}, '(?:[?&])utm_medium=([^&]+)', 1) as utm_medium,
  regexp_extract({{ url_col }}, '(?:[?&])utm_campaign=([^&]+)', 1) as utm_campaign,
  regexp_extract({{ url_col }}, '(?:[?&])utm_content=([^&]+)', 1) as utm_content,
  regexp_extract({{ url_col }}, '(?:[?&])utm_term=([^&]+)', 1) as utm_term
{% endmacro %}

Verwendung desselben Codes in verschiedenen Dateien und Modellen:

Hopmann_dbt_Blogpost_Jinja-3
-- models/intermediate/facebook_campaigns.sql
SELECT
  account_id,
	....
  {{ clean_url(url') }} AS cleaned_click_url,
  {{ extract_utm_params('cleaned_click_url') }}
	....
FROM {{ source('facebook_ads', 'campaigns') }}

-- models/intermediate/linkedin_campaigns.sql
SELECT
  account_id,
	....
  {{ clean_url(url') }} AS cleaned_click_url,
  {{ extract_utm_params('cleaned_click_url') }}
	....
FROM {{ source('linkedin_ads', 'campaigns') }}

-- models/intermediate/outbrain_campaigns.sql
SELECT
  account_id,
	....
  {{ clean_url(url') }} AS cleaned_click_url,
  {{ extract_utm_params('cleaned_click_url') }}
	....
FROM {{ source('outbrain_ads', 'campaigns') }}

Fazit: Warum dbt eine wichtige Rolle in Marketing Analytics spielt

Der moderne Marketing Data Stack erfordert Flexibilität, Geschwindigkeit und Vertrauen in großem Maßstab. In Kombination mit einem leistungsstarken Data Warehouse wie Snowflake bringt dbt eine Ebene der strategischen Transformation in den Stack: Prozesse werden vereinfacht, Datenqualität wird sichergestellt und Wiederverwendbarkeit gefördert.

Lassen Sie uns die zentralen Vorteile von dbt für Marketing-Teams zusammenfassen:

  • Vereinfachte Transformationen: Deklarative SQL-Modelle ersetzen komplexe, prozedurale Logik und machen Datenpipelines leichter lesbar und wartbar
  • Integrierte Tests und Monitoring: Stellen sicher, dass KPIs verlässlich bleiben und Dashboards auch bei mehreren Plattformen stabil funktionieren
  • Wiederverwendbare, skalierbare Geschäftslogik: Jinja Templates sorgen für Konsistenz und reduzieren redundanten Code über Plattformen wie Facebook, LinkedIn oder TikTok hinweg

Kurz gesagt: Mit dbt verbringt Ihr Team weniger Zeit mit Debugging und mehr Zeit mit Erkenntnissen. Wer einen modernen, verlässlichen Marketing Analytics Stack aufbauen will, sollte dbt als eine Option für eine zentrale Komponente in Betracht ziehen.

Wir unterstützen Sie gerne: sei es beim Einstieg mit dbt, bei der Auswahl der richtigen Struktur oder wenn Sie in einem laufenden Projekt nicht weiterkommen.