Mit einem Human-in-the-Loop-Ansatz, bei dem KI die ersten Regeln entwirft und Sie sie überprüfen, verfeinern und validieren, können Sie Profilstatistiken schnell in ein Framework für die Datenqualität umwandeln.
Ziele
- Verschachtelte BigQuery-Daten mit materialisierten Ansichten reduzieren, um die Knowledge Catalog-Profilerstellung zu ermöglichen.
- Knowledge Catalog-Profilscans mit der Python-Clientbibliothek ausführen.
- Mit der Gemini CLI Datenqualitätsregeln auf Grundlage von Profilstatistiken generieren.
- KI-generierte Regeln als Knowledge Catalog-Qualitätsscans mit einem Human-in-the-Loop-Überprüfungsprozess validieren und bereitstellen.
Hinweis
Bevor Sie beginnen, benötigen Sie ein Google Cloud Projekt mit aktivierter Abrechnung.
Umgebung vorbereiten
In den folgenden Schritten wird Cloud Shell verwendet, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.
Klicken Sie in der Google Cloud Console in der Symbolleiste rechts oben auf Cloud Shell aktivieren. Die Bereitstellung und Verbindung mit der Umgebung dauert einen kleinen Moment.
Legen Sie in Cloud Shell Ihre Projekt-ID und Umgebungsvariablen fest:
export PROJECT_ID=$(gcloud config get-value project) gcloud config set project $PROJECT_ID export LOCATION="us-central1" export BQ_LOCATION="us" export DATASET_ID="dataplex_dq_codelab" export TABLE_ID="ga4_transactions"Verwenden Sie
us(Multiregion) als Standort, da sich die öffentlichen Beispieldaten ebenfalls in der Multiregionusbefinden. Für BigQuery-Abfragen müssen sich die Quelldaten und die Zieltabellen am selben Standort befinden.Aktivieren Sie die erforderlichen Dienste:
gcloud services enable dataplex.googleapis.com \ bigquery.googleapis.com \ serviceusage.googleapis.comErstellen Sie ein BigQuery-Dataset zum Speichern von Beispieldaten und Ergebnissen:
bq --location=us mk --dataset $PROJECT_ID:$DATASET_IDBereiten Sie die Beispieldaten vor, die aus einem öffentlichen E-Commerce-Dataset aus dem Google Merchandise Store stammen.
Mit dem folgenden
bq-Befehl wird eine neue Tabelle,ga4_transactions, in Ihremdataplex_dq_codelab-Dataset erstellt. Damit Scans schnell ausgeführt werden, werden nur Daten von einem Tag (2021-01-31) kopiert.bq query \ --use_legacy_sql=false \ --destination_table=$PROJECT_ID:$DATASET_ID.$TABLE_ID \ --replace=true \ 'SELECT * FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_20210131`'Klonen Sie das GitHub-Repository, das die Ordnerstruktur und die unterstützenden Dateien für diese Anleitung enthält:
# Perform a shallow clone to get only the latest repository structure without the full history git clone --depth 1 --filter=blob:none --sparse https://github.com/GoogleCloudPlatform/devrel-demos.git cd devrel-demos # Specify and download only the folder we need for this lab git sparse-checkout set data-analytics/programmatic-dq cd data-analytics/programmatic-dqDieses Verzeichnis ist Ihr aktiver Arbeitsbereich.
Verschachtelte Daten profilieren
Bei der Datenprofilerstellung ermittelt Knowledge Catalog Statistiken für Spalten der obersten Ebene, z. B. Nullprozentsätze, Eindeutigkeit und Werteverteilungen in Ihren Daten, damit Sie sie besser verstehen.
Wenn Sie Statistiken für verschachtelte Felder erhalten möchten, können Sie die Daten mit einer Reihe von materialisierten Ansichten vereinfachen. Dadurch wird jedes verschachtelte Feld in eine Spalte der obersten Ebene umgewandelt, die von Knowledge Catalog profiliert werden kann.
Verschachteltes Schema abrufen
Rufen Sie das vollständige Schema Ihrer Quelltabelle einschließlich aller verschachtelten Strukturen ab und speichern Sie die Ausgabe als JSON-Datei:
bq show --schema --format=json $PROJECT_ID:$DATASET_ID.$TABLE_ID > bq_schema.json
Sehen Sie sich das Schema an:
jq < bq_schema.json
Die Datei bq_schema.json enthält komplexe Strukturen.
Daten mit einer materialisierten Ansicht reduzieren
Wenn Sie verschachtelte Daten reduzieren, ist es wichtig, nicht mehrere unabhängige Arrays in derselben Ansicht zu reduzieren. Andernfalls wird ein impliziter Cross Join (kartesisches Produkt) zwischen den Arrays ausgeführt, wodurch die Zeilen falsch multipliziert und Ihre Daten beschädigt werden.
Erstellen Sie stattdessen mehrere Ansichten, die jeweils für einen bestimmten Zweck erstellt wurden. Jede Ansicht sollte ein einzelnes, klares Detaillierungsniveau haben. In diesem Schritt erstellen Sie die folgenden materialisierten Ansichten:
- Session flat view (
mv_ga4_user_session_flat.sql): eine Zeile pro Ereignis. - Transactions view (
mv_ga4_ecommerce_transactions.sql): eine Zeile pro Transaktion. - Items view (
mv_ga4_ecommerce_items.sql): eine Zeile pro Artikel.
Das Projekt-Repository enthält drei SQL-Dateien im Verzeichnis devrel-demos/data-analytics/programmatic-dq, in denen diese Ansichten definiert sind.
Führen Sie diese Dateien über die Cloud Shell mit den folgenden BigQuery-Befehlen aus.
envsubst < mv_ga4_user_session_flat.sql | bq query --use_legacy_sql=false
envsubst < mv_ga4_ecommerce_transactions.sql | bq query --use_legacy_sql=false
envsubst < mv_ga4_ecommerce_items.sql | bq query --use_legacy_sql=false
Profilscans mit dem Python-Client ausführen
Sie können jetzt Knowledge Catalog-Datenprofilscans für jede materialisierte Ansicht erstellen und ausführen. Das folgende Python-Skript verwendet die google-cloud-dataplex-Clientbibliothek, um diesen Prozess zu automatisieren.
Bevor Sie das Skript ausführen, erstellen Sie eine isolierte virtuelle Python-Umgebung in Ihrem Projektverzeichnis.
# Create the virtual environment
python3 -m venv dq_venv
# Activate the environment
source dq_venv/bin/activate
Installieren Sie die Knowledge Catalog-Clientbibliothek in der virtuellen Umgebung.
# Install the Dataplex client library
pip install google-cloud-dataplex
Nachdem Sie die Umgebung eingerichtet und die Bibliothek installiert haben, können Sie das Skript 1_run_dataplex_scans.py verwenden. Dieses Skript profiliert Ihre drei materialisierten Ansichten, indem es für jede Ansicht einen Scan erstellt und ausführt. Nach Abschluss des Vorgangs wird eine ausführliche statistische Zusammenfassung ausgegeben, die Sie im nächsten Schritt verwenden, um KI-gestützte Datenqualitätsregeln zu generieren.
Führen Sie das Skript über das Cloud Shell-Terminal aus.
python3 1_run_dataplex_scans.py
Profilscans prüfen
Sie können sich die neuen Profilscans in der Google Cloud Console ansehen.
- Wählen Sie im Navigationsmenü Knowledge Catalog und im Bereich Verwalten die Option Datenprofilerstellung und ‑qualität aus.
- Suchen Sie nach den drei Profilscans und dem aktuellen Jobstatus. Klicken Sie auf einen Scan, um die detaillierten Ergebnisse zu sehen.
Profilergebnisse in JSON exportieren
Damit Gemini Ihre Profilscans lesen kann, müssen Sie die Inhalte in eine lokale Datei extrahieren.
Verwenden Sie das Skript 2_dq_profile_save.py, um den letzten erfolgreichen Scan für die Ansicht mv_ga4_user_session_flat zu finden, die Profildaten herunterzuladen und in einer Datei mit dem Namen dq_profile_results.json zu speichern.
python3 2_dq_profile_save.py
Nach Abschluss des Skripts wird im Verzeichnis eine Datei dq_profile_results.json erstellt. Diese Datei enthält die detaillierten statistischen Metadaten, die Sie zum Generieren von Datenqualitätsregeln benötigen. Sehen Sie sich den Inhalt an, indem Sie den folgenden Befehl ausführen:
cat dq_profile_results.json
Datenqualitätsregeln mit der Gemini CLI generieren
Jetzt können Sie mit der Gemini CLI die lokalen Profilscanergebnisse lesen.
Das manuelle Schreiben von Datenqualitätsregeln für komplexe Datasets ist zeitaufwendig und fehleranfällig. Generative KI beschleunigt diesen Workflow, indem sie in Sekundenschnelle eine umfassende anfängliche Datenqualitätskonfiguration generiert. So können Sie von der manuellen Aufgabenausführung zur übergeordneten Überwachung wechseln.
Verwenden Sie den folgenden Befehl, um die Gemini CLI zu starten:
gemini
Jetzt können Sie Qualitätsregeln generieren. Da die CLI Dateien in Ihrem aktuellen Verzeichnis lesen kann, können Sie Ihre neuen Profilscandaten direkt verwenden.
Gemini auffordern, einen Plan zu erstellen
Bitten Sie Gemini, als Experte zu fungieren und einen Plan zum Erstellen Ihrer Datenqualitätsregeln vorzuschlagen. Weisen Sie Gemini an, die YAML-Datei noch nicht zu schreiben, damit es sich auf die Analyse konzentrieren kann. Gemini analysiert die JSON-Datei und gibt einen strukturierten Plan zurück.
You are an expert Google Cloud Dataplex engineer.
Your first task is to create a plan. I have a file in the current directory named ./dq_profile_results.json.
Based on the statistical data within that file, propose a step-by-step plan to create a Dataplex data quality rules file.
Your plan should identify which specific columns are good candidates for rules like nonNullExpectation, setExpectation, or rangeExpectation, and explain why based on the metrics (for example, "Plan to create a nonNullExpectation for column X because its null percentage is 0%").
Do not write the YAML file yet. Just provide the plan.
Datenqualitätsregeln generieren
Der Plan von Gemini basiert ausschließlich auf statistischen Mustern und berücksichtigt nicht Ihr spezifisches Geschäftswissen.
Prüfen Sie den Plan und stellen Sie sich die folgenden Fragen:
- Entspricht er Ihren Geschäftszielen und Ihrem Kontext?
- Sind statistisch fundierte Regeln tatsächlich unpraktisch (z. B. eine strenge `rowCount` für eine wachsende Tabelle)?
Verfeinern Sie den Plan mit Gemini oder genehmigen Sie ihn unverändert mit dem folgenden Beispielprompt. Der Prompt beginnt mit etwas Feedback und weist Gemini dann an, die Datei dq_rules.yaml in Ihrem Arbeitsverzeichnis zu generieren und der DataQualityRule-Spezifikation zu entsprechen, da Knowledge Catalog eine präzise YAML-Struktur erfordert. So werden Syntaxfehler oder die Verwendung veralteter Schemaversionen vermieden.
- "The plan looks good. Please proceed."
- "The rowCount rule is not necessary, as the table size changes daily. The rest of the plan is approved. Please proceed."
- "For the setExpectation on the geo_continent column, please also include 'Antarctica'."
Once you have incorporated my feedback, please generate the `dq_rules.yaml` file.
You must adhere to the following strict requirements:
- Schema Compliance: The YAML structure must strictly conform to the DataQualityRule specification. For a definitive source of truth, you must refer to the sample_rule.yaml file in the current directory and the DataQualityRule class definition. Search for the `data_quality.py` file inside the `./dq_venv/lib/` directory to read this class definition.
- Data-Driven Values: All rule parameters, such as thresholds or expected values, must be derived directly from the statistical metrics in dq_profile_results.json.
- Rule Justification: For each rule, add a comment (#) on the line above explaining the justification, as you outlined in your plan.
- Output Purity: The final output must only be the raw YAML code block, perfectly formatted and ready for immediate deployment.
Datenqualitätsscan erstellen und ausführen
Sie haben jetzt eine vom Agent generierte Reihe von Datenqualitätsregeln, die Sie als Scan registrieren und bereitstellen können.
Beenden Sie die Gemini CLI, indem Sie
/quiteingeben oder zweimalCtrl+Cdrücken.Erstellen Sie dann einen Datenscan in Knowledge Catalog:
export DQ_SCAN="dq-scan" gcloud dataplex datascans create data-quality $DQ_SCAN \ --project=$PROJECT_ID \ --location=$LOCATION \ --data-quality-spec-file=dq_rules.yaml \ --data-source-resource="//bigquery.googleapis.com/projects/$PROJECT_ID/datasets/$DATASET_ID/tables/mv_ga4_user_session_flat"Führen Sie nun den Scan aus:
gcloud dataplex datascans run $DQ_SCAN --location=$LOCATION --project=$PROJECT_IDMit diesem Befehl wird ein Datenqualitätsscan mit dem Namen
dq-scanerstellt.Prüfen Sie den Fortschritt des Scans im Knowledge Catalog-Bereich der Google Cloud Console.
- Wählen Sie im Navigationsmenü Knowledge Catalog und im Bereich Verwalten die Option Datenprofilerstellung und ‑qualität aus.
- Suchen Sie nach
dq-scan. Klicken Sie nach Abschluss des Scans darauf, um die Ergebnisse zu sehen.
Bereinigen
Löschen Sie die in dieser Anleitung erstellten Ressourcen, um wiederkehrende Zahlungen zu vermeiden.
Knowledge Catalog-Scans löschen
Löschen Sie Ihre Profil- und Qualitätsscans mit den spezifischen Scannamen aus diesem Codelab:
# Delete the Data Quality Scan
gcloud dataplex datascans delete dq-scan \
--location=us-central1 \
--project=$PROJECT_ID --quiet
# Delete the Data Profile Scans
gcloud dataplex datascans delete profile-scan-mv-ga4-user-session-flat \
--location=us-central1 \
--project=$PROJECT_ID --quiet
gcloud dataplex datascans delete profile-scan-mv-ga4-ecommerce-transactions \
--location=us-central1 \
--project=$PROJECT_ID --quiet
gcloud dataplex datascans delete profile-scan-mv-ga4-ecommerce-items \
--location=us-central1 \
--project=$PROJECT_ID --quiet
Beispieldataset löschen
Löschen Sie Ihr temporäres BigQuery-Dataset und die zugehörigen Tabellen.
bq rm -r -f --dataset $PROJECT_ID:dataplex_dq_codelab
Lokale Dateien löschen
Deaktivieren Sie die virtuelle Python-Umgebung und entfernen Sie das geklonte Repository und dessen Inhalt:
deactivate
cd ../../..
rm -rf devrel-demos
Fazit
Herzlichen Glückwunsch, Sie haben gerade einen End-to-End-Workflow für die programmatische Data Governance erstellt.
Durch die Kombination von Gemini und Knowledge Catalog haben Sie eine Grundlage für die KI-gestützte Verwaltung geschaffen. Dieser Ansatz ersetzt nicht den Governance-Zyklus, beschleunigt aber die Erstellung von Regeln, sodass Sie sich auf die Validierung und Verfeinerung von Regeln basierend auf Ihrer Geschäftslogik konzentrieren können.
Nächste Schritte
- Weitere Informationen zur Philosophie hinter dieser Architektur finden Sie unter KI-gestützte Verwaltung: Datenqualität mit menschlicher Aufsicht beschleunigen.
- Verwalten Sie die Datenqualität als Code, indem Sie eine CI/CD-Pipeline erstellen.
- Erfahren Sie mehr über die Verwendung benutzerdefinierter SQL-Regeln, um geschäftsspezifische Logik zu erzwingen.
- Optimieren Sie Ihre Scans mit Filtern und Stichproben, um Kosten zu senken.
- Automatisieren Sie Ihre Infrastruktur, indem Sie Knowledge Catalog-Ressourcen mit Terraform bereitstellen, um Ihre Datenverwaltung im großen Maßstab zu verwalten.
- Weitere Informationen zum Open-Source-KI-Agenten Gemini CLI.
- Weitere Anwendungsfälle für Knowledge Catalog