Skip to content

Runar-Olsen/customer-stream-pipeline

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

⚡ Customer Event Streaming Pipeline (Python • Bronze/Silver/Gold • Data Engineering)

Dette prosjektet simulerer en real-time datapipeline slik man ser i moderne data engineering-miljøer — men i et format som er lett å kjøre lokalt uten Spark, Hadoop eller Kafka.

Prosjektet viser hvordan event streaming, data ingestion, og bronze–silver–gold-arkitektur kan implementeres i ren Python ved hjelp av JSON-mikrobatcher og Parquet-output.


🚀 Funksjonalitet

Dette prosjektet demonstrerer:

🟦 1. Real-time datagenerering

Python-script genererer løpende eventer (logins, purchases, cancellations osv.).
Disse skrives som JSON microbatches i data/raw_events/.

🟫 2. Streaming ingestion → Bronze layer

Et eget streaming-script overvåker raw_events/, plukker opp nye filer automatisk og skriver dem om til Parquet i data/bronze/.

Bronze-laget inneholder rå, ubehandlet eventhistorikk — akkurat som i moderne lakehouse-arkitektur.

🟪 3. Silver layer (rensing & normalisering)

Et batch-script:

  • Slår sammen alle bronse-filer
  • Parser tidsstempler
  • Fyller inn manglende kolonner
  • Rydder datatyper
  • Legger på event_date for enklere BI-grupperinger

Dette produserer silver/events_silver.parquet og .csv.

🟧 4. Gold layer (aggregater for analyse)

Samme script genererer ferdige analysetabeller:

  • daily_events_by_type.csv
  • daily_revenue_by_product.csv
  • customer_activity_pivot.csv

Disse er perfekte for Power BI eller dashboards.


🗂 Prosjektstruktur

customer-stream-pipeline/
│
├── data/
│ ├── raw_events/ ← live JSON microbatches (stream)
│ ├── bronze/ ← rådata i Parquet
│ ├── silver/ ← renset eventtabell
│ └── gold/ ← aggregerte analyser
│
├── src/
│ ├── generate_events.py ← simulerer live event stream
│ ├── stream_to_bronze.py ← “streaming” ingestion → bronze
│ └── build_silver_gold.py ← batch-transformasjoner
│
├── .gitignore
├── requirements.txt
└── README.md

▶️ Hvordan kjøre prosjektet

1️⃣ Installer dependencies

pip install -r requirements.txt

2️⃣ Start event-generatoren

Terminal 1:

python -m src.generate_events

Dette genererer kontinuerlig filer som:

data/raw_events/events_2025xxxx.json

3️⃣ Start streaming ingestion (bronze)

Terminal 2:

python -m src.stream_to_bronze

Du vil se:

Watching folder: data/raw_events
Writing bronze files to: data/bronze
Found 1 new file...

4️⃣ Når du har nok data – bygg Silver & Gold

Stopp begge med ctrl + C først.

Kjør deretter:

python -m src.build_silver_gold

Output:

  • data/silver/events_silver.csv
  • data/gold/daily_events_by_type.csv
  • data/gold/daily_revenue_by_product.csv
  • data/gold/customer_activity_pivot.csv

📊 Analyse i Power BI / Excel / Pandas

Du kan importere Gold-filene direkte inn i Power BI eller Excel for å lage:

Eksempelvisualiseringer:

  • Event-aktivitet over tid
  • Kjøp per produkt
  • Mest aktive kunder
  • Kanalbruk (mobile/web/kiosk)
  • "Funnel" mellom event-typer

Gull-tabellene er formet for BI:

event_date event_type event_count
2025-11-20 login 128
2025-11-20 purchase 32

🧱 Bronze/Silver/Gold-arkitektur (forklart)

Bronze: Rådata akkurat som de kommer inn - ingen filtrering.

Silver: Renset, konsistent eventtabell klar for analysemodeller.

Gold: Aggregater klar for dashboards, rapportering og ML-features.

Dette er standard i moderne plattformer (Databricks, Snowflake, Lakehouse).


🧪 Eksempel-eventer

Et event genereres slik:

{
  "event_time": "2025-11-20T14:46:51.388Z",
  "customer_id": 482,
  "product": "TV",
  "event_type": "purchase",
  "amount": 199.0,
  "channel": "web"
}

🔧 Teknologi brukt

  • Python
  • Pandas
  • PyArrow / Parquet
  • Asynkron "streaming" via fil-polling
  • Moderne Lakehouse-konsepter
  • Klar for utvidelse med Spark/Kafka/Airflow

🚀 Videre arbeid (forslag)

  • Legge til Silver → Gold planlegger (Airflow/Prefect)
  • Kjøre ingestion via Kafka og consumer via Spark Structured Streaming
  • Bygge full mlops-style feature store
  • Integrere prosjektet i Power BI for end-to-end demo

✨ Forfatter

Runar Olsen

Data Engineer • Data Analyst • Python • Machine Learning

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages