View a markdown version of this page

Scrittura dei risultati della qualità dei dati nelle tabelle del Data Catalog - AWS Aderenza

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://amzn-s3-demo-bucket/prefix/ Se non specificato, i risultati vengono archiviati in una posizione predefinita.

  • 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, e table_name partition 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.