Datenqualität – Übersicht

In diesem Dokument wird die automatische Datenqualität von Dataplex beschrieben, mit der Sie die Qualität Ihrer Daten definieren und messen können. Sie können das Scannen von Daten automatisieren, Daten anhand definierter Regeln validieren und Benachrichtigungen protokollieren, wenn Ihre Daten die Qualitätsanforderungen nicht erfüllen. Sie können Datenqualitätsregeln und Bereitstellungen als Code verwalten und so die Integrität von Pipelines zur Datenproduktion verbessern.

Sie können mit den Empfehlungen für Regelempfehlungen für die Dataplex-Datenprofilerstellung beginnen oder benutzerdefinierte Regeln in der Google Cloud Console erstellen. Dataplex bietet Monitoring, Fehlerbehebung und Cloud Logging-Benachrichtigungen, die in die automatische Datenqualität von Dataplex eingebunden sind.

Konzeptionelles Modell

Bei einem Datenqualitätsscan werden Qualitätsregeln auf Tabellendaten angewendet, um Ergebnisse zu melden.

Ein Datenscan ist ein Dataplex-Job, der Daten aus BigQuery und Cloud Storage als Stichproben erfasst und verschiedene Arten von Metadaten ableitet. Wenn Sie die Qualität einer Tabelle mithilfe der automatischen Datenqualität messen möchten, erstellen Sie ein DataScan-Objekt vom Typ data quality. Der Scan wird nur für eine BigQuery-Tabelle ausgeführt. Der Scan verwendet Ressourcen in einem Mandantenprojekt von Google, sodass Sie keine eigene Infrastruktur einrichten müssen.

Das Erstellen und Verwenden eines Datenqualitätsscans umfasst die folgenden Schritte:

  1. Datenqualitätsregeln definieren
  2. Regelausführung konfigurieren
  3. Ergebnisse des Datenqualitätsscans analysieren
  4. Monitoring und Benachrichtigungen einrichten
  5. Probleme mit der Datenqualität beheben

Regeldefinition

Mit Datenqualitätsregeln, die mit einem Datenqualitätsscan verknüpft sind, werden die Datenerwartungen definiert. Sie können Regeln für die Datenqualität auf folgende Arten erstellen:

Vordefinierte Regeln

Dataplex unterstützt zwei Kategorien vordefinierter Regeln: auf Zeilenebene oder aggregiert.

Zeilenebene

Bei Kategorieregeln auf Zeilenebene wird die Erwartung auf jede Datenzeile angewendet. Jede Zeile erfüllt oder erfüllt die Bedingung unabhängig davon. Beispiel: column_A_value < 1.

Bei Prüfungen auf Zeilenebene müssen Sie einen Grenzwert für die bestandene Prüfung angeben. Wenn der Prozentsatz der Zeilen, die die Regel erfüllen, unter den Grenzwert fällt, schlägt die Regel fehl.

Aggregieren

Bei Aggregatregeln wird die Erwartung auf einen einzelnen Wert angewendet, der über die gesamten Daten aggregiert wird. Beispiel: Avg(someCol) >= 10 Die Prüfung muss den booleschen Wert true ergeben, um die Prüfung zu bestehen. Aggregierte Regeln liefern keine unabhängige Anzahl von bestandenen oder nicht bestandenen Prüfungen für jede Zeile.

Für beide Regelkategorien können Sie die folgenden Parameter festlegen:

  • Die Spalte, für die die Regel gilt.
  • Eine Dimension aus einer Gruppe vordefinierter Dimensionen.

In der folgenden Tabelle sind die unterstützten Regeltypen auf Zeilenebene und für Aggregatregeln aufgeführt:

Regeltyp
(Name in der Google Cloud Console)
Zeilen- oder Aggregatregel Beschreibung Unterstützte Spaltentypen Regelspezifische Parameter
RangeExpectation
(Bereichsprüfung)
Zeilenebene Prüfen Sie, ob der Wert zwischen dem Mindest- und Höchstwert liegt. Alle numerischen Spalten, Datums- und Zeitstempelspalten. Erforderlich:
  • Prozentsatz für Bestanden
  • mean-, min- oder max-Werte: Geben Sie mindestens einen Wert an.
Optional:
  • strict min aktivieren: Wenn diese Option aktiviert ist, verwendet die Regelprüfung ">" statt ">=".
  • strict max aktivieren: Wenn diese Option aktiviert ist, wird bei der Regelprüfung „<“ statt „<=“ verwendet.
  • ignore null aktivieren: Wenn diese Option aktiviert ist, werden Nullwerte bei der Regelprüfung ignoriert.
NonNullExpectation
(Nullprüfung)
Zeilenebene Validiert, dass Spaltenwerte nicht NULL sind. Alle unterstützten Spaltentypen. Erforderlich:
  • Prozentsatz für bestandene Mindesteinnahmen.
SetExpectation
(Bestätigung festlegen)
Zeilenebene Überprüfen Sie, ob die Werte in einer Spalte einem der angegebenen Werte in einem Satz entsprechen. Alle unterstützten Spaltentypen außer Record und Struct. Erforderlich:
  • Satz der Stringwerte, die geprüft werden sollen.
  • Prozentsatz für bestandene Mindesteinnahmen.
Optional:
  • ignore null aktivieren: Wenn diese Option aktiviert ist, werden Nullwerte bei der Regelprüfung ignoriert.
RegexExpectation
(Überprüfung regulärer Ausdrücke)
Zeilenebene Überprüfen Sie die Werte mit einem angegebenen regulären Ausdruck. String Erforderlich:
  • Muster für reguläre Ausdrücke zur Überprüfung.
  • Prozentsatz für bestandene Mindesteinnahmen.
  • Hinweis: Google Standard-SQL unterstützt reguläre Ausdrücke mithilfe der re2. In der jeweiligen Dokumentation finden Sie weitere Informationen zur Syntax von regulären Ausdrücken.
Optional:
  • ignore null aktivieren: Wenn diese Option aktiviert ist, werden Nullwerte bei der Regelprüfung ignoriert.
Uniqueness
(Eindeutigkeitsprüfung)
Aggregieren Prüfen Sie, ob alle Werte in einer Spalte eindeutig sind. Alle unterstützten Spaltentypen außer Record und Struct. Erforderlich:
  • Spalte und Dimension aus den unterstützten Parametern.
Optional:
  • ignore null aktivieren: Wenn diese Option aktiviert ist, werden Nullwerte bei der Regelprüfung ignoriert.
StatisticRangeExpectation
(Statistikprüfung)
Aggregieren Überprüfen Sie, ob das angegebene statistische Maß mit der Bereichserwartung übereinstimmt. Alle unterstützten numerischen Spaltentypen. Erforderlich:
  • Werte für mean, min oder max: Geben Sie mindestens einen Wert an.
Optional:
  • strict min aktivieren: Wenn diese Option aktiviert ist, verwendet die Regelprüfung ">" statt ">=".
  • strict max aktivieren: Wenn diese Option aktiviert ist, wird bei der Regelprüfung „<“ statt „<=“ verwendet.

Unterstützte benutzerdefinierte SQL-Regeltypen

SQL-Regeln bieten Flexibilität, um die Validierung mit benutzerdefinierter Logik zu erweitern. Diese Regeln gibt es in den folgenden Typen.

Regeltyp Zeilen- oder Aggregatregel Beschreibung Unterstützte Spaltentypen Regelspezifische Parameter Beispiel
Zeilenbedingung Zeilenebene

Geben Sie für jede Zeile eine Erwartung an, indem Sie einen SQL-Ausdruck in einer WHERE-Klausel definieren. Der SQL-Ausdruck sollte true (bestanden) oder false (fehlgeschlagen) pro Zeile ergeben. Dataplex berechnet den Prozentsatz der Zeilen, die diese Erwartung erfüllen, und vergleicht diesen Wert mit dem Prozentsatz für den bestandenen Schwellenwert, um festzustellen, ob die Regel erfolgreich oder nicht erfolgreich ist.

Der Ausdruck kann einen Verweis auf eine andere Tabelle enthalten, um beispielsweise referenzielle Integritätsprüfungen zu erstellen.

Alle Spalten Erforderlich:
  • Zu verwendende SQL-Bedingung
  • Prozentsatz für Bestanden
  • Dimension
Optional:
  • Spalte, mit der diese Regel verknüpft werden soll.
grossWeight <= netWeight
Tabellenbedingung
(aggregierter SQL-Ausdruck)
Aggregieren

Diese Regeln werden einmal pro Tabelle ausgeführt. Geben Sie einen SQL-Ausdruck an, der als boolescher Wert true (bestanden) oder false (fehlgeschlagen) ausgewertet wird.

Der SQL-Ausdruck kann mithilfe von Ausdruck-Unterabfragen einen Verweis auf eine andere Tabelle enthalten.

Alle Spalten Erforderlich:
  • Zu verwendende SQL-Bedingung
  • Dimension
Optional:
  • Spalte, mit der diese Regel verknüpft werden soll

Beispiel für eine einfache Aggregation:
avg(price) > 100

Verwenden einer Ausdruck-Unterabfrage, um Werte über eine andere Tabelle hinweg zu vergleichen:
(SELECT COUNT(*) FROM `example_project.example_dataset.different-table`) < COUNT(*)

SQL-Assertion Aggregieren

Eine Assertion-Regel verwendet eine Datenqualitätsabfrage, um Zeilen zu finden, die eine oder mehrere in der Abfrage angegebene Bedingungen nicht erfüllen. Geben Sie eine SQL-Anweisung an, die ausgewertet wird, um Zeilen zurückzugeben, die dem ungültigen Status entsprechen. Wenn die Abfrage Zeilen zurückgibt, schlägt die Regel fehl.

Lassen Sie das nachgestellte Semikolon aus der SQL-Anweisung weg.

Die SQL-Anweisung kann mithilfe von Ausdruck-Unterabfragen einen Verweis auf eine andere Tabelle enthalten.

Alle Spalten Erforderlich:
  • SQL-Anweisung zum Prüfen des ungültigen Status
  • Dimension
Optional:
  • Spalte, mit der diese Regel verknüpft werden soll.

Beispiel für eine einfache Aggregation, in der discount_pct nicht größer als 100 ist:
SELECT * FROM example_project.example_dataset.table WHERE discount_pct > 100

Verwenden einer Ausdruck-Unterabfrage, um Werte über eine andere Tabelle hinweg zu vergleichen:
SELECT * FROM `example_project.example_dataset.different-table` WHERE gross_weight > (SELECT avg(gross_weight) FROM `example_project.example_dataset.different-table`)

Beispielregeln finden Sie unter Beispielregeln für die automatische Datenqualität.

Informationen zu unterstützten SQL-Funktionen finden Sie in der GoogleSQL-Referenz.

Dimensionen

Mit Dimensionen können Sie die Ergebnisse mehrerer Datenqualitätsregeln für Monitoring und Benachrichtigungen aggregieren. Sie müssen jede Datenqualitätsregel einer Dimension zuordnen. Dataplex unterstützt die folgenden Dimensionen:

  • Aktualität
  • Volumen
  • Vollständigkeit
  • Gültigkeit
  • Konsistenz
  • Genauigkeit
  • Eindeutigkeit

Eingabe in Regeln

Alle Wertparameter werden als Stringwerte an die API übergeben. Dataplex erfordert Eingaben, die dem von BigQuery angegebenen Format entsprechen.

Parameter des Binärtyps können als Base64-codierter String übergeben werden.

Typ Unterstützte Formate Beispiele
Binär Base64-codierter Wert YXBwbGU=
Zeitstempel JJJJ-[M]M-[D]T[( |T)[H]H:[M]M:[S]S[.F]] [Zeitzone]
ODER JJJJ-[M-M-[D]T[( |T)[H]H:[M]M:[S]S[.F]][time_zone_offset]
27.09.2014 12:30:00.45-08
Datum JJJJ-M[M]-T[T] 2014-09-27
Zeit [H]H:[M]M:[S]S[.DDDDDD] 12:30:00,45
DateTime JJJJ-[M]M-[D]D [[H]H:[M]M:[S]S[.DDDDDD]] 27.09.2014 12:30:00.45

Datenreferenzparameter

Wenn Sie eine benutzerdefinierte SQL-Regel erstellen, können Sie mithilfe des Datenreferenzparameters ${data()} in der Regel auf eine Datenquellentabelle und alle ihre Vorbedingungsfilter verweisen, anstatt explizit die Quelltabelle und ihre Filter anzugeben. Dataplex interpretiert den Parameter als Verweis auf die Quelltabelle und ihre Filter. Beispiele für Vorbedingungsfilter sind Zeilenfilter, prozentuale Stichproben und inkrementelle Filter.

Angenommen, Sie haben eine Datenquellentabelle mit dem Namen my_project_id.dim_dataset.dim_currency. Sie möchten einen inkrementellen Datenqualitätsscan ausführen, der nur neue tägliche Daten durchsucht. Auf die Tabelle wird der Zeilenfilter transaction_timestamp >= current_date() angewendet, der nach den heutigen Einträgen filtert.

Eine benutzerdefinierte SQL-Regel zum Suchen von Zeilen mit discount_pct für heute sieht so aus:

discount_pct IN (SELECT discount_pct FROM my_project_id.dim_dataset.dim_currency WHERE transaction_timestamp >= current_date())

Wenn Sie den Parameter „Datenverweis“ verwenden, können Sie die Regel vereinfachen. Ersetzen Sie die Erwähnung der Tabelle und ihrer Vorbedingungsfilter durch den Parameter ${data()}:

discount_pct IN (SELECT discount_pct FROM ${data()})

Dataplex interpretiert den Parameter ${data()} als Verweis auf die Datenquellentabelle mit den heutigen Einträgen (my_project_id.dim_dataset.dim_currency WHERE transaction_timestamp >= current_date()). In diesem Beispiel bezieht sich der Datenverweisparameter nur auf die inkrementellen Daten.

Beim Parameter ${data()} wird zwischen Groß- und Kleinschreibung unterschieden.

Wenn Sie in einer Unterabfrage einen Alias verwenden, um auf Spalten in der Quelltabelle zu verweisen, verwenden Sie entweder den Datenverweisparameter, um auf die Quelltabelle zu verweisen, oder lassen Sie den Tabellenverweis weg. Verweisen Sie nicht mithilfe eines direkten Tabellenverweises in der WHERE-Klausel auf die Spalten in der Quelltabelle.

Empfohlen:

  • Verwenden Sie den Datenverweisparameter, um auf die Quelltabelle zu verweisen:

    discount_pct IN (
    SELECT discount_pct FROM
    `my_project_id.dim_dataset.dim_currency` AS temp-table
    WHERE
    temp-table.transaction_timestamp = ${data()}.timestamp
    )
    
  • Lassen Sie den Tabellenverweis weg:

    discount_pct IN (
    SELECT discount_pct FROM
    `my_project_id.dim_dataset.dim_currency` AS temp-table
    WHERE
    temp-table.transaction_timestamp = timestamp
    )
    

Nicht empfohlen:

  • Verwenden Sie keinen direkten Tabellenverweis, um auf Spalten in der Quelltabelle zu verweisen:

    discount_pct IN (
    SELECT discount_pct FROM
    `my_project_id.dim_dataset.dim_currency` AS temp-table
    WHERE
    temp-table.transaction_timestamp = `my_project_id.dim_dataset.dim_currency`.timestamp
    )
    

Regelausführung

Sie können Datenqualitätsscans so planen, dass sie in einem bestimmten Intervall ausgeführt werden, oder einen Scan nach Bedarf ausführen. Zum Verwalten von Datenqualitätsscans können Sie die API oder die Google Cloud Console verwenden.

Wenn Sie einen Datenqualitätsscan ausführen, erstellt Dataplex einen Job. Im Rahmen der Spezifikation eines Datenqualitätsscans können Sie einen der folgenden Bereiche eines Jobs festlegen:

Vollständige Tabelle
Jeder Job validiert die gesamte Tabelle.
Inkrementell
Jeder Job validiert inkrementelle Daten. Geben Sie zum Ermitteln der Schritte eine Date / Timestamp-Spalte in der Tabelle an, die als Markierung verwendet werden kann. In der Regel ist dies die Spalte, nach der die Tabelle partitioniert ist.

Daten filtern

Dataplex kann Daten, die auf Datenqualität gescannt werden sollen, mit einem Zeilenfilter filtern. Mit einem Zeilenfilter können Sie sich auf Daten innerhalb eines bestimmten Zeitraums oder eines bestimmten Segments konzentrieren, z. B. einer bestimmten Region. Die Verwendung von Filtern kann die Ausführungszeit und die Kosten reduzieren, z. B. durch das Herausfiltern von Daten mit einem Zeitstempel vor einem bestimmten Datum.

Beispieldaten

Mit Dataplex können Sie einen Prozentsatz der Datensätze Ihrer Daten angeben, die zum Ausführen eines Datenqualitätsscans als Stichproben erfasst werden sollen. Das Erstellen von Datenqualitätsscans für eine kleinere Stichprobe von Daten kann die Ausführungszeit und die Kosten für die Abfrage des gesamten Datasets reduzieren.

Ergebnisse des Datenqualitätsscans

Die Ergebnisse Ihrer Datenqualitätsscans sind in Dataplex verfügbar. Sie können die Scanergebnisse auch mit den folgenden Methoden überprüfen und analysieren:

  • Ergebnisse nach BigQuery exportieren

    Sie können die Scanergebnisse zur weiteren Analyse in eine BigQuery-Tabelle exportieren. Um die Berichterstellung anzupassen, können Sie die BigQuery-Tabellendaten mit einem Looker-Dashboard verbinden. Sie können einen aggregierten Bericht erstellen, indem Sie dieselbe Ergebnistabelle für mehrere Scans verwenden.

  • Ergebnisse in der Google Cloud Console veröffentlichen

    Sie können die Ergebnisse des Datenqualitätsscans auf den BigQuery- und Data Catalog-Seiten der Quelltabelle in der Google Cloud Console veröffentlichen. Die letzten Scanergebnisse finden Sie auf dem Tab Datenqualität für die Quelltabelle.

  • Datenqualitätswerte überprüfen

    Jedes Scanergebnis enthält Datenqualitätswerte, die den Prozentsatz der bestandenen Regeln angeben. Die Punktzahlen werden auf Gesamtjobebene, auf Spaltenebene (wenn die Regel anhand einer Spalte ausgewertet wird) und auf Dimensionsebene gemeldet. Verwenden Sie die Datenqualitätswerte, um die Datenqualität über Tabellen oder Spalten hinweg zu normalisieren, Trends zu verfolgen und Daten zu ermitteln, die die Qualitätsanforderungen nicht erfüllen.

Weitere Informationen finden Sie unter Ergebnisse des Datenqualitätsscans ansehen.

Monitoring und Benachrichtigungen

Mit den folgenden Methoden können Sie Datenqualitätsscans überwachen und Benachrichtigungen dazu erhalten:

  • Benachrichtigungen in Cloud Logging festlegen

    Sie können die Datenqualitätsjobs mit den Logs data_scan und data_quality_scan_rule_result im Log-Explorer überwachen.

    Für jeden Datenqualitätsjob enthält das Log data_scan, bei dem das Feld data_scan_type auf DATA_QUALITY gesetzt ist, die folgenden Informationen:

    • Für den Datenscan verwendete Datenquelle.
    • Details zur Jobausführung wie Erstellungszeit, Startzeit, Endzeit und Jobstatus.
    • Ergebnis des Datenqualitätsjobs: bestanden oder nicht bestanden.
    • Auf Dimensionsebene wurde bestanden oder nicht bestanden.

    Jeder erfolgreiche Job enthält ein data_quality_scan_rule_result-Log mit den folgenden detaillierten Informationen zu jeder Regel in diesem Job:

    • Konfigurationsinformationen wie Regelname, Regeltyp, Bewertungstyp und Dimension
    • Ergebnisinformationen wie bestanden oder nicht bestanden, Gesamtzahl der Zeilen, Anzahl der bestandenen Zeilen, Nullzeilenanzahl und Anzahl der ausgewerteten Zeilen.

    Die Informationen in den Logs sind über die API und die Google Cloud Console verfügbar. Anhand dieser Informationen können Sie Benachrichtigungen einrichten. Weitere Informationen finden Sie unter Benachrichtigungen in Logging festlegen.

  • E-Mail-Benachrichtigungen senden

    Sie können E-Mail-Benachrichtigungen senden, um andere über den Status und die Ergebnisse eines Datenqualitätsjobs zu informieren. Benachrichtigungen sind für die folgenden Szenarien verfügbar:

    • Der Datenqualitätsfaktor ist niedriger als ein angegebener Zielwert.
    • Der Job ist fehlgeschlagen
    • Der Job wurde abgeschlossen

    Sie konfigurieren Benachrichtigungen, wenn Sie einen Datenqualitätsscan erstellen.

Probleme mit der Datenqualität beheben

Wenn eine Regel fehlschlägt, erstellt Dataplex eine Abfrage, um die fehlerhaften Einträge abzurufen. Führen Sie diese Abfrage aus, um die Datensätze anzuzeigen, die nicht mit Ihrer Regel übereinstimmen. Weitere Informationen finden Sie unter Probleme mit der Datenqualität beheben.

Beschränkungen

  • Die Ergebnisse des Datenqualitätsscans werden nicht als Tags in Data Catalog veröffentlicht.
  • Regelempfehlungen werden in der gcloud CLI nicht unterstützt.
  • Die Auswahl der Dimensionen wird auf eine der vordefinierten sieben Dimensionen festgelegt.
  • Die Anzahl der Regeln pro Datenqualitätsscan ist auf 1.000 begrenzt.
  • E-Mail-Benachrichtigungen werden nur in der gcloud CLI und API unterstützt.
  • Datenqualitätswerte, die auf Spaltenebene gemeldet werden, werden nur in der API unterstützt.

Preise

  • Dataplex verwendet die Premium-Verarbeitungs-SKU, um Gebühren für die automatische Datenqualität zu berechnen. Weitere Informationen finden Sie unter Dataplex-Preise.

  • Das Veröffentlichen von Ergebnissen der automatischen Datenqualität im Katalog ist noch nicht möglich. Wenn sie verfügbar ist, wird es zum selben Preis wie für den Metadatenspeicher von Katalogen abgerechnet. Weitere Informationen finden Sie unter Preise.

  • Die Dataplex-Premiumverarbeitung für die automatische Datenqualität wird pro Sekunde mit einem Minimum von einer Minute abgerechnet.

  • Fehlgeschlagene Datenqualitätsscans werden nicht berechnet.

  • Die Kosten hängen von der Anzahl der Zeilen, der Anzahl der Spalten, der gescannten Datenmenge, der Konfiguration der Datenqualitätsregel, den Partitionierungs- und Clustering-Einstellungen der Tabelle sowie der Häufigkeit des Gscans ab.

  • Es gibt mehrere Möglichkeiten, die Kosten für automatische Datenqualitätsscans zu reduzieren:

  • Trennen Sie die Gebühren für die Datenqualität von anderen Gebühren in der Dataplex-Premium-Verarbeitungs-SKU, verwenden Sie das Label goog-dataplex-workload-type mit dem Wert DATA_QUALITY.

  • Sie können zusammengefasste Gebühren filtern. Verwenden Sie die folgenden Labels:

    • goog-dataplex-datascan-data-source-dataplex-entity
    • goog-dataplex-datascan-data-source-dataplex-lake
    • goog-dataplex-datascan-data-source-dataplex-zone
    • goog-dataplex-datascan-data-source-project
    • goog-dataplex-datascan-data-source-region
    • goog-dataplex-datascan-id
    • goog-dataplex-datascan-job-id

Nächste Schritte