A complete SQL data warehouse project built in PostgreSQL using a simple Medallion architecture:
- Bronze: raw CSV ingestion
- Silver: cleaned and standardized data
- Gold: analytics-ready star schema views
This repository is designed as a portfolio project by Rameez Shafat to demonstrate practical data engineering fundamentals with readable SQL and minimal complexity.
The warehouse is organized into three schemas:
- bronze: raw source data loaded from CSV files
- silver: cleaned and transformed data
- gold: dimensional views for reporting
- PostgreSQL
- SQL (DDL, DML, Views, Procedures)
- CSV source files
postgres-medallion-data-warehouse/
├── datasets/
│ ├── source_crm/
│ └── source_erp/
├── scripts/
│ ├── init_database.sql
│ ├── bronze/
│ │ ├── ddl_bronze.sql
│ │ └── proc_load_bronze.sql
│ ├── silver/
│ │ ├── ddl_silver.sql
│ │ └── proc_load_silver.sql
│ └── gold/
│ └── ddl_gold.sql
├── tests/
│ ├── quality_checks_silver.sql
│ └── quality_checks_gold.sql
└── README.md
Run scripts in this order in PostgreSQL:
scripts/init_database.sqlscripts/bronze/ddl_bronze.sqlscripts/silver/ddl_silver.sqlscripts/gold/ddl_gold.sqlscripts/bronze/proc_load_bronze.sqlscripts/silver/proc_load_silver.sql
Then execute:
CALL bronze.load_bronze('/absolute/path/to/postgres-medallion-data-warehouse');
CALL silver.load_silver();Run these validation scripts after loading data:
tests/quality_checks_silver.sqltests/quality_checks_gold.sql
- Schema-based Medallion layering in PostgreSQL
- Repeatable CSV ingestion workflow
- Simple, maintainable SQL transformations
- Star-schema style reporting layer
- SQL-based quality checks
Rameez Shafat
If you want collaboration or feedback on this project, open an issue in this repository.
Licensed under the MIT License. See LICENSE for details.