Skip to content

LoreB1998/SQL_Data_Warehouse_Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

24 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SQL Data Warehouse & Analytics Project: Medallion Architecture con PostgreSQL

PostgreSQL SQL Data Engineering Medallion Architecture Analytics

Questo progetto presenta una soluzione end-to-end di Data Warehousing e Analytics, implementando un'architettura Medallion per trasformare dati grezzi di vendita (ERP + CRM) in insight strategici. Include:

  • βœ… Data Warehouse moderno a 3 layer (Bronze β†’ Silver β†’ Gold)
  • βœ… Star Schema ottimizzato per reporting e BI
  • βœ… 11 query analitiche (5 exploration + 6 advanced patterns)

Sviluppato seguendo le best practice del settore per data engineering, modellazione dati, e analytics.


πŸ“‘ Indice dei Contenuti

🎯 Obiettivi del Progetto

Sviluppare un Data Warehouse moderno utilizzando PostgreSQL per consolidare i dati di vendita, permettendo una reportistica avanzata e decisioni basate sui dati.

Ingegneria dei Dati (Data Engineering)

  • Sorgenti Dati: Integrazione di dati da due sistemi distinti (ERP e CRM) forniti in formato CSV.
  • QualitΓ  del Dato: Pulizia e standardizzazione dei dati (Data Cleansing) per risolvere anomalie prima dell'analisi.
  • Integrazione: Unione delle sorgenti in un unico modello dati (Star Schema) ottimizzato per le query analitiche.
  • Documentation: Creazione di un Data Catalog e diagrammi di flusso per supportare stakeholder e team analytics.

Analytics & BI

Fornire insight dettagliati su:

  • Comportamento dei Clienti (Customer Behavior)
  • Performance dei Prodotti (Product Performance)
  • Trend delle Vendite (Sales Trends)

πŸ“Š Analytics & Data Analysis

Oltre al Data Warehouse, il progetto include 11 query analitiche organizzate in due categorie:

πŸ” Exploration Data Analysis (5 query)

Query introduttive per scoprire e validare i dati:

  • Metadati strutturali e oggetti del DWH
  • Distribuzione e qualitΓ  delle dimensioni
  • Metriche quantitative e loro distribuzione
  • CardinalitΓ  e scale dei dati
  • Ranking e concentrazione

πŸ‘‰ Ideale per: Onboarding, validazione post-load, audit di qualitΓ 

πŸš€ Advanced Queries (6 query)

Pattern analitici complessi per rispondere a domande strategiche:

  • Time Series & Trends (evoluzione temporale)
  • Cumulative Analysis (Running totals, YTD metrics)
  • Performance Comparative (benchmarking tra periodi)
  • Part-to-Whole Analysis (contribuzione, mix prodotti)
  • Data Segmentation (cohort, customer profiling)
  • Executive Dashboard Metrics (KPI aggregati)

πŸ‘‰ Ideale per: Reportistica, Strategic insights, Decision support

πŸ“– Per i dettagli su tutte le analisi, vedi ANALYTICS.md


πŸ—οΈ Architettura del Progetto (Medallion)

Il progetto Γ¨ suddiviso in tre layer logici per garantire tracciabilitΓ  e qualitΓ :

Architecture Overview

  1. πŸ₯‰ Bronze Layer: Dati grezzi importati "as-is" dai sistemi sorgente (ERP/CRM). Obiettivo: TracciabilitΓ  e Debugging.
  2. πŸ₯ˆ Silver Layer: Dati puliti, standardizzati e normalizzati. In questa fase vengono gestite le colonne derivate e l'arricchimento dei dati.
  3. πŸ₯‡ Gold Layer: Dati "Business-Ready" pronti per il consumo. Utilizzo di Star Schema (Fact e Dimension tables) e viste aggregate.

Dettaglio dei Layer

Data Layers - Part 1

Data Layers - Part 2


πŸ”— Integrazione delle Sorgenti Dati

Data Integration Model


⭐ Star Schema (Gold Layer)

Star Schema


πŸ› οΈ Tech Stack

  • Database: PostgreSQL (gestito tramite DataGrip)
  • Linguaggio: SQL (PL/pgSQL per le Stored Procedure)
  • Documentazione: Draw.io (Diagrammi di Flusso e ERD)
  • Version Control: Git / GitHub

πŸ“ Regole di Nomenclatura & Best Practices

Per garantire la manutenibilitΓ , il progetto segue regole rigorose:

  • Layer Bronze/Silver: Le tabelle mantengono il nome originale preceduto dal sistema sorgente (es. crm_customer_info).
  • Layer Gold: Utilizzo di nomi parlanti con prefissi dim_ (Dimensioni), fact_ (Fatti) e agg_ (Aggregati).
  • Chiavi Surrogate: Tutte le tabelle dimensionali utilizzano chiavi primarie con suffisso _key (es. customer_key).
  • Colonne Tecniche: Ogni record include metadati di sistema con prefisso dwh_ (es. dwh_load_date) per il monitoraggio del carico.

πŸš€ Workflow di Sviluppo

Il ciclo di vita di ogni layer segue questo flusso:

Data Flow

  1. Analysis: Analisi dei sistemi sorgente e degli oggetti di business.
  2. Coding: Sviluppo delle procedure di carico (load_bronze, load_silver, load_gold).
  3. Validation: Check di completezza, schema e correttezza dei dati.
  4. Versioning: Documentazione e commit del codice su repository Git.

βš™οΈ Quick Start – Come Iniziare

Prerequisiti

  • βœ… PostgreSQL 12+ installato e in esecuzione
  • βœ… Client SQL: DataGrip, pgAdmin, psql, o DBeaver
  • βœ… 50 MB di spazio disco per i dati di esempio

Opzione 1️⃣: Build Completo (DW + Analisi)

Tempo stimato: 10-15 minuti
Per chi vuole: Esperienza end-to-end

# 1. Crea il database
psql -U postgres -f scripts/setup/01_creation_database_and_schemas.sql

# 2. Carica il Bronze Layer
psql -U postgres -d warehouse -f scripts/bronze/02_ddl_bronze.sql
psql -U postgres -d warehouse -f scripts/bronze/03_proc_load_bronze.sql

# 3. Carica il Silver Layer
psql -U postgres -d warehouse -f scripts/silver/04_ddl_silver.sql
psql -U postgres -d warehouse -f scripts/silver/05_check_bronze_before_silver_load.sql
psql -U postgres -d warehouse -f scripts/silver/06_proc_load_silver.sql

# 4. Carica il Gold Layer
psql -U postgres -d warehouse -f scripts/gold/08_ddl_gold.sql

# 5. Esplora le analisi
psql -U postgres -d warehouse -f analysis/exploration_data_analysis/01_exploration_meta.sql

Opzione 2️⃣: Solo Data Warehouse

Tempo stimato: 5-10 minuti
Per chi vuole: Solo architettura DW

Esegui solo i passaggi 1-4 dell'Opzione 1

Opzione 3️⃣: Solo Analisi (su DWH esistente)

Tempo stimato: 1-2 minuti
Per chi vuole: Esplorare le 11 query analitiche

Esegui i file da analysis/exploration_data_analysis/*.sql e analysis/advanced_queries/*.sql

πŸ“– Per dettagli completi ed esempi, vedi ANALYTICS.md


πŸ“‚ Project Structure

πŸ“ SQL_Data_Warehouse_Project/
β”œβ”€β”€ πŸ“„ README.md                          ← Questo file
β”œβ”€β”€ πŸ“„ ANALYTICS.md                       ← Guida completa alle 11 query analitiche
β”œβ”€β”€ πŸ“„ LICENSE
β”œβ”€β”€ πŸ“„ docs/
β”‚   β”œβ”€β”€ data_catalog.md                   ← Dizionario dati (Gold Layer)
β”‚   └── naming_conventions.md             ← Regole di nomenclatura
β”œβ”€β”€ πŸ“ scripts/                           ← SQL per costruire il DW
β”‚   β”œβ”€β”€ setup/01_creation_database_and_schemas.sql
β”‚   β”œβ”€β”€ bronze/                           ← Raw data as-is
β”‚   β”‚   β”œβ”€β”€ 02_ddl_bronze.sql
β”‚   β”‚   └── 03_proc_load_bronze.sql
β”‚   β”œβ”€β”€ silver/                           ← Cleaned & standardized data
β”‚   β”‚   β”œβ”€β”€ 04_ddl_silver.sql
β”‚   β”‚   β”œβ”€β”€ 05_check_bronze_before_silver_load.sql
β”‚   β”‚   └── 06_proc_load_silver.sql
β”‚   └── gold/                             ← Business-ready analytics data
β”‚       β”œβ”€β”€ 07_gold_transformation_testing.sql
β”‚       └── 08_ddl_gold.sql
β”œβ”€β”€ πŸ“ analysis/                          ← 11 query analitiche
β”‚   β”œβ”€β”€ exploration_data_analysis/        ← Discovery & validation (5 query)
β”‚   β”‚   β”œβ”€β”€ 01_exploration_meta.sql
β”‚   β”‚   β”œβ”€β”€ 02_exploration_dimensions.sql
β”‚   β”‚   β”œβ”€β”€ 03_exploration_measures.sql
β”‚   β”‚   β”œβ”€β”€ 04_exploration_magnitude_analysis.sql
β”‚   β”‚   └── 05_exploration_ranking_analysis.sql
β”‚   └── advanced_queries/                 ← Strategic analysis (6 query)
β”‚       β”œβ”€β”€ 01_change_over_time.sql
β”‚       β”œβ”€β”€ 02_cumulative_analysis.sql
β”‚       β”œβ”€β”€ 03_performance_analysis.sql
β”‚       β”œβ”€β”€ 04_part_to_whole.sql
β”‚       β”œβ”€β”€ 05_data_segmentation.sql
β”‚       └── 06_reporting.sql
β”œβ”€β”€ πŸ“ datasets/                          ← Sample data (ERP + CRM)
β”‚   β”œβ”€β”€ source_crm/
β”‚   β”‚   β”œβ”€β”€ cust_info.csv
β”‚   β”‚   β”œβ”€β”€ prd_info.csv
β”‚   β”‚   └── sales_details.csv
β”‚   └── source_erp/
β”‚       β”œβ”€β”€ CUST_AZ12.csv
β”‚       β”œβ”€β”€ LOC_A101.csv
β”‚       └── PX_CAT_G1V2.csv
β”œβ”€β”€ πŸ“ assets/                            ← Diagrammi (Draw.io)
β”‚   β”œβ”€β”€ architecture.drawio
β”‚   β”œβ”€β”€ data_layers_1.svg
β”‚   β”œβ”€β”€ data_layers_2.svg
β”‚   β”œβ”€β”€ data_integration_model.svg
β”‚   β”œβ”€β”€ data_flow.svg
β”‚   └── star_schema.svg
└── πŸ“„ README.md

πŸ—‚οΈ Descrizione Cartelle

Cartella Contenuto Quando usare
scripts/setup Creazione database e schema 1ΒΊ step, una volta
scripts/bronze DDL e Stored Procedure per Raw Data 2ΒΊ step
scripts/silver Trasformazioni e Data Cleansing 3ΒΊ step
scripts/gold Star Schema e viste per BI/Analytics 4ΒΊ step
analysis/exploration_data_analysis 5 query per scoprire i dati Dopo caricamento, per validare
analysis/advanced_queries 6 query pattern analitici Per reporting e strategic insights
docs Data Catalog e Naming Conventions Sempre, come riferimento
datasets Sample CSV da ERP e CRM Per load iniziale
assets Diagrammi di architettura Per capire il design


πŸ“ Roadmap di Sviluppo

Questo progetto Γ¨ stato sviluppato in 4 fasi principali:

  1. Phase 1: Data Engineering Fundamentals (Bronze + Silver)

    • Ingestion da CSV (ERP + CRM)
    • Data Cleansing e standardizzazione
    • Validation checks
  2. Phase 2: Dimensional Modeling (Gold Layer)

    • Star Schema design
    • Fact e Dimension tables
    • Business-ready metrics
  3. Phase 3: Exploratory Analysis (Exploration Data Analysis)

    • Metadati e struttura
    • Data quality checks
    • Discovery queries
  4. Phase 4: Strategic Analytics (Advanced Queries)

    • Time series e trends
    • Performance analysis
    • Customer segmentation
    • Executive reporting

🎯 Possibili Estensioni Future

  • Incrementale load (CDC - Change Data Capture)
  • Dati in tempo reale (Streaming)
  • Predictive analytics e ML
  • Dashboard interattivo (Tableau, Power BI, Looker)
  • Data quality monitoring (Great Expectations, dbt tests)
  • Multi-tenancy support

πŸ“š Documentazione Completa

Documento Scopo
πŸ“– ANALYTICS.md Guida completa alle 11 query analitiche
πŸ“– Data Catalog Dizionario dati e metriche del Gold Layer
πŸ“– Naming Conventions Regole di nomenclatura per DB, tabelle, colonne
🎨 assets/architecture.drawio Diagramma architettuale (modificabile)

✨ Highlights del Progetto

βœ… Architettura Medallion completa – 3 layer con tracciabilitΓ  e audit trail
βœ… 11 query analitiche – Exploration + Advanced patterns
βœ… Star Schema ottimizzato – Pronto per BI e reporting
βœ… Best practices – Naming conventions, documentation, version control βœ… Fully documented – Data Catalog, flowchart, guide passo-passo


πŸ’Ό Competenze Dimostrate

  • Data Warehouse Architecture – Medallion pattern a 3 layer, tracciabilitΓ  end-to-end, audit trail completo
  • Dimensional Modeling – Star Schema design, Fact & Dimension tables, schema optimization
  • SQL Avanzato – Window functions, CTEs, stored procedures, aggregazioni complesse, performance tuning
  • ETL/ELT Orchestration – Data ingestion da CSV, cleansing, transformation pipeline, validation framework
  • Data Quality & Governance – Data profiling, quality validation, lineage tracking, documentation rigorous
  • Analytics & Reporting – Time series analysis, performance benchmarking, customer segmentation, KPI metrics
  • Software Engineering – Version control, code organization, comprehensive documentation, naming conventions
  • Database Design – Schema optimization, constraint design, indexing strategy, query optimization

Progetto realizzato da Lorenzo Barbato – Marzo 2026

About

An end-to-end SQL Data Warehouse project implementing the Medallion Architecture (Bronze, Silver, Gold) to integrate CRM & ERP data for advanced analytics.

Topics

Resources

License

Stars

Watchers

Forks

Contributors