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
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:
- Regeldefinition
- Regelausführung
- Monitoring und Benachrichtigungen
- 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:
- Empfehlungen der Dataplex-Datenprofilerstellung verwenden
- Vordefinierte Regeln verwenden
- Benutzerdefinierte SQL-Regeln 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 Werttrue
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:
|
NonNullExpectation (Nullprüfung) |
Zeilenebene | Prüfen Sie, ob die Spaltenwerte nicht NULL sind. | Alle unterstützten Spaltentypen. | Erforderlich:
|
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:
|
RegexExpectation (Prüfung regulärer Ausdrücke) |
Zeilenebene | Vergleicht die Werte mit einem bestimmten regulären Ausdruck. | String | Erforderlich:
|
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:
|
StatisticRangeExpectation (Statistikprüfung) |
Aggregieren | Prüfen Sie, ob das angegebene statistische Messwert der erwarteten Bereichserwartung entspricht. | Alle unterstützten numerischen Spaltentypen. | Erforderlich:
|
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 Der Ausdruck kann einen Verweis auf eine andere Tabelle enthalten, beispielsweise um referenzielle Integritätsprüfungen zu erstellen. |
Alle Spalten | Erforderlich:
|
grossWeight <= netWeight |
Aggregat-SQL-Ausdruck | Aggregieren | Diese Regeln werden einmal pro Tabelle ausgeführt. Geben Sie einen SQL-Ausdruck an, der als boolescher Wert Der SQL-Ausdruck kann mithilfe von Ausdruck-Unterabfragen einen Verweis auf eine andere Tabelle enthalten. |
Alle Spalten | Erforderlich:
|
Beispiel für eine einfache Aggregatfunktion: Mit einer Ausdruck-Unterabfrage Werte in einer anderen Tabelle vergleichen: |
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:
|
Einfaches Beispiel für eine Aggregation, um dafür zu sorgen, dass Mit einer Ausdruck-Unterabfrage Werte in einer anderen Tabelle vergleichen: |
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
- oderTimestamp
-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 WertDATA_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
- Informationen zur Verwendung der automatischen Datenqualität.
- Datenprofilerstellung
- Datenprofilerstellung verwenden