Construire un projet dbt GA4 n’est pas compliqué, mais il comporte suffisamment de nuances spécifiques à GA4 que partir d’une connaissance générale de dbt n’est pas tout à fait suffisant. Les tables d’export shardées cassent les patterns incrémentaux standard. Les paramètres d’événements imbriqués nécessitent une extraction basée sur des macros. Le contexte de session nécessite un cadrage soigneux des fonctions fenêtre. Ce hub relie les notes qui traitent chaque couche du problème.
La décision de conception centrale : une table intermédiaire enrichie au grain événement où chaque ligne porte le contexte de session. Au lieu de construire directement des tables au grain session (l’approche que prennent la plupart des packages open-source), cette architecture enrichit chaque événement avec la page d’entrée, la source de trafic et les flags de conversion via des fonctions fenêtre. Le mart de sessions devient un GROUP BY trivial. L’analyse de funnel et les questions de séquence d’événements fonctionnent sans jointures.
C’est le pattern décomposé depuis GA4 + dbt : un template de projet production-ready.
Avant de construire : l’écosystème des packages existants
Écosystème de packages dbt GA4 — Les principaux packages dbt GA4 open-source (Velir/dbt-ga4, Fivetran, admindio), ce que chacun optimise, et les patterns qui valent la peine d’être empruntés même si vous construisez sur mesure. Commencez ici pour comprendre l’espace de conception.
Configuration du projet
Configuration du projet dbt GA4 — Le dbt_project.yml complet avec comportement piloté par variables, matérialisations par dossier et valeurs par défaut des tests. Comment structurer le projet pour la réutilisation entre plusieurs propriétés GA4.
La couche de base
Modèle de base shardé vers partitionné GA4 — Comment l’export date-shardé GA4 (events_YYYYMMDD) casse les patterns incrémentaux standard, et l’approche filtre _TABLE_SUFFIX + lookback statique qui fait fonctionner correctement le partition pruning BigQuery.
Macro d’extraction de paramètres GA4 — La macro dbt extract_event_param qui encapsule le pattern de sous-requête corrélée pour l’extraction event_params. Pourquoi des sous-requêtes corrélées plutôt que CROSS JOIN UNNEST, et la variante numérique pour les champs int/float/double.
Pattern UNNEST des items e-commerce GA4 — Construire un modèle séparé au grain item avec un UNNEST cartésien intentionnel. Quand le tableau items imbriqué de GA4 nécessite son propre modèle, et comment les agrégats d’items se connectent au pipeline au niveau événement.
La couche intermédiaire
Modèle d’événements sessionisés GA4 — L’implémentation CTE par CTE de int__ga4__events_sessionized : nettoyage des URLs, propagation du contexte de session via fonctions fenêtre, regroupement des canaux et jointures d’agrégation des items. La pièce maîtresse de l’ensemble du projet.
Pièges des fonctions fenêtre GA4 — Trois pièges spécifiques à GA4 dans les fonctions fenêtre : le problème de cadrage LAST_VALUE, IGNORE NULLS pour les données d’événements éparses, et MAX pour la propagation des flags booléens de session.
Macro de regroupement des canaux GA4 — La logique de regroupement des canaux par défaut de Google sous forme de macro dbt réutilisable. L’ordre du CASE, les patterns regex, et comment valider par rapport à vos conventions UTM.
La couche mart
Pattern du mart utilisateurs GA4 — Construire un mart au grain utilisateur depuis les données de session avec attribution premier/dernier contact, agrégation de la valeur vie, et unification user_id à travers les valeurs user_pseudo_id.
Pour le mart de sessions, consultez Sessionisation au grain événement — une fois que le modèle sessionisé existe, le mart de sessions est un GROUP BY avec ANY_VALUE.
Tests
Patterns de tests dbt GA4 — Tests que les tests de schéma dbt standard manquent : événements session_start manquants, transactions orphelines, métriques de session suspectes. Configuration de la fraîcheur des sources et patterns de tests singuliers.
Concepts associés
- Hub de sessionisation GA4 — Tous les concepts autour de la construction de sessions depuis les données d’événements GA4
- Sessionisation au grain événement — Pourquoi les événements enrichis surpassent les tables au grain session
- Construction de la clé de session GA4 — L’exigence de clé composite
- Données tardives et pattern de fenêtre de lookback — Le pattern général de fenêtre de lookback
- Écarts de chiffres entre GA4 et BigQuery — Pourquoi les chiffres différeront de l’interface GA4