Datenqualität profilieren und validieren
Mit Knowledge Catalog (ehemals Dataplex Universal Catalog) können Sie BigQuery-Tabellen profilieren, um Statistiken auf Spaltenebene zu berechnen, z. B. Prozentsätze von Nullwerten, Anzahl eindeutiger Werte und Werteverteilungen. Anhand dieser Informationen können Sie dann Regeln für die Datenqualität definieren und Ihre Datensätze auf Anomalien prüfen.
In dieser Kurzanleitung füllen Sie eine BigQuery-Tabelle mit absichtlichen Anomalien, führen einen Datenprofilscan aus und werten die Ergebnisse mit einem Datenqualitätsscan aus. Weitere Informationen finden Sie unter Datenprofilerstellung und Automatische Datenqualität.
Hinweis
So richten Sie Ihr Projekt ein:
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Knowledge Catalog and BigQuery APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen und Ausführen von Datenprofil- und Datenqualitätsscans sowie zum Verwalten von BigQuery-Ressourcen benötigen:
-
Datenscans erstellen, ausführen und löschen:
Dataplex DataScan-Bearbeiter (
roles/dataplex.dataScanEditor) -
Beispieltabellen erstellen, füllen und löschen:
BigQuery-Dateninhaber (
roles/bigquery.dataOwner) -
SQL-Abfragen in BigQuery ausführen:
BigQuery-Jobnutzer (
roles/bigquery.jobUser)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Wenn Sie die erforderlichen Berechtigungen zum Verwalten des IAM-Zugriffs in Ihrem Projekt haben, können Sie Ihrem eigenen Nutzerkonto diese Rollen zuweisen. Führen Sie dazu die folgenden gcloud-Befehle aus:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="user:USER_EMAIL" \
--role="roles/dataplex.dataScanEditor"
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="user:USER_EMAIL" \
--role="roles/bigquery.dataOwner"
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="user:USER_EMAIL" \
--role="roles/bigquery.jobUser"
Ersetzen Sie Folgendes:
PROJECT_ID: Projekt-ID in Google Cloud .USER_EMAIL: die E-Mail-Adresse Ihres Nutzerkontos, z. B.name@example.com.
Berechtigungen für den Knowledge Catalog-Dienst-Agent erteilen
Ein Dienst-Agent ist ein von Google verwaltetes Dienstkonto, das Knowledge Catalog verwendet, um in Ihrem Namen Scanabfragen in BigQuery auszuführen.
Klicken Sie in der Google Cloud Console in der Symbolleiste auf Cloud Shell aktivieren. Die Bereitstellung und Verbindung mit der Umgebung dauert einen kleinen Moment.
Erstellen Sie den Knowledge Catalog-Dienst-Agent:
gcloud beta services identity create --service=dataplex.googleapis.comMit diesem Befehl wird der Dienst-Agent erstellt, falls er noch nicht bereitgestellt wurde, und seine E-Mail-Adresse ausgegeben. Wenn Ihr Projekt bereits einen Knowledge Catalog-Dienst-Agent hat, gibt der Befehl die vorhandene Identität zurück, ohne Änderungen vorzunehmen.
Die Ausgabe sieht etwa so aus:
serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex.Notieren Sie sich den
PROJECT_NUMBERin der Ausgabe für die nächsten Schritte.Weisen Sie die Rolle BigQuery-Jobnutzer (
roles/bigquery.jobUser) zu, damit Knowledge Catalog Abfragejobs in Ihrem Projekt ausführen kann:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex." \ --role="roles/bigquery.jobUser"
Ersetzen Sie Folgendes:
PROJECT_ID: Projekt-ID in Google Cloud .PROJECT_NUMBER: Ihre Google Cloud Projektnummer
Weisen Sie die Rolle BigQuery-Datenbetrachter (
roles/bigquery.dataViewer) zu, damit der Dienst-Agent Ihre Tabellendaten und Ihr Schema lesen kann:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex." \ --role="roles/bigquery.dataViewer"
Ersetzen Sie Folgendes:
PROJECT_ID: Projekt-ID in Google Cloud .PROJECT_NUMBER: Ihre Google Cloud Projektnummer
Beispiel-Dataset und ‑Tabelle erstellen
Wenn Sie Profilerstellung und Datenqualitätsscans sicher ausprobieren möchten, ohne Produktionsdaten zu ändern, richten Sie ein dediziertes BigQuery-Dataset ein und erstellen Sie eine Tabelle mit Beispieldaten zu Bikesharing mit absichtlichen Anomalien wie Duplikaten und Nullwerten.
Console
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Klicken Sie im Bereich Explorer neben Ihrer Projekt-ID auf Aktionen ansehen und dann auf Dataset erstellen.
Geben Sie im Feld Dataset-ID den Wert
quickstart_data_profileein.Wählen Sie in der Liste Speicherort für Daten die Option us-central1 (Iowa) aus.
Klicken Sie auf Dataset erstellen.
Geben Sie im Abfrageeditor die folgende SQL-Abfrage ein, um Beispieldaten für die Fahrradvermietung in der Tabelle
bikeshare_tripszu generieren:CREATE OR REPLACE TABLE `PROJECT_ID.quickstart_data_profile.bikeshare_trips` AS SELECT -- Duplicate and null IDs IF(MOD(x, 100) = 0, NULL, IF(x > 9900, 1000 + (x - 9900), 1000 + x)) AS trip_id, -- Nulls and unrecognized category values CASE WHEN MOD(x, 50) = 0 THEN 'INVALID_TIER' WHEN MOD(x, 25) = 0 THEN NULL WHEN MOD(x, 4) = 0 THEN 'Local Rider' WHEN MOD(x, 4) = 1 THEN 'Walk Up' WHEN MOD(x, 4) = 2 THEN 'Student Membership' ELSE 'Weekender' END AS subscriber_type, -- Nulls and malformed bike IDs CASE WHEN MOD(x, 60) = 0 THEN 'UNKNOWN' WHEN MOD(x, 30) = 0 THEN NULL ELSE CAST(2000 + x AS STRING) END AS bike_id, -- Null dates and future timestamps CASE WHEN MOD(x, 70) = 0 THEN NULL WHEN MOD(x, 40) = 0 THEN TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL x MINUTE) ELSE TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL x MINUTE) END AS start_time, -- Nulls and placeholder station values CASE WHEN MOD(x, 20) = 0 THEN 'STATION_UNKNOWN' WHEN MOD(x, 10) = 0 THEN NULL ELSE CAST(100 + MOD(x, 50) AS STRING) END AS start_station_id, -- Negative durations, zeros, and extreme outliers CASE WHEN MOD(x, 15) = 0 THEN -10.0 WHEN MOD(x, 35) = 0 THEN 0.0 WHEN MOD(x, 200) = 0 THEN 99999.0 ELSE CAST(MOD(x, 120) + 1.5 AS FLOAT64) END AS duration_minutes FROM UNNEST(GENERATE_ARRAY(1, 10000)) AS x;
Ersetzen Sie
PROJECT_IDdurch Ihre Google Cloud Projekt-ID.Klicken Sie auf Ausführen.
gcloud
Erstellen Sie in Cloud Shell das Dataset
quickstart_data_profilein der Regionus-central1:bq --location=us-central1 mk --dataset PROJECT_ID:quickstart_data_profile
Ersetzen Sie dabei
PROJECT_IDdurch IhreGoogle Cloud -Projekt-ID.Erstellen Sie die Beispieltabelle
bikeshare_tripsund füllen Sie sie:bq query \ --use_legacy_sql=false \ "CREATE OR REPLACE TABLE \`PROJECT_ID.quickstart_data_profile.bikeshare_trips\` AS SELECT IF(MOD(x, 100) = 0, NULL, IF(x > 9900, 1000 + (x - 9900), 1000 + x)) AS trip_id, CASE WHEN MOD(x, 50) = 0 THEN 'INVALID_TIER' WHEN MOD(x, 25) = 0 THEN NULL WHEN MOD(x, 4) = 0 THEN 'Local Rider' WHEN MOD(x, 4) = 1 THEN 'Walk Up' WHEN MOD(x, 4) = 2 THEN 'Student Membership' ELSE 'Weekender' END AS subscriber_type, CASE WHEN MOD(x, 60) = 0 THEN 'UNKNOWN' WHEN MOD(x, 30) = 0 THEN NULL ELSE CAST(2000 + x AS STRING) END AS bike_id, CASE WHEN MOD(x, 70) = 0 THEN NULL WHEN MOD(x, 40) = 0 THEN TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL x MINUTE) ELSE TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL x MINUTE) END AS start_time, CASE WHEN MOD(x, 20) = 0 THEN 'STATION_UNKNOWN' WHEN MOD(x, 10) = 0 THEN NULL ELSE CAST(100 + MOD(x, 50) AS STRING) END AS start_station_id, CASE WHEN MOD(x, 15) = 0 THEN -10.0 WHEN MOD(x, 35) = 0 THEN 0.0 WHEN MOD(x, 200) = 0 THEN 99999.0 ELSE CAST(MOD(x, 120) + 1.5 AS FLOAT64) END AS duration_minutes FROM UNNEST(GENERATE_ARRAY(1, 10000)) AS x;"
Datenprofilscan erstellen und ausführen
Bei einem Datenprofilscan werden die Zeilen Ihrer Tabelle analysiert, um statistische Informationen zu berechnen, z. B. die Anzahl eindeutiger Werte, Nullverhältnisse und Datenverteilungsbereiche.
Console
Rufen Sie in der Google Cloud Console die Seite Datenprofilerstellung und ‑qualität auf.
Klicken Sie auf Datenprofilscan erstellen.
Lassen Sie unter Typ auswählen die Option Datenprofilscan ausgewählt.
Geben Sie unter Allgemein im Feld Anzeigename den Wert
bikeshare-trips-profileein.Klicken Sie unter Zu scannende Tabelle im Feld Tabelle auf Durchsuchen, wählen Sie die Tabelle
quickstart_data_profile.bikeshare_tripsin Ihrem Projekt aus und klicken Sie dann auf Auswählen.Wählen Sie für Modus die Option Standard aus.
Wählen Sie unter Umfang die Option Gesamte Daten aus.
Wählen Sie für Zeitplan die Option On-Demand aus.
Behalten Sie ansonsten alle Standardeinstellungen bei.
Klicken Sie auf Scan ausführen.
Der Scanauftrag wird gestartet. In der Regel dauert es 3 bis 5 Minuten, bis Knowledge Catalog den Scan ausführt und Statistiken für Ihre Tabelle berechnet.
gcloud
Erstellen Sie in Cloud Shell den Datenprofilscan:
gcloud dataplex datascans create data-profile bikeshare-trips-profile \ --location=us-central1 \ --data-source-resource="//bigquery.googleapis.com/projects/PROJECT_ID/datasets/quickstart_data_profile/tables/bikeshare_trips" \ --description="Data profile scan for sample bikeshare dataset"
Ersetzen Sie dabei
PROJECT_IDdurch IhreGoogle Cloud -Projekt-ID.Führen Sie den Datenprofilscan aus:
gcloud dataplex datascans run bikeshare-trips-profile \ --location=us-central1
Der Scanvorgang wird im Hintergrund gestartet. Der Scan dauert in der Regel 3 bis 5 Minuten.
Ergebnisse des Datenprofilscans prüfen
Sehen Sie sich nach Abschluss des Scans die Spaltenstatistiken an, um die Merkmale Ihrer Daten zu verstehen.
Rufen Sie in der Google Cloud Console die Seite Datenprofilerstellung und ‑qualität auf.
Klicken Sie in der Liste der Scans auf bikeshare-trips-profile.
Wenn der Scan noch nicht ausgeführt wurde, klicken Sie auf Jetzt ausführen.
Warten Sie im Bereich Übersicht, bis für den neuesten Scanjob Erfolgreich angezeigt wird.
Die folgende Abbildung zeigt den Scan-Job im Bereich Übersicht mit dem Status Erfolgreich:
Prüfen Sie die Scanergebnisse, um die Datenverteilung Ihrer Tabelle zu verstehen und potenzielle Ziele für die Datenqualitätsvalidierung zu identifizieren. Auf dem Tab Neueste Jobergebnisse zeigt der Knowledge Catalog Messwerte auf Spaltenebene an, darunter Null %, Anzahl und %eindeutiger Werte, Top-Werte und Zusammenfassende Statistiken.
In der folgenden Tabelle sehen Sie, welchen Profil-Messwert Sie für jede Tabellenspalte prüfen müssen, wie die Ergebnisse zu interpretieren sind und welche Datenqualitätsregel Sie anwenden sollten:
Tabellenspalte Messwert für Profilergebnisse Worauf du achten solltest und wie du die Daten interpretierst Ziel für die Validierung der Datenqualität duration_minutesZusammenfassende Statistiken Negative Werte erkannt: Der Min-Wert beträgt -10.0Minuten. Die verstrichene Fahrtdauer darf nicht negativ sein. Ein negativer Wert weist auf ungültige Sensor- oder Fahrtaufzeichnungen hin.Verwenden Sie eine Gültigkeitsregel (Bereich) (z. B. duration_minutes ≥ 1.0), um positive verstrichene Fahrzeiten zu erzwingen.start_station_idNull % Etwa 5% Nullwerte: Der Prozentsatz der Nullwerte ist größer als 0 %. Das bedeutet, dass bei einigen Datensätzen die Kennungen für die Ausleihe an einer Station fehlen (z. B. bei Fahrten ohne Dock oder Kiosk). Ziel mit einer Vollständigkeitsregel (nicht null), um Datensätze mit fehlenden Stations-IDs zu erfassen und zu kennzeichnen. subscriber_typeTop-Werte Unerwartete Kategorien: In der Liste der häufigen Werte werden nicht standardmäßige Kategorien (z. B. INVALID_TIER) zusammen mit gültigen Mitgliedschaftsstufen aufgeführt. Das deutet auf nicht validierte Nutzereingaben oder Probleme bei der Aufnahme hin.Verwenden Sie eine Gültigkeitsregel (Satz), um zu erzwingen, dass alle eingehenden Werte zu Ihrer Liste der zulässigen Arten der Mitgliedschaft gehören. trip_idEindeutige Anzahl und % Doppelte IDs erkannt: Die Eindeutigkeit liegt unter 100% (etwa 98%), was auf wiederholte ID-Einträge hinweist. Primärschlüssel und Fahrtkennungen müssen zu 100% eindeutig sein. Ziel mit einer Eindeutigkeitsregel, um doppelte Fahrtdatensätze zu kennzeichnen und zu verhindern.
Diese Profilergebnisse bieten Ihnen eine evidenzbasierte Grundlage, um gezielte Regeln für die Datenqualität zu erstellen.
Datenqualitätsscan erstellen und ausführen
Nachdem Sie sich einen Überblick über die Daten verschafft haben, richten Sie automatisierte Regeln für die Datenqualität ein, um Anomalien zu erkennen. In diesem Schritt konfigurieren Sie vier gängige Regeltypen basierend auf Ihren Profilergebnissen.
Console
Rufen Sie in der Google Cloud Console die Seite Datenprofilerstellung und ‑qualität auf.
Klicken Sie auf Datenqualitätsscan erstellen.
Geben Sie unter Allgemein im Feld Anzeigename den Wert
bikeshare-trips-qualityein.Klicken Sie unter Zu scannende Tabelle im Feld Tabelle auf Durchsuchen, wählen Sie die Tabelle
quickstart_data_profile.bikeshare_tripsaus und klicken Sie dann auf Auswählen.Wählen Sie unter Umfang die Option Gesamte Daten aus.
Wählen Sie für Zeitplan die Option On-Demand aus.
Lassen Sie die anderen Einstellungen unverändert und klicken Sie auf Weiter.
Klicken Sie im Bereich Datenqualitätsregeln auf Regeln hinzufügen und wählen Sie Integrierte Regeltypen aus.
Wählen Sie im Bereich Regeln hinzufügen die Spalten und Regeltypen aus:
- Klicken Sie im Feld Spalten auswählen auf Durchsuchen und wählen Sie
duration_minutes,start_station_id,subscriber_typeundtrip_idaus. - Klicken Sie auf Auswählen.
- Wählen Sie in der Liste Regeltypen auswählen die Optionen Bereichsprüfung, NULL-Prüfung, Prüfung des Wertesatzes und Eindeutigkeitsprüfung aus und klicken Sie dann auf OK.
Wählen Sie in der Liste der generierten Regeln das Kästchen für jede der folgenden Regeln aus:
duration_minutes: Bereichsprüfungstart_station_id: NULL-Prüfungsubscriber_type: Prüfung des Wertesatzestrip_id: Eindeutigkeitsprüfung
Klicken Sie auf Auswählen.
- Klicken Sie im Feld Spalten auswählen auf Durchsuchen und wählen Sie
Konfigurieren Sie in der Tabelle Datenqualitätsregeln Parameter für die Regeln, die Werte erfordern:
- Klicken Sie für
duration_minutes(Bereichsprüfung) auf Bearbeiten, geben Sie1.0in das Feld Mindestwert ein und klicken Sie auf Speichern. - Klicken Sie für
subscriber_type(Wertprüfung) auf Bearbeiten, dann auf Wert hinzufügen, um die zulässigen Werte (Local Rider,Walk Up,Student MembershipundWeekender) hinzuzufügen, und klicken Sie auf Speichern.
- Klicken Sie für
Klicken Sie auf Weiter und dann auf Scan ausführen.
gcloud
Erstellen Sie in Cloud Shell eine Datei namens
dq_bikeshare.yamlmit Regelspezifikationen, die auf die in Ihrem Profil gefundenen Anomalien abzielen:cat << 'EOF' > dq_bikeshare.yaml rules: - column: trip_id dimension: UNIQUENESS uniquenessExpectation: {} - column: start_station_id dimension: COMPLETENESS nonNullExpectation: {} - column: duration_minutes dimension: VALIDITY rangeExpectation: minValue: "1.0" - column: subscriber_type dimension: VALIDITY setExpectation: values: - "Local Rider" - "Walk Up" - "Student Membership" - "Weekender" EOFErstellen Sie den Datenqualitätsscan:
gcloud dataplex datascans create data-quality bikeshare-trips-quality \ --location=us-central1 \ --data-source-resource="//bigquery.googleapis.com/projects/PROJECT_ID/datasets/quickstart_data_profile/tables/bikeshare_trips" \ --data-quality-spec-file="dq_bikeshare.yaml" \ --description="Data quality scan for sample bikeshare dataset"
Ersetzen Sie dabei
PROJECT_IDdurch IhreGoogle Cloud -Projekt-ID.Führen Sie den Datenqualitätsscan aus:
gcloud dataplex datascans run bikeshare-trips-quality \ --location=us-central1
Bewertungen von Datenqualitätsregeln prüfen
Prüfen Sie die Ergebnisse der Datenqualität, um zu sehen, wie Ihre Regeln die Beispieldaten ausgewertet und Anomalien identifiziert haben.
Rufen Sie in der Google Cloud Console die Seite Datenprofilerstellung und ‑qualität auf.
Klicken Sie in der Tabelle Scans auf den Scan bikeshare-trips-quality.
Klicken Sie im Abschnitt Übersicht auf Ergebnisse ansehen, um die Jobdetails zu öffnen.
Sehen Sie sich im Bereich Jobdetails die Bewertungsergebnisse an:
Datenqualitätsstatus: Wie erwartet haben alle drei ausgewerteten Dimensionen den Status Fehlgeschlagen.
- Gültigkeit: Fehlgeschlagen. Die Spalte
duration_minutesenthält negative Werte undsubscriber_typeenthält ungültige Mitgliedschaftswerte (INVALID_TIER). - Vollständigkeit: Fehlgeschlagen. Die Spalte
start_station_identhält Nullwerte. - Eindeutigkeit: Fehlgeschlagen. Die Spalte
trip_identhält doppelte Einträge.
- Gültigkeit: Fehlgeschlagen. Die Spalte
Regeln: In der Tabelle Regeln haben alle vier ausgewerteten Regeln den Status Fehlgeschlagen.
duration_minutes: Bereichsprüfung (Fehlgeschlagen)start_station_id: NULL-Prüfung (Fehlgeschlagen)subscriber_type: Wertesatzprüfung (Fehlgeschlagen)trip_id: Eindeutigkeitsprüfung (Fehlgeschlagen)
Für jede fehlgeschlagene Regel können Sie die SQL-Abfrage in der Spalte Abfrage zum Abrufen fehlgeschlagener Einträge kopieren und in BigQuery ausführen, um die ungültigen Zeilen zu isolieren und zu prüfen.
Sie haben jetzt eine BigQuery-Tabelle profiliert, um Spaltenstatistiken zu ermitteln, und diese Informationen verwendet, um automatisierte Datenqualitätsregeln zu definieren und zu validieren.
Bereinigen
Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud -Konto die auf dieser Seite verwendeten Ressourcen in Rechnung gestellt werden:
Console
Rufen Sie in der Google Cloud Console die Seite Datenprofilerstellung und ‑qualität auf.
Wählen Sie in der Tabelle Scans die Optionen bikeshare-trips-quality und bikeshare-trips-profile aus.
Klicken Sie auf Löschen und bestätigen Sie den Vorgang.
Rufen Sie die Seite BigQuery auf.
Klicken Sie im Bereich Explorer auf Datasets.
Wählen Sie das Dataset
quickstart_data_profileaus und klicken Sie dann auf Löschen.
gcloud
Löschen Sie in Cloud Shell den Datenqualitätsscan, den Datenprofilscan und das Beispiel-Dataset:
gcloud dataplex datascans delete bikeshare-trips-quality --location=us-central1 --quiet gcloud dataplex datascans delete bikeshare-trips-profile --location=us-central1 --quiet bq rm -r -f -d PROJECT_ID:quickstart_data_profile
Ersetzen Sie dabei PROJECT_ID durch IhreGoogle Cloud -Projekt-ID.
Nächste Schritte
- Ergebnisse des Datenqualitätsscans ansehen und Fehler beheben
- Knowledge Catalog-Messwerte überwachen
- Policy-as-Code-Datenqualitätsworkflow mit der Antigravity CLI erstellen
- Datenqualitätsregeln als Code mit Terraform verwalten
- Datenqualitätsregeln für mehrere Tabellen wiederverwenden
- Weitere Knowledge Catalog-Anwendungsfälle