This project implements an end-to-end Lakehouse data pipeline using the Bronze → Silver → Gold architecture.
Raw data from multiple CRM and ERP sources is ingested, cleaned, standardized, and transformed into analytics-ready dimension and fact tables.
The pipeline is built using Spark Declarative Pipelines (SDP) in Databricks and is implemented in both PySpark and SQL, demonstrating semantic equivalence and strong data engineering fundamentals.
Purpose:
Capture raw data exactly as received from source systems.
Key Characteristics:
- Ingests CSV files from CRM and ERP systems
- No business logic applied
- Schema inferred at ingestion
- One table per source
Tables:
bronze_crm_customersbronze_crm_productsbronze_crm_salesbronze_erp_customer_detailsbronze_erp_customer_locationbronze_erp_product_details
Purpose:
Clean, validate, and standardize data while preserving business correctness.
Key Transformations:
- Deterministic deduplication using window functions
- Data quality corrections (invalid dates, incorrect sales values)
- Standardized codes (gender, marital status, country, product line)
- Type casting and normalization
- Harmonization between CRM and ERP sources
Tables:
silver_crm_customerssilver_crm_productssilver_crm_salessilver_erp_customer_detailssilver_erp_customer_location
Purpose:
Provide analytics-ready data optimized for reporting and BI tools.
gold_dim_customersgold_dim_products
gold_fact_sales
Modeling Approach:
- Star schema
- Surrogate keys generated using window functions
- Business keys preserved in dimensions
- Clear grain and join paths
- CRM treated as primary source, ERP as enrichment
- Databricks
- Spark Declarative Pipelines (SDP)
- PySpark
- Spark SQL
- Delta Lake
- GitHub (version control)
- End-to-end Bronze → Silver → Gold pipeline
- Deterministic transformations (no random deduplication)
- Business-rule driven data corrections
- Proper dimensional modeling (fact & dimensions)
- Both PySpark and SQL implementations
- Production-style lakehouse design