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.
Dette prosjektet demonstrerer:
Python-script genererer løpende eventer (logins, purchases, cancellations osv.).
Disse skrives som JSON microbatches i data/raw_events/.
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.
Et batch-script:
- Slår sammen alle bronse-filer
- Parser tidsstempler
- Fyller inn manglende kolonner
- Rydder datatyper
- Legger på
event_datefor enklere BI-grupperinger
Dette produserer silver/events_silver.parquet og .csv.
Samme script genererer ferdige analysetabeller:
daily_events_by_type.csvdaily_revenue_by_product.csvcustomer_activity_pivot.csv
Disse er perfekte for Power BI eller dashboards.
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
pip install -r requirements.txtTerminal 1:
python -m src.generate_eventsDette genererer kontinuerlig filer som:
data/raw_events/events_2025xxxx.jsonTerminal 2:
python -m src.stream_to_bronzeDu vil se:
Watching folder: data/raw_events
Writing bronze files to: data/bronze
Found 1 new file...Stopp begge med ctrl + C først.
Kjør deretter:
python -m src.build_silver_goldOutput:
- 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
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: 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).
Et event genereres slik:
- Python
- Pandas
- PyArrow / Parquet
- Asynkron "streaming" via fil-polling
- Moderne Lakehouse-konsepter
- Klar for utvidelse med Spark/Kafka/Airflow
- 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
Data Engineer • Data Analyst • Python • Machine Learning
{ "event_time": "2025-11-20T14:46:51.388Z", "customer_id": 482, "product": "TV", "event_type": "purchase", "amount": 199.0, "channel": "web" }