[EN]
Region: europe-west4 [v2.1.0] | status: online!
// projects / retail_platform.tf

Retail-assortiment & commerce dataplatform

type: end-to-end platform · status: production · year: 2024
TL;DR
Een retailer had één betrouwbaar fundament nodig voor commerce- en assortimentsrapportage. Productfeeds, GA4-events, advertentiekosten, pricing en SEO-data landen nu in BigQuery — infrastructuur gedeclareerd in Terraform, extractie serverless via Cloud Functions + Scheduler, en dbt modelleert de businesslogica naar geteste, herbruikbare, rapportageklare tabellen. Een schaalbare basis voor Power BI en toekomstige Marketing Mix Modelling.
Infrastructure
TerraformCloud Functions Gen 2Cloud SchedulerSecret ManagerGCS
Data
BigQuerydbt CloudGA4 ExportGoogle AdsMeta AdsPower BI
Language
Python

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:

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:

BronGebruik
Commerceplatform productfeedProductinformatie, categorieën, prijzen en beschikbaarheid
Pricing APIEigen prijzen en concurrentieprijzen
GA4 BigQuery ExportEvents, sessies, transacties en e-commercegedrag
Google Ads, Meta Ads, CriteoCampagnekosten, klikken, impressies, conversies en omzet
SEO / Search ConsoleOrganische 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

  1. Alles als code. Cloudresources worden beheerd met Terraform, waardoor infrastructuur reproduceerbaar en reviewbaar is.
  2. Serverless extractie. Cloud Functions draaien alleen wanneer nodig. Geen servers, geen idle compute.
  3. Secrets buiten de code. Credentials worden beheerd via Secret Manager en alleen runtime beschikbaar gemaakt.
  4. dbt als centrale businesslaag. Definities zoals omzet, marge, kanaal, prijspositie en campagneperformance zitten in SQL-modellen, niet verspreid over Power BI.
  5. Incrementele BigQuery-modellen. Dagpartities worden slim opnieuw verwerkt, waardoor het platform schaalbaar blijft.
  6. 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:

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.