Automatische 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 von definierten Regeln validieren sowie Log-Benachrichtigungen senden, 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 Datenproduktionspipelines verbessern.

Sie können mit 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.

Konzeptmodell

Bei einem Datenqualitätsscan werden Qualitätsregeln auf Tabellendaten angewendet, um Berichtsergebnisse zu erhalten.

Ein Datenscan ist ein Dataplex-Job, mit dem Daten aus BigQuery und Cloud Storage genommen und verschiedene Arten von Metadaten abgeleitet werden. Um die Qualität einer Tabelle mithilfe der automatischen Datenqualität zu messen, 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. Regeldefinition
  2. Regelausführung
  3. Monitoring und Benachrichtigungen
  4. Fehlerbehebung

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 auf aggregierten Regeln.

Zeilenebene

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

Für Prüfungen auf Zeilenebene muss ein Grenzwert angegeben werden, der bestanden wurde. Wenn der Prozentsatz der Zeilen, die die Regel passieren, 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. Aggregatregeln geben keine unabhängige Anzahl von Karten/Tickets für jede Zeile an.

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

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

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

Regeltyp
(Name in der Google Cloud Console)
Regel auf Zeilenebene oder Aggregatregel Beschreibung Unterstützte Spaltentypen Regelspezifische Parameter
RangeExpectation
(Bereichsprüfung)
Zeilenebene Prüfe, ob der Wert zwischen dem Mindest- und dem Höchstwert liegt. Alle Spalten vom Typ „numerisch“, „Datum“ und „Zeitstempel“. Erforderlich:
  • Prozentsatz des bestandenen Grenzwerts
  • Werte für mean, min oder max: Geben Sie mindestens einen Wert an.
Optional:
  • strict min aktivieren: Wenn diese Option aktiviert ist, wird bei der Regelprüfung ">" anstelle von ">=" verwendet.
  • strict max aktivieren: Wenn diese Option aktiviert ist, verwendet die Regelprüfung „<“ statt „<=“.
  • ignore null aktivieren: Wenn diese Option aktiviert ist, werden Nullwerte bei der Regelprüfung ignoriert.
NonNullExpectation
(Nullprüfung)
Zeilenebene Prüfen Sie, ob die Spaltenwerte nicht NULL sind. Alle unterstützten Spaltentypen. Erforderlich:
  • Prozentsatz des bestandenen Grenzwerts.
SetExpectation
(Vorabprüfung festlegen)
Zeilenebene Prüfen Sie, ob die Werte in einer Spalte zu den angegebenen Werten in einer Menge gehören. Alle unterstützten Spaltentypen außer Record und Struct. Erforderlich:
  • Satz von Stringwerten, die geprüft werden sollen.
  • Prozentsatz des bestandenen Grenzwerts.
Optional:
  • ignore null aktivieren: Wenn diese Option aktiviert ist, werden Nullwerte bei der Regelprüfung ignoriert.
RegexExpectation
(Prüfung regulärer Ausdrücke)
Zeilenebene Vergleicht die Werte mit einem bestimmten regulären Ausdruck. String Erforderlich:
  • Zur Überprüfung verwendetes Muster für reguläre Ausdrücke.
  • Prozentsatz des bestandenen Grenzwerts.
  • Hinweis: Google Standard-SQL unterstützt reguläre Ausdrücke mithilfe der re2. In der zugehörigen Dokumentation finden Sie weitere Informationen zur Syntax der regulären Ausdrücke.
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 Prüfen Sie, ob das angegebene statistische Messwert der erwarteten Bereichserwartung entspricht. 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, wird bei der Regelprüfung ">" anstelle von ">=" verwendet.
  • strict max aktivieren: Wenn diese Option aktiviert ist, verwendet die Regelprüfung „<“ statt „<=“.

Unterstützte benutzerdefinierte SQL-Regeltypen

SQL-Regeln bieten Flexibilität, um die Validierung um benutzerdefinierte Logik zu erweitern. Es gibt folgende Arten von Regeln:

Regeltyp Regel auf Zeilenebene oder Aggregatregel Beschreibung Unterstützte Spaltentypen Regelspezifische Parameter Beispiel
Zeilenbedingung Zeilenebene

Geben Sie eine Erwartung für jede Zeile an, indem Sie einen SQL-Ausdruck in einer WHERE-Klausel definieren. Der SQL-Ausdruck muss pro Zeile true (bestanden) oder false (fehlgeschlagen) ergeben. Dataplex berechnet den Prozentsatz der Zeilen, die diese Erwartungen erfüllen, und vergleicht diesen Wert mit dem Prozentsatz des bestandenen Grenzwerts, um den Erfolg oder Misserfolg der Regel zu bestimmen.

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

Alle Spalten Erforderlich:
  • Zu verwendende SQL-Bedingung
  • Prozentsatz des bestandenen Grenzwerts
  • Dimension
Optional:
  • Spalte, mit der diese Regel verknüpft werden soll.
grossWeight <= netWeight
Aggregat-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 Aggregatfunktion:
avg(price) > 100

Mit einer Ausdruck-Unterabfrage Werte in einer anderen Tabelle 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 so ausgewertet wird, dass sie Zeilen zurückgibt, die dem ungültigen Status entsprechen. Wenn die Abfrage Zeilen zurückgibt, schlägt die Regel fehl.

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

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

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

Einfaches Beispiel für eine Aggregation, um dafür zu sorgen, dass discount_pct nicht größer als 100 ist:
SELECT * FROM example_project.example_dataset.table WHERE discount_pct > 100

Mit einer Ausdruck-Unterabfrage Werte in einer anderen Tabelle 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

Mithilfe von Dimensionen können Sie die Ergebnisse mehrerer Datenqualitätsregeln für Überwachung und Benachrichtigung 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, dass Eingaben dem in BigQuery angegebenen Format entsprechen.

Binäre Parameter können als base64-codierte Zeichenfolge übergeben werden.

Typ Unterstützte Formate Beispiele
Binär Base64-codierter Wert YXBwbGU=
Zeitstempel JJJJ-[M]M-[T]T[( |T)[H]H:[M]M:[S]S[.F]] [Zeitzone]
ODER JJJJ-[M]M-[T]T[( |T)[H]H:[M]M:[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]T [[H]H:[M]M:[S]S[.TTTTTT]] 27.09.2014 12:30:00.45

Datenreferenzparameter

Wenn Sie eine benutzerdefinierte SQL-Regel erstellen, können Sie mit dem Datenreferenzparameter ${data()} in der Regel auf eine Datenquellentabelle und alle zugehörigen Vorbedingungsfilter verweisen, anstatt die Quelltabelle und ihre Filter explizit zu erwähnen. Beispiele für Vorbedingungsfilter sind Zeilenfilter, Stichprobenprozentsatz und inkrementelle Filter. Beim Parameter ${data()} wird zwischen Groß- und Kleinschreibung unterschieden.

Angenommen, Sie haben eine Datenquellentabelle namens my_project_id.dim_dataset.dim_currency. Sie möchten einen inkrementellen Datenqualitätsscan ausführen, der nur neue tägliche Daten scannt. Auf die Tabelle wird ein Zeilenfilter angewendet, der nach den heutigen Einträgen transaction_timestamp >= current_date() 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 Datenreferenzparameter verwenden, können Sie die Regel vereinfachen:

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

Der Parameter ${data()} in diesem Beispiel bezieht sich 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 Datenreferenzparameter nur auf die inkrementellen Daten.

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

Empfohlen:

  • Verwenden Sie den Datenreferenzparameter:

    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 die Tabellenreferenz 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:

    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 bei Bedarf einen Scan 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 als Umfang eines Jobs angeben:

Kompletter Tisch
Bei jedem Job wird die gesamte Tabelle validiert.
Inkrementell
Bei jedem Job werden inkrementelle Daten validiert. Geben Sie zum Ermitteln von Intervallen eine Date- oder 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, mithilfe eines Zeilenfilters filtern. Wenn Sie einen Zeilenfilter erstellen, können Sie sich auf Daten in einem bestimmten Zeitraum oder Segment konzentrieren, z. B. in einer Region. Die Verwendung von Filtern kann die Ausführungszeit und -kosten reduzieren, z. B. das Herausfiltern von Daten mit einem Zeitstempel vor einem bestimmten Datum.

Beispieldaten

Mit Dataplex können Sie einen Prozentsatz der Datensätze aus Ihren Daten angeben, die zum Ausführen eines Datenqualitätsscans verwendet werden sollen. Das Erstellen von Datenqualitätsscans für eine kleinere Stichprobe an Daten kann die Ausführungszeit und die Kosten für das Abfragen des gesamten Datasets reduzieren.

Monitoring und Benachrichtigungen

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.

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, Beginn, Ende und Jobstatus.
  • Ergebnis des Datenqualitätsjobs: bestanden oder nicht bestanden.
  • Die Dimensionsebene hat die Prüfung 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, Auswertungstyp und Dimension.
  • Ergebnisinformationen wie bestandene oder fehlgeschlagene Zeilen, Gesamtzahl der Zeilen, Anzahl der übergebenen Zeilen, Anzahl der Nullzeilen 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 Cloud Logging einrichten.

Fehler beheben

Wenn eine Regel fehlschlägt, erstellt Dataplex eine Abfrage, die alle Spalten der Tabelle zurückgibt (nicht nur die fehlgeschlagene Spalte).

Beschränkungen

  • Die Ergebnisse des Datenqualitätsscans werden nicht als Tags in Data Catalog veröffentlicht.
  • Regelempfehlungen werden nur in der Google Cloud Console 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.

Preise

  • Dataplex verwendet die Premium-Verarbeitungs-SKU, um die automatische Datenqualität in Rechnung zu stellen. Weitere Informationen finden Sie unter Dataplex-Preise.

  • Das Veröffentlichen von Ergebnissen für die automatische Datenqualität in Catalog ist noch nicht verfügbar. Sobald sie verfügbar ist, wird der gleiche Preis wie für das Speichern von Katalogmetadaten berechnet. Weitere Informationen finden Sie unter Preise.

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

  • Für fehlgeschlagene Datenqualitätsscans fallen keine Gebühren an.

  • Die Kosten hängen von der Anzahl der Zeilen, der Anzahl der Spalten, der Menge der gescannten Daten, der Konfiguration der Datenqualitätsregel, der Partitionierungs- und Clustering-Einstellungen für die Tabelle und 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-SKU für die Premiumverarbeitung und verwenden Sie das Label goog-dataplex-workload-type mit dem Wert DATA_QUALITY.

  • Gesamtgebü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