Project 04 · Warehouse and Reporting

Turn raw data into trusted reports.

Clean business records, build a tested model and create repeatable reports.

The business question
Profile raw CRM/sales records, build Silver and Gold tables in the disposable lab, explore the fact table, and publish repeatable reporting logic.
What you’ll deliver
Clean dimensions and facts, quality checks and customer, product and monthly reports.
Skills
Data cleaning · Data modeling · Reporting
Scope
Advanced level · 6 milestones · 6 tables

Fictional CRM/catalog/sales extracts and curated star-schema tables. Raw keys, dates, quantities, and sales need validation. One fact row is one sales line.

bronze_customers
  • raw_idtext
  • nametext
  • countrytext
  • updated_attext
#raw_idnamecountryupdated_at
1 C001 Alice USA2025-01-01
2C001 Alice Nguyen US2025-01-05
3C002BenGB2025-01-02
4C003 Cara UK2025-01-03
5C004DevIND2025-01-04
bronze_products
  • raw_idtext
  • nametext
  • categorytext
  • pricetext
#raw_idnamecategoryprice
1P01 Notebook Stationery12
2 P02 Desk lampHome45
3P03KeyboardTech80
4P04HeadphonesTech120
bronze_sales
  • row_idintegerPK
  • customer_idtext
  • product_idtext
  • quantitytext
  • salestext
  • order_datetext
#row_idcustomer_idproduct_idquantitysalesorder_date
11C001P012242025-01-01
22 C002 P031802025-01-02
33C001P021452025-01-15
44C003P0422402025-02-01
55C004P0321602025-02-05
dim_customer
  • customer_keyintegerPK
  • customer_idtext
  • nametext
  • countrytext
#customer_keycustomer_idnamecountry
11C001Alice NguyenUnited States
22C002BenUnited Kingdom
33C003CaraUnited Kingdom
44C004DevIndia
55C005ElenaCanada
dim_product
  • product_keyintegerPK
  • product_idtext
  • nametext
  • categorytext
  • pricereal
#product_keyproduct_idnamecategoryprice
11P01NotebookStationery12
22P02Desk lampHome45
33P03KeyboardTech80
44P04HeadphonesTech120
fact_sales
  • sale_keyintegerPK
  • customer_keyinteger
  • product_keyinteger
  • quantityinteger
  • salesreal
  • order_datetext
#sale_keycustomer_keyproduct_keyquantitysalesorder_date
11112242025-01-01
22231802025-01-02
33121452025-01-15
443422402025-02-01
554321602025-02-05
Start

Silver — clean and deduplicate

This project follows the standard layers: understand source data → load raw records (Bronze) → clean and validate (Silver) → build reporting tables (Gold) → produce reports.

sources

Source contract

Structured fictional CRM, ERP and sales extracts. The foundation keeps latest state. Confirm source ownership, extraction counts, key formats, grain and refresh expectations before choosing architecture.

bronze

Bronze · preserve evidence

Raw source-shaped records retain spaces, sentinels, duplicates and malformed values. Compare extraction counts, inspect column alignment, and retain source row identity for replay and diagnosis.

silver

Silver · standardize with explicit rules

Latest CRM row wins with a deterministic source_row tie-breaker. Normalize ERP keys under its format contract. Validate calendar dates, quarantine failures and reconcile every source row.

gold

Gold · integrate business entities

CRM owns meaningful gender; ERP supplies fallback and country. Stable dimension keys link each validated sales line. Choose current-state or effective-time semantics before reporting. Views or stored tables are workload choices.

report

Reports · declare the metric

Customer totals use one row per customer and preserve zero-activity entities. Northstar sales means positive quantity × catalog price under a stated teaching rule, not an automatic accounting correction.

Runtime — Learn it. Run it. Understand it.