A business with customer data spread across transactional systems (CRM, orders, support tickets) can't reliably join or aggregate it for analytics, data arrives in different formats, updates conflict, and there's no single source of truth for what a "customer" actually is.
Analysts and product managers need to segment customers high-value, churn-risk, and track metrics, churn rate, feature adoption over time. They need a query-able, deduplicated, historically accurate customer dimension that they can join against transaction tables without second-guessing the data.
This ELT pipeline lands raw customer records in a Bronze layer, deduplicates and enriches them in Silver enforcing a single customer identity, and exposes clean historical tables in Gold for analytics. Snowflake's native data sharing and time-travel tables mean the whole process stays inside one platform, no ETL orchestrator or external tooling overhead which is a practical fit for a small analytics team.
π Don't forget to check out my '/docs' folder in this repository which briefly goes over deep points on why I chose this design architecture, also it's my own learning resource/notes to help me too!
This project demonstrates an end-to-end data engineering pipeline using Snowflake, implementing a medallion architecture (Bronze, Silver, Gold) and a dimensional star schema model for analytics.
The pipeline includes data ingestion, transformation, modelling, and data quality layers designed to simulate a real-world data warehouse environment.
flowchart TD
A[External Source <br>AWS S3<br/>customers.csv] -->|Extract| B[Bronze Layer<br/>Raw ingestion table<br/>CUSTOMERS_RAW]
B -->|Load| C[Silver Layer<br/>Cleaned & validated<br/>CUSTOMERS_CLEAN]
C -->|Transform| D[Gold Layer<br/>Star Schema Model]
D --> D1[DIM_CUSTOMERS]
D --> D2[DIM_PRODUCTS]
D --> D3[DIM_DATE]
D --> D4[FACT_ORDERS]
D --> E[Data ready for BI / Analytics Layer<br/>Dashboards & KPIs]
ELT FLOW
E = Extract
Extract raw CSV data from AWS S3
L = Load
Load raw data directly into Snowflake Bronze layer
T = Transform
Transform data inside Snowflake:
- Cleaning
- null checks on keys, duplicate detection, type/format checking
- MERGE logic
- Star schema modelling
- Aggregations
ELT PIPELINE
βββ Bronze (raw ingestion)
βββ Silver (cleaning + data checks)
βββ Gold (star schema model)
βββ Production Layer
βββ Logging
βββ Monitoring
βββ Alerts (conceptual)
βββ Retry strategy
- Snowflake (Data Warehouse)
- SQL (Transformation & Modelling)
- S3 (Data Source)
- Medallion Architecture (Bronze/Silver/Gold)
- Star Schema Data Modelling
- Data ingested into Bronze layer (raw data)
- Cleaned and checked type/format, duplicates, and nulls in Silver layer
- Transformed into Gold layer (fact + dimension tables)
- Analytical models created for reporting
- DIM_CUSTOMERS
- DIM_PRODUCTS
- DIM_DATE
- FACT_ORDERS
- Medallion architecture implementation
- Star schema design
- Incremental processing logic
- Data quality checks
- Business-ready analytical models
- Execute scripts in /sql folder in order
- Load sample data into Snowflake
- Run Bronze β Silver β Gold pipeline
- Query Gold layer for analytics
- Data modelling using star schema
- ELT pipeline design in Snowflake
- Data quality techniques
- Incremental data processing concepts