Van cloud-infrastructuur tot rapportageklare datamodellen voor assortiment, e-commerce, advertising en pricing.
Context & probleem
Het retailbedrijf had behoefte aan één betrouwbaar fundament voor commerce- en assortimentsrapportage. Data zat verspreid over meerdere bronnen: GA4, advertentieplatformen, productfeeds, pricingtools en SEO-bronnen.
Zonder centrale modellering ontstaat al snel een landschap van losse exports, dashboards en definities. Omzet, marge, kanaalperformance, productbeschikbaarheid en prijspositie worden dan afhankelijk van de plek waar je kijkt.
Daarom is een platform gebouwd waarin infrastructuur, extractie, transformatie en reporting logisch van elkaar zijn gescheiden.
Architectuur
De oplossing bestaat uit drie lagen:
Cloud infrastructuur
Terraform → Cloud Functions Gen 2 → Cloud Scheduler → Secret Manager → GCS
Data landing
Python extractors/loaders → BigQuery raw tables
Transformatie & reporting
dbt staging → business transformations → final models → Power BI
Terraform beheert de cloudresources. Python-functies halen data op en laden die naar BigQuery. dbt zorgt vervolgens voor opschoning, businesslogica, tests en rapportageklare modellen.
Infrastructure-as-Code met Terraform
De Google Cloud-infrastructuur is declaratief opgezet met Terraform. Belangrijke onderdelen:
- Cloud Functions Gen 2 voor extractie- en loadprocessen.
- Cloud Scheduler voor dagelijkse triggers.
- Secret Manager voor API-keys en credentials.
- Google Cloud Storage voor deployment-artifacts.
- IAM voor gecontroleerde toegang per workload.
- Remote Terraform state in GCS, zodat het team veilig kan samenwerken.
Een herbruikbare Terraform-module verzorgt het zippen van Python-code, uploaden naar GCS, deployen van Cloud Functions, koppelen van secrets en instellen van invoker-rechten. Daardoor kon elke nieuwe databron volgens hetzelfde patroon worden toegevoegd.
Databronnen en loading
De serverless extractielaag haalt data op uit meerdere bronnen:
| Bron | Gebruik |
|---|---|
| Commerceplatform productfeed | Productinformatie, categorieën, prijzen en beschikbaarheid |
| Pricing API | Eigen prijzen en concurrentieprijzen |
| GA4 BigQuery Export | Events, sessies, transacties en e-commercegedrag |
| Google Ads, Meta Ads, Criteo | Campagnekosten, klikken, impressies, conversies en omzet |
| SEO / Search Console | Organische performance en pagina-inzichten |
De Python-loaders normaliseren nested JSON, voegen metadata toe zoals load_date en load_ts, dwingen BigQuery-schema's af en schrijven naar gepartitioneerde tabellen. Waar nodig worden dagpartities opnieuw overschreven, zodat dagelijkse runs herhaalbaar zijn zonder historische data te verliezen.
dbt-transformatielaag
De dbt-laag is opgebouwd in duidelijke lagen:
1_ga4_data_models
staging en marts voor events, sessies, users, items en transacties
2_business_transformations
pricing, ecommerce, advertising, SEO en billing
3_final_data_models
rapportageklare modellen voor Power BI
GA4-data wordt eerst opgeschoond en verrijkt met sessie-, user- en traffic-source-logica. Purchase-events worden gededupliceerd, transacties worden gekoppeld aan sessiecontext en attributiondata, en e-commerce performance wordt gemodelleerd op basis van betrouwbare keys.
Voor advertentiedata worden Google Ads, Meta Ads en Criteo samengebracht in één uniform campagnemodel. Verschillen in veldnamen, devices, metrics en conversiedefinities worden centraal opgelost in dbt in plaats van in losse dashboards.
Voor pricing worden eigen prijzen naast concurrentieprijzen gezet. Daardoor ontstaan modellen met prijsverschil, prijsindex, beschikbaarheid en labels zoals competitor_cheaper, competitor_more_expensive en equal_price.
Veel modellen zijn incrementeel opgezet met BigQuery insert_overwrite op dagpartities. Hierdoor worden alleen recente dagen opnieuw verwerkt, wat kosten verlaagt en refreshes sneller maakt.
Wat heeft de business hieraan?
De waarde zit niet alleen in "data verzamelen", maar vooral in betere besluitvorming.
GA4-data wordt betrouwbaarder dan de interface.
In plaats van alleen naar de GA4-interface te kijken, wordt de ruwe event data uit BigQuery getransformeerd, opgeschoond, gededupliceerd en getest. Meetfouten en inconsistenties kunnen worden gecorrigeerd of uitgesloten, waardoor de rapportages kwalitatief beter zijn dan standaard interfacecijfers.
Advertentiedata leeft niet meer in silo's.
Google Ads, Meta Ads en Criteo worden samengebracht in één datamodel. Daardoor kan performance over platformen heen worden vergeleken op dezelfde definities voor kosten, klikken, impressies, conversies en omzet.
Dagelijks heldere inzichten in Power BI.
De business krijgt elke dag tastbare inzichten in e-commerce performance, kanaalbijdrage, pricing, assortiment en marketingresultaten. Rapportages leunen op stabiele dbt-modellen in plaats van op losse exports of handmatige berekeningen.
Fundament voor Marketing Mix Modelling en geavanceerde analyses.
Omdat performance-data, advertentiekosten, e-commercegedrag en productcontext centraal beschikbaar zijn, ontstaat een basis voor meer geavanceerde toepassingen zoals Marketing Mix Modelling, attributie-analyse, forecasting en commerciële optimalisatie.
Engineeringbeslissingen die ertoe doen
- Alles als code. Cloudresources worden beheerd met Terraform, waardoor infrastructuur reproduceerbaar en reviewbaar is.
- Serverless extractie. Cloud Functions draaien alleen wanneer nodig. Geen servers, geen idle compute.
- Secrets buiten de code. Credentials worden beheerd via Secret Manager en alleen runtime beschikbaar gemaakt.
- dbt als centrale businesslaag. Definities zoals omzet, marge, kanaal, prijspositie en campagneperformance zitten in SQL-modellen, niet verspreid over Power BI.
- Incrementele BigQuery-modellen. Dagpartities worden slim opnieuw verwerkt, waardoor het platform schaalbaar blijft.
- Van silo's naar geïntegreerde modellen. Productdata, GA4, pricing en advertising worden niet los gerapporteerd, maar met elkaar verbonden in één analytisch fundament.
Resultaat
Het project leverde een productiegericht datafundament op voor retail analytics:
- declaratieve cloud-infrastructuur met Terraform;
- dagelijkse serverless dataloads naar BigQuery;
- veilige credentialafhandeling via Secret Manager;
- opgeschoonde en geteste GA4-modellen;
- geïntegreerde advertisingmodellen over meerdere platformen;
- pricingmodellen voor concurrentieanalyse;
- rapportageklare datasets voor Power BI;
- basis voor geavanceerde toepassingen zoals Marketing Mix Modelling.
Het platform maakt dagelijkse sturing mogelijk op assortiment, marketingperformance, e-commercegedrag en prijspositie vanuit één betrouwbare datalaag.
Status
Het platform vormt de basis voor dagelijkse rapportage en verdere doorontwikkeling van het retail datawarehouse. De combinatie van Terraform, BigQuery, dbt en Power BI maakt het schaalbaar, onderhoudbaar en geschikt voor toekomstige analytics use cases.