Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Écrire les résultats relatifs à la qualité des données dans les tableaux du catalogue de données
Vous pouvez configurer les cycles d'évaluation de la qualité des données de AWS Glue pour écrire automatiquement les résultats dans les tables Apache Iceberg du catalogue de données AWS Glue. Une fois que vous avez activé la sortie des résultats, vous pouvez interroger directement les résultats de qualité de vos données, créer des tableaux de bord avec des outils de visualisation et gérer un historique centralisé des résultats de qualité des données sur votre compte.
Vous pouvez écrire les types de résultats de qualité des données suivants dans les tableaux du catalogue de données :
-
Résultats des règles : résultat de réussite ou d'échec pour chaque règle de votre ensemble de règles, y compris les mesures évaluées et les raisons de l'échec
-
Résultats de profilage : statistiques collectées par les analyseurs, y compris les valeurs scalaires (telles que la moyenne et l'écart type) et les données de distribution (histogrammes et distributions de valeurs)
-
Row-level résultats : résultats Per-record d'évaluation qui identifient quelles lignes spécifiques de votre ensemble de données ont réussi ou échoué à chaque règle
-
Résultats des observations — Prédictions de détection des anomalies, y compris les valeurs attendues, les limites de prédiction et si la valeur réelle a été signalée comme une anomalie
Conditions préalables
Pour écrire les résultats de qualité des données dans les tables du catalogue de données, le rôle IAM que vous utilisez pour l'exécution de l'évaluation doit disposer des autorisations suivantes :
-
Autorisation de créer et de mettre à jour des bases de données et des tables dans le catalogue de données AWS Glue
-
Autorisation d'écrire vers l'emplacement Amazon S3 où les données de la table Iceberg sont stockées
L'exécution de l'évaluation utilise le rôle IAM que vous spécifiez pour écrire dans les tableaux de résultats. Il s'agit du même rôle qui a accès à la table de données source.
Configuration de la sortie des résultats
Vous configurez la sortie des résultats de qualité des données à l'aide du --additional-run-options paramètre de l'StartDataQualityRulesetEvaluationRunAPI ou du additional_options paramètre des tâches AWS Glue ETL. Par défaut, AWS Glue Data Quality n'écrit pas les résultats dans les tables du catalogue de données. Vous devez activer explicitement chaque type de résultat que vous souhaitez écrire.
Chaque type de résultat possède son propre bloc de configuration avec une CatalogTableConfig structure partagée. Si vous ne fournissez pas deCatalogTableConfig, AWS Glue Data Quality dérive automatiquement les valeurs par défaut, y compris le nom de la table et le chemin Amazon S3.
La CatalogTableConfig structure contient les champs suivants :
-
DatabaseName(facultatif) — Nom de la base de données du catalogue pour la table cible. Si ce n'est pas spécifié, une base de données par défaut est créée.
-
TableName(facultatif) — Le nom de la table cible. S'il n'est pas spécifié, un nom de table par défaut est utilisé.
-
S3Location (facultatif) : emplacement Amazon S3 où les données des tables sont stockées. Format :
s3://. Si ce n'est pas spécifié, les résultats sont stockés dans un emplacement par défaut.amzn-s3-demo-bucket/prefix/ -
CatalogId(facultatif) — ID du catalogue de données AWS Glue dans lequel créer la table. S'il n'est pas spécifié, l'identifiant du AWS compte est utilisé par défaut.
Exemple : configurer les résultats des règles et les résultats du profilage
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" } } }'
Exemple : configurer les résultats au niveau des lignes
Pour les résultats au niveau des lignes, vous pouvez également spécifier le type d'enregistrements à inclure et le nombre maximum de lignes à écrire.
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" } } }'
Le paramètre ResultType accepte les valeurs suivantes :
-
FAILED_ONLY— Écrivez uniquement les lignes qui ont échoué à au moins une règle de qualité des données. -
PASSED_ONLY— Écrivez uniquement les lignes qui respectent toutes les règles de qualité des données. -
ALL— Écrivez toutes les lignes avec leurs résultats d'évaluation.
Exemple — Configuration dans les tâches ETL de AWS Glue
Dans les tâches AWS Glue ETL, vous configurez la sortie des résultats à l'aide du additional_options paramètre avec des touches de notation par points :
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" } )
Exemple — Configuration des résultats d'observation
Vous pouvez configurer les résultats d'observation de la même manière que les autres types de résultats. Les résultats des observations nécessitent l'activation de la détection des anomalies (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" } } }'
Schémas de tables
AWS Glue Data Quality écrit chaque type de résultat dans une table Iceberg distincte. Les résultats des règles, les résultats du profilage (y compris le tableau des résultats de distribution distinct) et les tableaux des résultats des observations sont partitionnés par catalog_id database_nametable_name, et day(stored_on) pour permettre des requêtes efficaces. Vous pouvez filtrer stored_on directement pour les requêtes temporelles et Iceberg gère automatiquement l'élagage des partitions.
Tableau des résultats des règles
Le tableau des résultats des règles enregistre le résultat de réussite ou d'échec pour chaque règle évaluée lors d'une analyse de la qualité des données.
| Colonne | Type | Description |
|---|---|---|
dq_result_id |
CHAÎNE | Identifiant unique pour le résultat de qualité des données. |
rule_name |
CHAÎNE | Nom de la règle (par exemple,Rule_1). |
rule_description |
CHAÎNE | Expression DQDL pour la règle. |
rule_result |
CHAÎNE | Résultat de l'évaluation : PASS ouFAIL. |
evaluation_message |
CHAÎNE | Un message décrivant la raison de l'échec, le cas échéant. |
evaluated_metrics |
CARTE<STRING, DOUBLE> | Les métriques évaluées par la règle. |
catalog_id |
CHAÎNE | ID de catalogue de la table source. |
database_name |
CHAÎNE | Le nom de base de données de la table source. |
table_name |
CHAÎNE | Nom de la table source. |
ruleset_evaluation_run_id |
CHAÎNE | L'ID de l'évaluation exécutée. |
started_on |
TIMESTAMP | Quand l'évaluation a commencé. |
completed_on |
TIMESTAMP | Une fois l'évaluation terminée. |
evaluated_rule |
CHAÎNE | L'expression de règle évaluée après résolution des opérandes. |
ruleset_name |
CHAÎNE | Nom de l'ensemble de règles qui a produit ce résultat. |
Tableau des résultats du profilage
Le tableau suivant décrit les colonnes du tableau des résultats du profilage. Ce tableau stocke les statistiques scalaires collectées par les analyseurs et les règles (telles que MeanStandardDeviation, etCompleteness). AWS Glue Data Quality stocke les statistiques de distribution dans un tableau de résultats de distribution distinct.
| Colonne | Type | Description |
|---|---|---|
profile_id |
CHAÎNE | Identifiant unique pour le profil de qualité des données. |
statistic_id |
CHAÎNE | Identifiant unique pour la statistique. |
statistic_name |
CHAÎNE | Nom de la statistique (par exempleMean,Completeness) |
evaluation_level |
CHAÎNE | Niveau auquel la statistique est évaluée :Dataset,Column, ouMulticolumn. |
statistics_value |
DOUBLE | La valeur scalaire de la statistique. |
statistic_properties |
CARTE<STRING, STRING> | Propriétés supplémentaires de la statistique. |
columns_referenced |
MATRICE <STRING> | Les colonnes référencées par la statistique. |
referenced_datasets |
MATRICE <STRING> | Ensembles de données référencés pour la statistique. |
column_name |
CHAÎNE | Le nom de la colonne cible. |
dq_result_id |
CHAÎNE | Identifiant des résultats relatifs à la qualité des données. |
started_on |
TIMESTAMP | Quand l'évaluation a commencé. |
completed_on |
TIMESTAMP | Une fois l'évaluation terminée. |
stored_on |
TIMESTAMP | Quand l'enregistrement a été écrit sur la table. |
catalog_id |
CHAÎNE | ID de catalogue de la table source. |
database_name |
CHAÎNE | Nom de base de données de la table source. |
table_name |
CHAÎNE | Nom de la table source. |
region |
CHAÎNE | AWS Région. |
account_id |
CHAÎNE | AWS ID de compte. |
ruleset_evaluation_run_id |
CHAÎNE | L'ID de l'évaluation exécutée. |
Tableau des résultats de distribution
Le tableau suivant décrit les colonnes du tableau des résultats de distribution. Les résultats de distribution sont stockés séparément des statistiques de profilage scalaire, avec une ligne par compartiment ou catégorie. Vous pouvez configurer cette table dans le ProfilingResults.DistributionResults bloc.
| Colonne | Type | Description |
|---|---|---|
statistic_id |
CHAÎNE | Identifiant unique pour la statistique de distribution. |
column_name |
CHAÎNE | La colonne source (par exemple, « âge » ou « département »). |
data_type |
CHAÎNE | Type de données de la colonne (par exemple, "LongType«," StringType «). |
num_bins |
INT | Nombre de bacs utilisés pour la distribution. |
bin_index |
INT | Position de la poubelle sur la base 0. |
bin_label |
CHAÎNE | Pour les colonnes catégorielles : la valeur distincte. NULL pour les colonnes numériques. |
bin_lower_bound |
CHAÎNE | Pour les colonnes numériques : le bord inférieur du bac. NULL pour les colonnes catégorielles. |
bin_upper_bound |
CHAÎNE | Pour les colonnes numériques : le bord supérieur du bac. NULL pour les colonnes catégorielles. |
bin_count |
BIGINT | Nombre de fréquences pour ce bac. |
null_count |
INT | Nombre de valeurs NULL exclues de la distribution. Même valeur sur chaque ligne pour une statistique donnée au cours d'une exécution. NULL en l'absence de valeurs nulles. |
tail_count |
INT | Fréquence agrégée des valeurs catégorielles au-delà des 20 premières. Même valeur sur chaque ligne pour une statistique donnée au cours d'une exécution. NULL pour les histogrammes numériques. |
profile_id |
CHAÎNE | Identifiant de profil. |
dq_result_id |
CHAÎNE | Identifiant des résultats relatifs à la qualité des données. |
ruleset_evaluation_run_id |
CHAÎNE | Identifiant de l'exécution de l'évaluation. |
started_on |
TIMESTAMP | Quand l'évaluation a commencé. |
completed_on |
TIMESTAMP | Une fois l'évaluation terminée. |
stored_on |
TIMESTAMP | Quand l'enregistrement a été écrit sur la table. |
catalog_id |
CHAÎNE | ID de catalogue de la table source. |
database_name |
CHAÎNE | Nom de base de données de la table source. |
table_name |
CHAÎNE | Nom de la table source. |
region |
CHAÎNE | AWS Région. |
account_id |
CHAÎNE | AWS ID de compte. |
Row-level tableau des résultats
Le tableau suivant décrit les colonnes du tableau des résultats au niveau des lignes. Vous pouvez utiliser ce tableau pour identifier les enregistrements spécifiques qui n'ont pas respecté vos règles de qualité des données.
| Colonne | Type | Description |
|---|---|---|
| Colonnes sources | Varie | Toutes les colonnes des données sources d'origine. |
data_quality_rules_pass |
MATRICE <STRING> | Règles qui ont été adoptées pour ce record. |
data_quality_rules_fail |
MATRICE <STRING> | Règles qui ont échoué pour cet enregistrement. |
data_quality_rules_skip |
MATRICE <STRING> | Règles qui ont été ignorées pour cet enregistrement. |
data_quality_evaluation_result |
CHAÎNE | Le résultat global de l'évaluation pour cet enregistrement : Passed ouFailed. |
dq_result_id |
CHAÎNE | Identifiant unique pour le résultat de qualité des données. |
ruleset_evaluation_run_id |
CHAÎNE | L'ID de l'évaluation exécutée. |
started_on |
TIMESTAMP | Quand l'évaluation a commencé. |
completed_on |
TIMESTAMP | Une fois l'évaluation terminée. |
stored_on |
TIMESTAMP | Quand l'enregistrement a été écrit sur la table. |
catalog_id |
CHAÎNE | ID de catalogue de la table source. |
database_name |
CHAÎNE | Nom de base de données de la table source. |
table_name |
CHAÎNE | Nom de la table source. |
region |
CHAÎNE | AWS Région. |
account_id |
CHAÎNE | AWS ID de compte. |
Tableau des résultats des observations
Le tableau des résultats d'observation stocke les prévisions de détection d'anomalies pour chaque statistique à chaque exécution d'évaluation. Le tableau inclut tous les résultats des prévisions : anomalies, valeurs normales et prédictions ignorées. Cela vous permet de générer des graphiques de tendance continus avec des bandes de prédiction.
| Colonne | Type | Description |
|---|---|---|
statistic_id |
CHAÎNE | Identifiant de la statistique surveillée. |
statistic_name |
CHAÎNE | Nom de la statistique surveillée. |
prediction_outcome |
CHAÎNE | Résultat de la détection de l'anomalie :ANOMALY,NOT_ANOMALY, ouSKIPPED. |
expected_value |
DOUBLE | La valeur attendue prévue. NULL lorsque la prédiction est ignorée. |
lower_bound |
DOUBLE | La limite inférieure de la plage prédite. NULL lorsque la prédiction est ignorée. |
upper_bound |
DOUBLE | La limite supérieure de la plage prédite. NULL lorsque la prédiction est ignorée. |
observation_message |
CHAÎNE | Description de l'anomalie, si elle est détectée. |
training_input |
CHAÎNE | Si ce point de données est inclus dans le modèle de détection des anomalies : INCLUDED ouEXCLUDED. |
ruleset_evaluation_run_id |
CHAÎNE | L'ID de l'évaluation exécutée. |
recorded_on |
TIMESTAMP | Date à laquelle l'observation a été enregistrée. |
stored_on |
TIMESTAMP | Quand l'enregistrement a été écrit sur la table. |
actual_value |
DOUBLE | La valeur réelle observée pour la statistique. |
training_status |
CHAÎNE | État de la formation au modèle de détection d'anomalies (par exemple,PENDING,COMPLETED). |
recommended_rules |
CHAÎNE | Règles recommandées sur la base de la prédiction de détection des anomalies. |
modified_rules |
CHAÎNE | Règles modifiées avec des seuils mis à jour en fonction des prévisions. |
catalog_id |
CHAÎNE | ID de catalogue de la table source. |
database_name |
CHAÎNE | Nom de base de données de la table source. |
table_name |
CHAÎNE | Nom de la table source. |
Note
Le tableau des résultats d'observation utilise un modèle d'écriture permettant d'ajouter uniquement. Lorsque vous excluez un point de données à l'aide de l'BatchPutDataQualityStatisticAnnotationAPI, une nouvelle ligne est ajoutée avec training_input set toEXCLUDED. Pour rechercher l'état le plus récent de chaque observation, utilisez l'stored_onhorodatage pour identifier la ligne la plus récente pour chaque combinaison de statistiques et d'exécutions.
Note
Ce tableau stocke également les observations de débordement de distribution, générées lorsque plus de 2 % des valeurs se situent en dehors des limites des bacs gelés. Ces lignes ont statistic_name = 'Distribution' et prediction_outcome sont nulles. Le observation_message champ contient la description du débordement.
Interroger les résultats avec
Une fois l'évaluation de la qualité des données terminée, vous pouvez interroger les tableaux de résultats directement à l'aide de. Les exemples suivants illustrent les modèles de requêtes courants.
Exemple : recherche de règles ayant échoué pour une exécution spécifique
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;
Exemple : Afficher les statistiques de profilage au fil du temps
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;
Exemple : identifier les lignes qui n'ont pas répondu à une règle spécifique
SELECT * FROM quality_results.row_level_results WHERE data_quality_evaluation_result = 'Failed' AND contains(data_quality_rules_fail, 'IsComplete "email"');
Exemple — Afficher un histogramme numérique
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;
Exemple — Afficher une distribution de valeurs catégorielles
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;
Exemple — Suivez la fréquence des catégories au fil du temps
SELECT started_on, bin_count FROM quality_results.distributions WHERE column_name = 'status' AND bin_label = 'active' ORDER BY started_on;
Exemple : Afficher les tendances de détection des anomalies à l'aide de bandes de prédiction
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;
Exemple : demande l'état de la dernière observation après les annotations
Étant donné que le tableau des résultats d'observation utilise un modèle d'ajout uniquement, les annotations d'exclusion ajoutent de nouvelles lignes. Utilisez une requête de déduplication pour obtenir le dernier état de chaque observation :
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;
Considérations
Tenez compte des considérations suivantes lorsque vous écrivez des résultats de qualité des données dans les tableaux du catalogue de données :
-
AWS Glue Data Quality stocke les résultats au format Apache Iceberg, qui permet d'effectuer efficacement des requêtes temporelles et de procéder à l'élagage des partitions.
-
Une seule table de résultats peut stocker les résultats de plusieurs tables sources. Utilisez les colonnes
catalog_id,database_name, ettable_namepartitionner pour filtrer les résultats pour une source spécifique. -
AWS Glue Data Quality écrit les résultats des observations de manière asynchrone une fois l'exécution de l'évaluation terminée. Il peut y avoir un bref délai avant que les observations apparaissent dans le tableau.
-
Pour les statistiques de distribution dans le tableau des résultats de distribution, chaque compartiment ou catégorie est stocké dans une ligne distincte. Par exemple, un histogramme comportant 20 cases génère 20 lignes dans le tableau correspondant à cette statistique.