View a markdown version of this page

Datenqualitätsergebnisse in Datenkatalogtabellen schreiben - AWS Glue

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Datenqualitätsergebnisse in Datenkatalogtabellen schreiben

Sie können die Evaluierungsläufe von AWS Glue Data Quality so konfigurieren, dass die Ergebnisse automatisch in die Apache Iceberg-Tabellen im AWS Glue Data Catalog geschrieben werden. Nachdem Sie die Ergebnisausgabe aktiviert haben, können Sie Ihre Datenqualitätsergebnisse direkt damit abfragen, Dashboards mit Visualisierungstools erstellen und einen zentralen Verlauf der Datenqualitätsergebnisse in Ihrem gesamten Konto verwalten.

Sie können die folgenden Arten von Datenqualitätsergebnissen in Datenkatalogtabellen schreiben:

  • Regelergebnisse — Das Ergebnis „Bestanden“ oder „Nicht bestanden“ für jede Regel in Ihrem Regelsatz, einschließlich der bewerteten Metriken und Fehlerursachen

  • Ergebnisse der Profilerstellung — Von Analysatoren gesammelte Statistiken, einschließlich Skalarwerten (wie Mittelwert und Standardabweichung) und Verteilungsdaten (Histogramme und Wertverteilungen)

  • Row-level Ergebnisse — Per-record Bewertungsergebnisse, aus denen hervorgeht, welche spezifischen Zeilen in Ihrem Datensatz die einzelnen Regeln bestanden oder nicht bestanden haben

  • Beobachtungsergebnisse — Vorhersagen zur Erkennung von Anomalien, einschließlich erwarteter Werte, Prognosegrenzen und ob der tatsächliche Wert als Anomalie gekennzeichnet wurde

Voraussetzungen

Um Datenqualitätsergebnisse in Datenkatalogtabellen zu schreiben, muss die IAM-Rolle, die Sie für den Evaluierungslauf verwenden, über die folgenden Berechtigungen verfügen:

  • Berechtigung zum Erstellen und Aktualisieren von Datenbanken und Tabellen im AWS Glue-Datenkatalog

  • Erlaubnis, in den Amazon S3-Speicherort zu schreiben, an dem die Daten der Iceberg-Tabelle gespeichert sind

Der Testlauf verwendet die von Ihnen angegebene IAM-Rolle, um in die Ergebnistabellen zu schreiben. Dies ist dieselbe Rolle, die Zugriff auf die Quelldatentabelle hat.

Konfiguration der Ergebnisausgabe

Sie konfigurieren die Ausgabe von Ergebnissen zur Datenqualität mithilfe des --additional-run-options StartDataQualityRulesetEvaluationRun API-Parameters oder des additional_options Parameters in AWS Glue-ETL-Aufträgen. Standardmäßig schreibt AWS Glue Data Quality keine Ergebnisse in Datenkatalogtabellen. Sie müssen jeden Ergebnistyp, den Sie schreiben möchten, explizit aktivieren.

Jeder Ergebnistyp hat seinen eigenen Konfigurationsblock mit einer gemeinsamen CatalogTableConfig Struktur. Wenn Sie keine angebenCatalogTableConfig, leitet AWS Glue Data Quality automatisch Standardwerte ab, einschließlich des Tabellennamens und des Amazon S3-Pfads.

Die CatalogTableConfig Struktur enthält die folgenden Felder:

  • DatabaseName(optional) — Der Name der Katalogdatenbank für die Zieltabelle. Wenn nicht angegeben, wird eine Standarddatenbank erstellt.

  • TableName(optional) — Der Name der Zieltabelle. Wenn nicht angegeben, wird ein Standardtabellenname verwendet.

  • S3Location (optional) — Der Amazon S3-Speicherort, an dem Tabellendaten gespeichert werden. Format:. s3://amzn-s3-demo-bucket/prefix/ Wenn nicht angegeben, werden die Ergebnisse an einem Standardspeicherort gespeichert.

  • CatalogId(optional) — Die ID des AWS Glue-Datenkatalogs, in dem die Tabelle erstellt werden soll. Wenn nicht angegeben, wird standardmäßig die AWS Konto-ID verwendet.

Beispiel: Konfigurieren Sie Regelergebnisse und Profilerstellungsergebnisse

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" } } }'

Beispiel: Ergebnisse auf Zeilenebene konfigurieren

Für Ergebnisse auf Zeilenebene können Sie auch den Typ der einzuschließenden Datensätze und eine maximale Anzahl von Zeilen angeben, die geschrieben werden sollen.

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" } } }'

Der Parameter ResultType akzeptiert die folgenden Werte:

  • FAILED_ONLY— Schreiben Sie nur Zeilen, die mindestens eine Datenqualitätsregel nicht erfüllt haben.

  • PASSED_ONLY— Schreiben Sie nur Zeilen, die alle Datenqualitätsregeln erfüllt haben.

  • ALL— Schreiben Sie alle Zeilen mit ihren Bewertungsergebnissen.

Beispiel — ETL-Jobs in AWS Glue konfigurieren

In AWS Glue-ETL-Jobs konfigurieren Sie die Ergebnisausgabe mithilfe des additional_options Parameters mit Schlüsseln in Punktnotation:

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" } )

Beispiel — Beobachtungsergebnisse konfigurieren

Sie können Beobachtungsergebnisse auf die gleiche Weise wie andere Ergebnistypen konfigurieren. Für Beobachtungsergebnisse muss die Anomalieerkennung aktiviert sein (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" } } }'

Tabellenschemas

AWS Glue Data Quality schreibt jeden Ergebnistyp in eine separate Iceberg-Tabelle. Die Regelergebnisse, die Ergebnisse der Profilerstellung (einschließlich der separaten Tabelle mit den Verteilungsergebnissen) und die Tabellen mit den Beobachtungsergebnissen sind durchcatalog_id, und partitioniert database_nametable_name, um effiziente Abfragen day(stored_on) zu ermöglichen. Bei zeitbasierten Abfragen können Sie stored_on direkt nach Daten filtern, und Iceberg führt die Partitionsbereinigung automatisch durch.

Tabelle mit den Ergebnissen der Regel

In der Tabelle mit den Regelergebnissen wird das Ergebnis „Bestanden“ oder „Nicht bestanden“ für jede Regel gespeichert, die während eines Datenqualitätslaufs bewertet wurde.

Spalte Typ Description
dq_result_id STRING Eindeutiger Bezeichner für das Datenqualitätsergebnis.
rule_name STRING Name der Regel (z. B.Rule_1).
rule_description STRING Der DQDL-Ausdruck für die Regel.
rule_result STRING Das Bewertungsergebnis: PASS oderFAIL.
evaluation_message STRING Eine Meldung, die den Grund für den Ausfall beschreibt, falls zutreffend.
evaluated_metrics LANDKARTE<STRING, DOUBLE> Die von der Regel bewerteten Metriken.
catalog_id STRING Die Katalog-ID der Quelltabelle.
database_name STRING Der Datenbankname der Quelltabelle.
table_name STRING Der Name der Quelltabelle.
ruleset_evaluation_run_id STRING Die ID des Testlaufs.
started_on TIMESTAMP (ZEITSTEMPEL) Wann die Evaluierung gestartet wurde.
completed_on TIMESTAMP (ZEITSTEMPEL) Wenn die Bewertung abgeschlossen ist.
evaluated_rule STRING Der ausgewertete Regelausdruck nach der Operandenauflösung.
ruleset_name STRING Name des Regelsatzes, der dieses Ergebnis erzeugt hat.

Tabelle mit Ergebnissen der Profilerstellung

In der folgenden Tabelle werden die Spalten in der Tabelle mit den Ergebnissen der Profilerstellung beschrieben. In dieser Tabelle werden skalare Statistiken gespeichert, die von Analysatoren und Regeln (wie MeanStandardDeviation, und) erfasst wurden. Completeness AWS Glue Data Quality speichert die Verteilungsstatistiken in einer separaten Tabelle mit den Verteilungsergebnissen.

Spalte Typ Description
profile_id STRING Eindeutiger Bezeichner für das Datenqualitätsprofil.
statistic_id STRING Eindeutiger Bezeichner für die Statistik.
statistic_name STRING Name der Statistik (z. B.,Mean) Completeness
evaluation_level STRING Die Ebene, auf der die Statistik ausgewertet wird: DatasetColumn, oder. Multicolumn
statistics_value DOUBLE Der Skalarwert der Statistik.
statistic_properties LANDKARTE<STRING, STRING> Zusätzliche Eigenschaften der Statistik.
columns_referenced ARRAY <STRING> Die Spalten, auf die in der Statistik verwiesen wird.
referenced_datasets ARRAY <STRING> Referenzierte Datensätze für die Statistik.
column_name STRING Der Name der Zielspalte.
dq_result_id STRING Identifier für das Ergebnis der Datenqualität.
started_on TIMESTAMP (ZEITSTEMPEL) Als die Bewertung begann.
completed_on TIMESTAMP (ZEITSTEMPEL) Wenn die Bewertung abgeschlossen ist.
stored_on TIMESTAMP (ZEITSTEMPEL) Wann der Datensatz in die Tabelle geschrieben wurde.
catalog_id STRING Katalog-ID der Quelltabelle.
database_name STRING Datenbankname der Quelltabelle.
table_name STRING Name der Quelltabelle.
region STRING AWS Region.
account_id STRING AWS Konto-ID.
ruleset_evaluation_run_id STRING Die ID des Testlaufs.

Tabelle mit den Ergebnissen der Verteilung

In der folgenden Tabelle werden die Spalten in der Tabelle mit den Verteilungsergebnissen beschrieben. Die Verteilungsergebnisse werden getrennt von den Statistiken zur skalaren Profilerstellung gespeichert, und zwar mit einer Zeile pro Abschnitt oder Kategorie. Sie können diese Tabelle innerhalb des ProfilingResults.DistributionResults Blocks konfigurieren.

Spalte Typ Description
statistic_id STRING Eindeutiger Bezeichner für die Verteilungsstatistik.
column_name STRING Die Quellspalte (z. B. „Alter“ oder „Abteilung“).
data_type STRING Der Datentyp der Spalte (z. B. "LongType„," StringType „).
num_bins INT Anzahl der für die Verteilung verwendeten Fächer.
bin_index INT Auf 0 basierende Position des Ablagefachs.
bin_label STRING Für kategoriale Spalten: der eindeutige Wert. NULL für numerische Spalten.
bin_lower_bound STRING Für numerische Spalten: der untere Rand des Abschnitts. NULL für kategoriale Spalten.
bin_upper_bound STRING Für numerische Spalten: der obere Rand der Ablage. NULL für kategoriale Spalten.
bin_count BIGINT Anzahl der Häufigkeiten für diesen Abschnitt.
null_count INT Anzahl der NULL-Werte, die von der Verteilung ausgeschlossen wurden. Derselbe Wert in jeder Zeile für eine bestimmte Statistik innerhalb eines Durchlaufs. NULL, wenn keine Nullen vorhanden sind.
tail_count INT Aggregierte Häufigkeit von kategorialen Werten, die über die Top 20 hinausgehen. Derselbe Wert in jeder Zeile für eine bestimmte Statistik innerhalb eines Durchlaufs. NULL für numerische Histogramme.
profile_id STRING Profil-ID.
dq_result_id STRING Kennung des Ergebnisses zur Datenqualität.
ruleset_evaluation_run_id STRING Identifier für den Bewertungslauf.
started_on TIMESTAMP (ZEITSTEMPEL) Wann die Evaluierung gestartet wurde.
completed_on TIMESTAMP (ZEITSTEMPEL) Wenn die Bewertung abgeschlossen ist.
stored_on TIMESTAMP (ZEITSTEMPEL) Wann der Datensatz in die Tabelle geschrieben wurde.
catalog_id STRING Katalog-ID der Quelltabelle.
database_name STRING Datenbankname der Quelltabelle.
table_name STRING Name der Quelltabelle.
region STRING AWS Region.
account_id STRING AWS Konto-ID.

Row-level Tabelle mit Ergebnissen

In der folgenden Tabelle werden die Spalten in der Ergebnistabelle auf Zeilenebene beschrieben. Sie können diese Tabelle verwenden, um die spezifischen Datensätze zu identifizieren, die Ihre Datenqualitätsregeln nicht erfüllt haben.

Spalte Typ Description
Quellspalten Variiert Alle Spalten aus den ursprünglichen Quelldaten.
data_quality_rules_pass REIHE <STRING> Regeln, die für diesen Datensatz bestanden wurden.
data_quality_rules_fail ARRAY <STRING> Regeln, die für diesen Datensatz fehlgeschlagen sind.
data_quality_rules_skip ARRAY <STRING> Regeln, die für diesen Datensatz übersprungen wurden.
data_quality_evaluation_result STRING Das gesamte Bewertungsergebnis für diesen Datensatz: Passed oderFailed.
dq_result_id STRING Eindeutiger Bezeichner für das Datenqualitätsergebnis.
ruleset_evaluation_run_id STRING Die ID des Testlaufs.
started_on TIMESTAMP (ZEITSTEMPEL) Wann die Evaluierung gestartet wurde.
completed_on TIMESTAMP (ZEITSTEMPEL) Wenn die Bewertung abgeschlossen ist.
stored_on TIMESTAMP (ZEITSTEMPEL) Wann der Datensatz in die Tabelle geschrieben wurde.
catalog_id STRING Katalog-ID der Quelltabelle.
database_name STRING Datenbankname der Quelltabelle.
table_name STRING Name der Quelltabelle.
region STRING AWS Region.
account_id STRING AWS Konto-ID.

Tabelle mit den Beobachtungsergebnissen

In der Tabelle mit den Beobachtungsergebnissen werden Vorhersagen zur Erkennung von Anomalien für jede Statistik bei jedem Bewertungslauf gespeichert. Die Tabelle enthält alle Prognoseergebnisse: Anomalien, Normalwerte und übersprungene Vorhersagen. Auf diese Weise können Sie kontinuierliche Trenddiagramme mit Prognosebändern rendern.

Spalte Typ Description
statistic_id STRING Bezeichner für die Statistik, die überwacht wird.
statistic_name STRING Name der überwachten Statistik.
prediction_outcome STRING Das Ergebnis der Anomalieerkennung:ANOMALY,NOT_ANOMALY, oder. SKIPPED
expected_value DOUBLE Der vorhergesagte Erwartungswert. NULL, wenn die Vorhersage übersprungen wird.
lower_bound DOUBLE Die Untergrenze des vorhergesagten Bereichs. NULL, wenn die Vorhersage übersprungen wird.
upper_bound DOUBLE Die Obergrenze des vorhergesagten Bereichs. NULL, wenn die Vorhersage übersprungen wird.
observation_message STRING Eine Beschreibung der Anomalie, falls sie erkannt wurde.
training_input STRING Ob dieser Datenpunkt im Anomalieerkennungsmodell enthalten ist: INCLUDED oder. EXCLUDED
ruleset_evaluation_run_id STRING Die ID des Testlaufs.
recorded_on TIMESTAMP (ZEITSTEMPEL) Wann die Beobachtung aufgezeichnet wurde.
stored_on TIMESTAMP (ZEITSTEMPEL) Als der Datensatz in die Tabelle geschrieben wurde.
actual_value DOUBLE Der tatsächlich beobachtete Wert für die Statistik.
training_status STRING Status des Trainings des Modells zur Erkennung von Anomalien (z. B.PENDING,COMPLETED).
recommended_rules STRING Auf der Grundlage der Vorhersage der Anomalieerkennung empfohlene Regeln.
modified_rules STRING Die Regeln wurden geändert und die Schwellenwerte wurden auf der Grundlage von Vorhersagen aktualisiert.
catalog_id STRING Katalog-ID der Quelltabelle.
database_name STRING Datenbankname der Quelltabelle.
table_name STRING Name der Quelltabelle.
Anmerkung

Die Tabelle mit den Beobachtungsergebnissen verwendet ein Schreibmodell, das nur zum Anhängen verwendet wird. Wenn Sie einen Datenpunkt mithilfe der BatchPutDataQualityStatisticAnnotation API ausschließen, wird eine neue Zeile mit training_input set to angehängt. EXCLUDED Um den neuesten Status jeder Beobachtung abzufragen, verwenden Sie den stored_on Zeitstempel, um die neueste Zeile für jede Kombination aus Statistik und Rechenlauf zu identifizieren.

Anmerkung

In dieser Tabelle werden auch Verteilungsüberlaufbeobachtungen gespeichert, die generiert werden, wenn mehr als 2% der Werte außerhalb der Grenzen der eingefrorenen Abschnitte liegen. Diese Zeilen haben statistic_name = 'Distribution' und sind prediction_outcome NULL. Das observation_message Feld enthält die Beschreibung des Überlaufs.

Ergebnisse abfragen mit

Nach Abschluss der Bewertung der Datenqualität können Sie die Ergebnistabellen direkt mit abfragen. Die folgenden Beispiele veranschaulichen gängige Abfragemuster.

Beispiel: Finden Sie fehlgeschlagene Regeln für einen bestimmten Lauf

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;

Beispiel: Profilstatistiken im Zeitverlauf anzeigen

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;

Beispiel — Identifizieren Sie Zeilen, die eine bestimmte Regel nicht erfüllt haben

SELECT * FROM quality_results.row_level_results WHERE data_quality_evaluation_result = 'Failed' AND contains(data_quality_rules_fail, 'IsComplete "email"');

Beispiel — Zeigen Sie ein numerisches Histogramm an

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;

Beispiel — Eine kategoriale Wertverteilung anzeigen

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;

Beispiel — Verfolgen Sie die Häufigkeit von Kategorien im Zeitverlauf

SELECT started_on, bin_count FROM quality_results.distributions WHERE column_name = 'status' AND bin_label = 'active' ORDER BY started_on;

Beispiel: Lassen Sie sich Trends bei der Erkennung von Anomalien anhand von Prognosebändern anzeigen

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;

Beispiel — Fragt den neuesten Beobachtungsstatus nach Anmerkungen ab

Da in der Tabelle mit den Beobachtungsergebnissen ein Modell verwendet wird, das nur zum Anhängen dient, werden durch Ausschlussanmerkungen neue Zeilen hinzugefügt. Verwenden Sie eine Deduplizierungsabfrage, um den neuesten Status für jede Beobachtung abzurufen:

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;

Überlegungen

Beachten Sie beim Schreiben von Datenqualitätsergebnissen in Datenkatalogtabellen die folgenden Überlegungen:

  • AWS Glue Data Quality speichert Ergebnisse im Apache Iceberg-Format, das effiziente Abfragen von Zeitreisen und das Bereinigen von Partitionen unterstützt.

  • In einer einzelnen Ergebnistabelle können Ergebnisse aus mehreren Quelltabellen gespeichert werden. Verwenden Sie die table_name Partitionsspalten catalog_iddatabase_name, und, um Ergebnisse nach einer bestimmten Quelle zu filtern.

  • AWS Glue Data Quality schreibt die Beobachtungsergebnisse asynchron, nachdem der Bewertungslauf abgeschlossen ist. Es kann eine kurze Verzögerung geben, bis die Beobachtungen in der Tabelle erscheinen.

  • Für Verteilungsstatistiken in der Tabelle mit den Verteilungsergebnissen wird jeder Abschnitt oder jede Kategorie als separate Zeile gespeichert. Beispielsweise generiert ein Histogramm mit 20 Abschnitten 20 Zeilen in der Tabelle für diese Statistik.