Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Scrittura dei risultati della qualità dei dati nelle tabelle del Data Catalog
È possibile configurare le esecuzioni di valutazione di AWS Glue Data Quality per scrivere automaticamente i risultati nelle tabelle Apache Iceberg nel Glue Data Catalog. AWS Dopo aver abilitato l'output dei risultati, puoi interrogare direttamente i risultati sulla qualità dei dati utilizzando, creare dashboard con strumenti di visualizzazione e mantenere una cronologia centralizzata dei risultati della qualità dei dati in tutto il tuo account.
Puoi scrivere i seguenti tipi di risultati sulla qualità dei dati nelle tabelle di Data Catalog:
-
Risultati delle regole: il risultato positivo o negativo di ogni regola del set di regole, incluse le metriche valutate e i motivi del fallimento
-
Risultati di profilazione: statistiche raccolte dagli analizzatori, inclusi valori scalari (come media e deviazione standard) e dati di distribuzione (istogrammi e distribuzioni di valori)
-
Row-level risultati: risultati della Per-record valutazione che identificano quali righe specifiche del set di dati hanno superato o meno ciascuna regola
-
Risultati dell'osservazione: previsioni di rilevamento delle anomalie, inclusi i valori previsti, i limiti di previsione e se il valore effettivo è stato contrassegnato come anomalia
Prerequisiti
Per scrivere i risultati della qualità dei dati nelle tabelle del Data Catalog, il ruolo IAM utilizzato per l'esecuzione della valutazione deve disporre delle seguenti autorizzazioni:
-
Autorizzazione a creare e aggiornare database e tabelle nel AWS Glue Data Catalog
-
Autorizzazione a scrivere nella posizione Amazon S3 in cui sono archiviati i dati delle tabelle Iceberg
L'esecuzione della valutazione utilizza il ruolo IAM specificato per scrivere nelle tabelle dei risultati. Questo è lo stesso ruolo che ha accesso alla tabella dei dati di origine.
Configurazione dell'output dei risultati
È possibile configurare l'output dei risultati di qualità dei dati utilizzando il --additional-run-options parametro dell'StartDataQualityRulesetEvaluationRunAPI o il additional_options parametro nei job AWS Glue ETL. Per impostazione predefinita, AWS Glue Data Quality non scrive i risultati nelle tabelle del Data Catalog. È necessario abilitare esplicitamente ogni tipo di risultato che si desidera scrivere.
Ogni tipo di risultato ha il proprio blocco di configurazione con una CatalogTableConfig struttura condivisa. Se non fornisci un valoreCatalogTableConfig, AWS Glue Data Quality ricava automaticamente i valori predefiniti, inclusi il nome della tabella e il percorso Amazon S3.
La CatalogTableConfig struttura contiene i seguenti campi:
-
DatabaseName(opzionale) — Il nome del database del catalogo per la tabella di destinazione. Se non viene specificato, viene creato un database predefinito.
-
TableName(opzionale) — Il nome della tabella di destinazione. Se non viene specificato, viene utilizzato un nome di tabella predefinito.
-
S3Location (opzionale): la posizione di Amazon S3 in cui sono archiviati i dati della tabella. Formato:.
s3://Se non specificato, i risultati vengono archiviati in una posizione predefinita.amzn-s3-demo-bucket/prefix/ -
CatalogId(opzionale) — L'ID del AWS Glue Data Catalog in cui creare la tabella. Se non viene specificato, l'ID AWS dell'account viene utilizzato per impostazione predefinita.
Esempio: configurare i risultati delle regole e i risultati della profilazione
aws glue start-data-quality-ruleset-evaluation-run \ --data-source '{ "GlueTable": { "DatabaseName": "my_database", "TableName": "my_table" } }' \ --role "arn:aws:iam::123456789012:role/GlueServiceRole" \ --ruleset-names '["my_ruleset"]' \ --additional-run-options '{ "DataQualityRuleResults": { "WriteDataQualityRuleResultsEnabled": true, "CatalogTableConfig": { "DatabaseName": "quality_results", "TableName": "rule_results" } }, "ProfilingResults": { "WriteProfilingResultsEnabled": true, "CatalogTableConfig": { "DatabaseName": "quality_results", "TableName": "profiles" } } }'
Esempio: configurazione dei risultati a livello di riga
Per i risultati a livello di riga, puoi anche specificare il tipo di record da includere e il numero massimo di righe da scrivere.
aws glue start-data-quality-ruleset-evaluation-run \ --data-source '{ "GlueTable": { "DatabaseName": "my_database", "TableName": "my_table" } }' \ --role "arn:aws:iam::123456789012:role/GlueServiceRole" \ --ruleset-names '["my_ruleset"]' \ --additional-run-options '{ "RowLevelResults": { "MaxRowsToWrite": 5000, "ResultType": "FAILED_ONLY", "CatalogTableConfig": { "DatabaseName": "quality_results", "TableName": "row_level_results" } } }'
Il parametro ResultType accetta i seguenti valori:
-
FAILED_ONLY— Scrivere solo le righe che non soddisfano almeno una regola di qualità dei dati. -
PASSED_ONLY— Scrivi solo le righe che hanno superato tutte le regole di qualità dei dati. -
ALL— Scrivi tutte le righe con i relativi risultati di valutazione.
Esempio: configurare in AWS Glue i job ETL
Nei job AWS Glue ETL, si configura l'output dei risultati utilizzando il additional_options parametro con tasti di notazione a punti:
result = EvaluateDataQuality.process_rows( frame=dynamic_frame, ruleset=ruleset, publishing_options={ "dataQualityEvaluationContext": "my_context", "enableDataQualityResultsPublishing": True }, additional_options={ "observations.scope": "ALL", "dataQualityResultsPublishing.strategy": "BEST_EFFORT", "dataQualityResultsPublishing.resultsFormat.profilingResults.writeProfilingResultsEnabled": "true", "dataQualityResultsPublishing.resultsFormat.profilingResults.catalogTableConfig.databaseName": "my_db", "dataQualityResultsPublishing.resultsFormat.profilingResults.catalogTableConfig.tableName": "profiling_results", "dataQualityResultsPublishing.resultsFormat.profilingResults.catalogTableConfig.s3Location": "s3://amzn-s3-demo-bucket/profiling/", "dataQualityResultsPublishing.resultsFormat.profilingResults.catalogTableConfig.catalogId": "123456789012" } )
Esempio: configurazione dei risultati delle osservazioni
È possibile configurare i risultati dell'osservazione allo stesso modo degli altri tipi di risultati. I risultati dell'osservazione richiedono l'attivazione del rilevamento delle anomalie (ObservationScope: ALL):
aws glue start-data-quality-ruleset-evaluation-run \ --data-source '{ "GlueTable": { "DatabaseName": "my_database", "TableName": "my_table" } }' \ --role "arn:aws:iam::123456789012:role/GlueServiceRole" \ --ruleset-names '["my_ruleset"]' \ --additional-run-options '{ "ObservationScope": "ALL", "ObservationResults": { "WriteObservationResultsEnabled": true, "CatalogTableConfig": { "DatabaseName": "quality_results", "TableName": "observation_results" } } }'
Schemi delle tabelle
AWS Glue Data Quality scrive ogni tipo di risultato in una tabella Iceberg separata. I risultati delle regole, i risultati della profilazione (inclusa la tabella dei risultati di distribuzione separata) e le tabelle dei risultati delle osservazioni sono suddivisi percatalog_id, database_nametable_name, e day(stored_on) per consentire un'interrogazione efficiente. Puoi filtrare stored_on direttamente per le query basate sul tempo e Iceberg gestisce automaticamente l'eliminazione delle partizioni.
Tabella dei risultati delle regole
La tabella dei risultati delle regole memorizza il risultato positivo o negativo per ogni regola valutata durante un'esecuzione della qualità dei dati.
| Colonna | Tipo | Description |
|---|---|---|
dq_result_id |
STRING | Identificatore univoco per il risultato della qualità dei dati. |
rule_name |
STRING | Nome della regola (ad esempio,Rule_1). |
rule_description |
STRING | L'espressione DQDL per la regola. |
rule_result |
STRING | Il risultato della valutazione: PASS o. FAIL |
evaluation_message |
STRING | Un messaggio che descrive il motivo dell'errore, se applicabile. |
evaluated_metrics |
MAPPA<STRING, DOUBLE> | Le metriche valutate dalla regola. |
catalog_id |
STRING | L'ID del catalogo della tabella di origine. |
database_name |
STRING | Il nome del database della tabella di origine. |
table_name |
STRING | Il nome della tabella di origine. |
ruleset_evaluation_run_id |
STRING | L'ID dell'esecuzione della valutazione. |
started_on |
TIMESTAMP | Quando è iniziata la valutazione. |
completed_on |
TIMESTAMP | Quando la valutazione è stata completata. |
evaluated_rule |
STRING | L'espressione della regola valutata dopo la risoluzione degli operandi. |
ruleset_name |
STRING | Nome del set di regole che ha prodotto questo risultato. |
Tabella dei risultati di profilazione
La tabella seguente descrive le colonne della tabella dei risultati della profilazione. Questa tabella memorizza le statistiche scalari raccolte da analizzatori e regole (comeMean, StandardDeviation e). Completeness AWS Glue Data Quality memorizza le statistiche di distribuzione in una tabella separata dei risultati di distribuzione.
| Colonna | Tipo | Description |
|---|---|---|
profile_id |
STRING | Identificatore univoco per il profilo di qualità dei dati. |
statistic_id |
STRING | Identificatore univoco per la statistica. |
statistic_name |
STRING | Nome della statistica (ad esempio,,) Mean Completeness |
evaluation_level |
STRING | Il livello al quale viene valutata la statistica:Dataset,Column, o. Multicolumn |
statistics_value |
DOUBLE | Il valore scalare della statistica. |
statistic_properties |
MAPPA<STRING, STRING> | Proprietà aggiuntive della statistica. |
columns_referenced |
ARRAY <STRING> | Le colonne a cui fa riferimento la statistica. |
referenced_datasets |
MATRICE <STRING> | Set di dati di riferimento per la statistica. |
column_name |
STRING | Il nome della colonna di destinazione. |
dq_result_id |
STRING | Identificatore del risultato della qualità dei dati. |
started_on |
TIMESTAMP | Quando è iniziata la valutazione. |
completed_on |
TIMESTAMP | Quando la valutazione è stata completata. |
stored_on |
TIMESTAMP | Quando il record è stato scritto sulla tabella. |
catalog_id |
STRING | ID di catalogo della tabella di origine. |
database_name |
STRING | Nome del database della tabella di origine. |
table_name |
STRING | Nome della tabella di origine. |
region |
STRING | AWS Regione. |
account_id |
STRING | AWS ID dell'account. |
ruleset_evaluation_run_id |
STRING | L'ID dell'esecuzione della valutazione. |
Tabella dei risultati della distribuzione
La tabella seguente descrive le colonne della tabella dei risultati della distribuzione. I risultati della distribuzione vengono archiviati separatamente dalle statistiche di profilazione scalare, con una riga per contenitore o categoria. È possibile configurare questa tabella all'interno del ProfilingResults.DistributionResults blocco.
| Colonna | Tipo | Description |
|---|---|---|
statistic_id |
STRING | Identificatore univoco per la statistica di distribuzione. |
column_name |
STRING | La colonna di origine (ad esempio, «età» o «reparto»). |
data_type |
STRING | Il tipo di dati della colonna (ad esempio, "LongType«," StringType «). |
num_bins |
INT | Numero di contenitori utilizzati per la distribuzione. |
bin_index |
INT | Posizione del contenitore in base a 0. |
bin_label |
STRING | Per le colonne categoriche: il valore distinto. NULL per colonne numeriche. |
bin_lower_bound |
STRING | Per le colonne numeriche: il bordo inferiore del contenitore. NULL per le colonne categoriche. |
bin_upper_bound |
STRING | Per le colonne numeriche: il bordo superiore del contenitore. NULL per le colonne categoriche. |
bin_count |
BIGINT | Numero di frequenze per questo raccoglitore. |
null_count |
INT | Numero di valori NULL esclusi dalla distribuzione. Stesso valore su ogni riga per una determinata statistica all'interno di una corsa. NULL quando non sono presenti valori nulli. |
tail_count |
INT | Frequenza aggregata dei valori categoriali oltre i primi 20. Stesso valore su ogni riga per una determinata statistica all'interno di una corsa. NULL per gli istogrammi numerici. |
profile_id |
STRING | Identificatore del profilo. |
dq_result_id |
STRING | Identificatore del risultato della qualità dei dati. |
ruleset_evaluation_run_id |
STRING | Identificatore dell'esecuzione della valutazione. |
started_on |
TIMESTAMP | Quando è iniziata la valutazione. |
completed_on |
TIMESTAMP | Quando la valutazione è stata completata. |
stored_on |
TIMESTAMP | Quando il record è stato scritto sulla tabella. |
catalog_id |
STRING | ID di catalogo della tabella di origine. |
database_name |
STRING | Nome del database della tabella di origine. |
table_name |
STRING | Nome della tabella di origine. |
region |
STRING | AWS Regione. |
account_id |
STRING | AWS ID dell'account. |
Row-level tabella dei risultati
La tabella seguente descrive le colonne della tabella dei risultati a livello di riga. È possibile utilizzare questa tabella per identificare i record specifici che non rispettano le regole di qualità dei dati.
| Colonna | Tipo | Description |
|---|---|---|
| Colonne di origine | Varia | Tutte le colonne dei dati di origine originali. |
data_quality_rules_pass |
ARRAY <STRING> | Regole approvate per questo record. |
data_quality_rules_fail |
MATRICE <STRING> | Regole non riuscite per questo record. |
data_quality_rules_skip |
ARRAY <STRING> | Regole che sono state saltate per questo record. |
data_quality_evaluation_result |
STRING | Il risultato complessivo della valutazione per questo record: Passed oFailed. |
dq_result_id |
STRING | Identificatore univoco per il risultato della qualità dei dati. |
ruleset_evaluation_run_id |
STRING | L'ID dell'esecuzione della valutazione. |
started_on |
TIMESTAMP | Quando è iniziata la valutazione. |
completed_on |
TIMESTAMP | Quando la valutazione è stata completata. |
stored_on |
TIMESTAMP | Quando il record è stato scritto sulla tabella. |
catalog_id |
STRING | ID di catalogo della tabella di origine. |
database_name |
STRING | Nome del database della tabella di origine. |
table_name |
STRING | Nome della tabella di origine. |
region |
STRING | AWS Regione. |
account_id |
STRING | AWS ID dell'account. |
Tabella dei risultati dell'osservazione
La tabella dei risultati dell'osservazione memorizza le previsioni di rilevamento delle anomalie per ogni statistica in ogni ciclo di valutazione. La tabella include tutti i risultati delle previsioni: anomalie, valori normali e previsioni saltate. Ciò consente di visualizzare grafici di tendenza continui con bande di previsione.
| Colonna | Tipo | Description |
|---|---|---|
statistic_id |
STRING | Identificatore della statistica da monitorare. |
statistic_name |
STRING | Nome della statistica monitorata. |
prediction_outcome |
STRING | Il risultato del rilevamento delle anomalie:ANOMALY,NOT_ANOMALY, o. SKIPPED |
expected_value |
DOUBLE | Il valore previsto previsto. NULL quando la previsione viene saltata. |
lower_bound |
DOUBLE | Il limite inferiore dell'intervallo previsto. NULL quando la previsione viene saltata. |
upper_bound |
DOUBLE | Il limite superiore dell'intervallo previsto. NULL quando la previsione viene saltata. |
observation_message |
STRING | Una descrizione dell'anomalia, se rilevata. |
training_input |
STRING | Se questo punto dati è incluso nel modello di rilevamento delle anomalie: INCLUDED o. EXCLUDED |
ruleset_evaluation_run_id |
STRING | L'ID della corsa di valutazione. |
recorded_on |
TIMESTAMP | Quando l'osservazione è stata registrata. |
stored_on |
TIMESTAMP | Quando il record è stato scritto sul tavolo. |
actual_value |
DOUBLE | Il valore effettivo osservato per la statistica. |
training_status |
STRING | Stato dell'addestramento del modello di rilevamento delle anomalie (ad esempioPENDING,COMPLETED). |
recommended_rules |
STRING | Regole consigliate in base alla previsione del rilevamento delle anomalie. |
modified_rules |
STRING | Regole modificate con soglie aggiornate in base alle previsioni. |
catalog_id |
STRING | ID di catalogo della tabella di origine. |
database_name |
STRING | Nome del database della tabella di origine. |
table_name |
STRING | Nome della tabella di origine. |
Nota
La tabella dei risultati dell'osservazione utilizza un modello di scrittura di sola aggiunta. Quando si esclude un punto dati utilizzando l'BatchPutDataQualityStatisticAnnotationAPI, viene aggiunta una nuova riga con training_input set to. EXCLUDED Per interrogare lo stato più recente di ogni osservazione, utilizza il stored_on timestamp per identificare la riga più recente per ogni statistica ed eseguire una combinazione.
Nota
Questa tabella memorizza anche le osservazioni sull'overflow della distribuzione, generate quando più del 2% dei valori non rientra nei limiti di un contenitore congelato. Queste righe hanno statistic_name = 'Distribution' e sono prediction_outcome NULL. Il observation_message campo contiene la descrizione dell'overflow.
Interrogazione dei risultati con
Una volta completata la valutazione della qualità dei dati, è possibile interrogare direttamente le tabelle dei risultati utilizzando. Gli esempi seguenti illustrano i modelli di interrogazione più comuni.
Esempio: trova regole non riuscite per un'esecuzione specifica
SELECT rule_name, rule_description, evaluation_message, evaluated_metrics FROM quality_results.rule_results WHERE ruleset_evaluation_run_id = 'dqr-12345678' AND rule_result = 'FAIL' ORDER BY rule_name;
Esempio: visualizza le statistiche di profilazione nel tempo
SELECT stored_on, statistics_value FROM quality_results.profiles WHERE database_name = 'my_database' AND table_name = 'my_table' AND statistic_name = 'Mean' AND columns_referenced = ARRAY['salary'] ORDER BY stored_on;
Esempio: identifica le righe che non soddisfano una regola specifica
SELECT * FROM quality_results.row_level_results WHERE data_quality_evaluation_result = 'Failed' AND contains(data_quality_rules_fail, 'IsComplete "email"');
Esempio: visualizzazione di un istogramma numerico
SELECT bin_index, bin_lower_bound, bin_upper_bound, bin_count FROM quality_results.distributions WHERE column_name = 'salary' AND ruleset_evaluation_run_id = 'dqrun-abc123' ORDER BY bin_index;
Esempio: visualizzazione di una distribuzione categorica dei valori
SELECT bin_label, bin_count FROM quality_results.distributions WHERE column_name = 'department' AND ruleset_evaluation_run_id = 'dqrun-abc123' ORDER BY bin_count DESC;
Esempio: traccia la frequenza delle categorie nel tempo
SELECT started_on, bin_count FROM quality_results.distributions WHERE column_name = 'status' AND bin_label = 'active' ORDER BY started_on;
Esempio: visualizza le tendenze di rilevamento delle anomalie con bande di previsione
SELECT o.recorded_on, p.statistics_value AS actual_value, o.expected_value, o.lower_bound, o.upper_bound, o.prediction_outcome FROM quality_results.profiles p JOIN quality_results.observation_results o ON p.statistic_id = o.statistic_id AND p.ruleset_evaluation_run_id = o.ruleset_evaluation_run_id WHERE p.database_name = 'my_database' AND p.table_name = 'my_table' AND p.statistic_name = 'RowCount' AND p.stored_on >= DATE '2025-03-01' ORDER BY p.stored_on;
Esempio: interroga lo stato di osservazione più recente dopo le annotazioni
Poiché la tabella dei risultati dell'osservazione utilizza un modello di sola aggiunta, le annotazioni di esclusione aggiungono nuove righe. Utilizza una query di deduplicazione per ottenere lo stato più recente di ogni osservazione:
SELECT statistic_id, statistic_name, prediction_outcome, expected_value, lower_bound, upper_bound, training_input, stored_on FROM ( SELECT *, ROW_NUMBER() OVER ( PARTITION BY statistic_id, ruleset_evaluation_run_id ORDER BY stored_on DESC ) AS rn FROM quality_results.observation_results WHERE database_name = 'my_database' AND table_name = 'my_table' ) WHERE rn = 1 ORDER BY stored_on;
Considerazioni
Tieni presente le seguenti considerazioni quando scrivi i risultati della qualità dei dati nelle tabelle del Data Catalog:
-
AWS Glue Data Quality archivia i risultati in formato Apache Iceberg, che supporta interrogazioni efficienti sui viaggi nel tempo e l'eliminazione delle partizioni.
-
Una singola tabella dei risultati può memorizzare i risultati di più tabelle di origine. Usa le colonne
catalog_iddatabase_name, etable_namepartition per filtrare i risultati per una fonte specifica. -
AWS Glue Data Quality scrive i risultati delle osservazioni in modo asincrono al termine dell'esecuzione della valutazione. Potrebbe esserci un breve ritardo prima che le osservazioni vengano visualizzate nella tabella.
-
Per le statistiche di distribuzione nella tabella dei risultati di distribuzione, ogni contenitore o categoria viene archiviato in una riga separata. Ad esempio, un istogramma con 20 contenitori genera 20 righe nella tabella per quella statistica.