Servizio di validazione dati con Great Expectations
Descrizione del Servizio
Questo servizio esegue la validazione automatica e personalizzata di dataset tramite la libreria Great Expectations, generando un report dettagliato in formato JSON e HTML. Permette sia di utilizzare suite di aspettative predefinite, sia di definirne di nuove, integrando automaticamente anche aspettative generate dall'analisi del dataset.
Per maggiori dettagli su Great Expectations, consulta la documentazione ufficiale: Documentazione Great Expectations
Funzionalità del Servizio
- Auto-generazione delle aspettative: Il servizio analizza il dataset per creare aspettative automatiche (es. valori non nulli, range numerici, valori distinti).
- Unione con aspettative definite dall'utente: Le aspettative automatiche vengono unite a quelle definite manualmente e a quelle contenute in eventuali suite precaricate.
- Validazione del dataset: Il dataset viene validato rispetto all'insieme di aspettative finali.
-
Esportazione dei risultati:
-
expectation_suite.json: file contenente tutte le aspettative applicate, utile per il riutilizzo su nuovi dataset.
- validation_report.json: file JSON con i risultati della validazione per ogni aspettativa.
- data_site.zip: archivio ZIP contenente una versione HTML navigabile del report.
Utilizzo del Servizio
1. Caricamento del Dataset
Il dataset viene caricato nell'applicazione BDA nel formato supportato (es. CSV). Il servizio lavora in modalità Pandas.
2. Configurazione dei Parametri
Tramite l'interfaccia utente, è possibile configurare i seguenti parametri:
- expectations_to_define: Lista opzionale di aspettative definite manualmente in formato JSON (formato Great Expectations).
Il parametro deve contenere un array di oggetti, ciascuno rappresentante una specifica aspettativa. Ogni oggetto deve avere:
- type: il nome dell'aspettativa in formato
snake_caseoppureCamelCase, es.expect_column_values_to_be_betweenoExpectColumnValuesToBeBetween - kwargs: un oggetto con i parametri richiesti dall'aspettativa, ad esempio:
[
{
"type": "expect_column_values_to_be_between",
"kwargs": {
"column": "age",
"min_value": 18,
"max_value": 99
}
},
{
"type": "expect_column_values_to_not_be_null",
"kwargs": {
"column": "email"
}
}
]
Queste aspettative, se non sono già nel formato corretto, saranno automaticamente trasformate in formato CamelCase e incluse nella suite finale insieme a quelle automatiche. Nel caso che una expectations automatica vada a sovrapporsi con una definita dall'utente viene sempre data priorità a quella manuale.
- suite_to_use: Suite di aspettative preesistente (in formato JSON) da riutilizzare. Se hai già eseguito questo servizio in precedenza, puoi semplicemente copiare il contenuto del file
expectation_suite.jsongenerato tra i media dell'application e incollarlo come valore di questo parametro. ATTENZIONE: configurando una suite preesistente non verranno generate expectations automatiche. - suite_name: Nome per la nuova suite di aspettative (default:
my_expectation_suite). - data_source_name: Nome del data source Pandas usato internamente.
- data_asset_name: Nome dell'asset a cui il dataset è associato.
- batch_def_name: Nome della definizione di batch.
- definition_name: Nome della definizione di validazione.
- site_name: Nome del sito HTML generato con i risultati della validazione.
3. Avvio del Servizio
Una volta configurata la BDA application e salvata, è possibile eseguire il run: il servizio analizzerà il dataset, genererà automaticamente una serie di aspettative sulla base dei dati, le unirà con eventuali aspettative manuali o provenienti da suite preesistenti, effettuerà la validazione e produrrà i report.
4. Output e Risultati
Il servizio produce tre output principali:
- expectation_suite.json: File con tutte le aspettative effettivamente usate per la validazione.
- validation_report.json: Risultato in formato JSON della validazione eseguita.
- data_site.zip: Archivio contenente la versione HTML navigabile del report. Attenzione: la cartella estratta dal file ZIP deve essere decompressa con una struttura di directory non troppo annidata, poiché alcuni browser potrebbero bloccare l'apertura delle pagine HTML se il percorso è troppo profondo per motivi di sicurezza.
Risultato della Validazione
Il report JSON prodotto dal servizio include, per ogni aspettativa valutata, una struttura dettagliata con i seguenti elementi:
- success: Se l'aspettativa è soddisfatta o meno.
- element_count: Numero di elementi validati.
- missing_count: Numero di valori mancanti.
- unexpected_count: Valori che non soddisfano l'aspettativa.
- unexpected_percent: Percentuale di errori rispetto al totale.
Esempio semplificato:
{
"expectation_config": {
"type": "expect_column_values_to_be_between",
"kwargs": {
"column": "anni_esperienza",
"min_value": 0,
"max_value": 40
}
},
"success": false,
"result": {
"element_count": 200,
"missing_count": 0,
"unexpected_count": 5,
"unexpected_percent": 2.5,
"unexpected_percent_nonmissing": 2.5,
"partial_unexpected_list": [-1, 45, 100],
"partial_unexpected_counts": [
{"value": -1, "count": 1},
{"value": 45, "count": 2}
]
}
}
{
"expectation_config": {
"type": "expect_column_values_to_be_between",
"kwargs": {
"column": "prezzo_unitario",
"min_value": 10.0,
"max_value": 100.0
}
},
"success": false,
"result": {
"element_count": 120,
"missing_count": 1,
"unexpected_count": 12,
"unexpected_percent": 10.0,
"unexpected_percent_nonmissing": 10.08,
"partial_unexpected_list": [5.0, 150.0, 200.0],
"partial_unexpected_counts": [
{"value": 5.0, "count": 1},
{"value": 150.0, "count": 2}
]
}
}
{
"results": [
{
"expectation_config": {
"expectation_type": "expect_column_values_to_not_be_null",
"kwargs": {"column": "name"}
},
"success": true,
"result": {
"element_count": 100,
"missing_count": 0,
"unexpected_count": 0,
"unexpected_percent": 0.0
}
}
]
}
Conclusione
Questo servizio fornisce una soluzione potente e automatizzata per la validazione dei dati nel Sistema Data Analytics, integrando l'analisi automatica con la flessibilità delle aspettative personalizzate. La generazione di report dettagliati e navigabili consente un controllo preciso sulla qualità dei dati, utile sia in fase di sviluppo che di produzione.