Skip to content

Latest commit

 

History

History
130 lines (102 loc) · 3.56 KB

File metadata and controls

130 lines (102 loc) · 3.56 KB

RIEPILOGO ESECUZIONE PIPELINE ETL

Esecuzione Completata con Successo ✓

Dati Processati

  • File CSV letti: 3 file (consumazioni_202501.csv, consumazioni_202502.csv, consumazioni_202503.csv)
  • Righe totali iniziali: 275,170
  • Righe dopo pulizia e filtri: 274,129 (1,041 righe filtrate per STATUS != 'A')
  • Colonne finali: 6 (da 38 originali)

Statistiche Database

Distribuzione per Presidio

  • URBINO: 104,158 consumazioni (38%)
  • ANCONA: 81,435 consumazioni (30%)
  • MACERATA: 45,905 consumazioni (17%)
  • CAMERINO: 42,293 consumazioni (15%)
  • NAN: 338 consumazioni (0.1%)

Distribuzione Temporale

  • Gennaio 2025: 77,733 consumazioni
  • Febbraio 2025: 89,802 consumazioni
  • Marzo 2025: 103,017 consumazioni
  • Aprile 2025: 3,574 consumazioni
  • Altri mesi: 3 consumazioni

Statistiche Prezzi

  • Prezzo minimo: €0.00
  • Prezzo massimo: €50.00 (232 valori cappati)
  • Prezzo medio: €0.54
  • Pasti gratuiti: 250,415 (91.4%)

Operazioni di Pulizia Eseguite

  1. Gestione Encoding

    • Tutti i file richiedevano encoding 'latin-1' invece di UTF-8
    • Gestione automatica del fallback completata con successo
  2. Gestione Valori Nulli

    • PRESIDIO: 338 valori nulli conservati come 'NAN'
    • ACQUISTO: 1 valore nullo
    • PREZZO_TOTALE: valori nulli sostituiti con 0.0
  3. Correzione Valori Fuori Range

    • 232 prezzi > €50.00 cappati al massimo
    • Nessun prezzo negativo rilevato
  4. Filtri Applicati

    • 1,041 righe con STATUS != 'A' rimosse
    • Solo consumazioni attive mantenute
  5. Trasformazioni

    • Aggiunto campo calcolato mese_rif estratto dalla data
    • Normalizzazione stringhe (uppercase, trim)
    • Conversione tipi dati (datetime, numeric)

Test Unitari

  • Totale test: 15
  • Test passati: 15 ✓
  • Test falliti: 0
  • Copertura: Extractor, Cleaner, Loader

File Generati

  • consumazioni.db: Database SQLite con tabella consumazioni_cleaned
  • Dimensione database: ~60 MB
  • Schema: 6 colonne con indici su data_consumazione, presidio, mese_rif

Tempo di Esecuzione

  • Fase Extract: ~5 secondi
  • Fase Transform: ~3 secondi
  • Fase Load: ~28 secondi
  • Totale: ~36 secondi per 274,129 righe

Performance

  • Throughput: ~7,600 righe/secondo
  • Memory usage: Ottimale con chunk loading
  • Database: Caricamento batch in gruppi di 1,000 righe

Come Utilizzare i Risultati

Query Database

# Windows
sqlite3 consumazioni.db < sql/queries_example.sql

# Oppure usa Python
python query_test.py

Eseguire Nuovamente la Pipeline

# Con file CSV esistenti
python main.py

# Con export CSV
python main.py --export output_cleaned.csv

# Con logging dettagliato
python main.py --verbose

Eseguire i Test

python tests/run_tests.py

Note Tecniche

  • Python 3.12.0 con virtual environment
  • Pandas 2.x per manipolazione dati
  • SQLAlchemy 2.x per gestione database
  • Encoding gestito: UTF-8 (fallback latin-1)
  • Separatore CSV: punto e virgola (;)

Conclusioni

La pipeline ETL è stata implementata con successo e ha processato correttamente tutti i file CSV di esempio. Il sistema è robusto, testato e pronto per essere utilizzato in produzione con dati simili.

Tutte le specifiche richieste sono state implementate: ✓ Unione file CSV omogenei ✓ Gestione errori di decodifica ✓ Pulizia dati (valori nulli, fuori range, normalizzazione) ✓ Filtri applicati (STATUS='A') ✓ Campi calcolati (mese_rif) ✓ Schema finale 6 colonne con tipi diversi ✓ Caricamento in database SQL via SQLAlchemy ✓ Logging completo ✓ Test unitari ✓ Documentazione README.md ✓ Query SQL di esempio