Membuat profil dan memastikan kualitas data

Membangun alur kerja kualitas data policy-as-code. Tutorial ini membahas cara melampaui proses manual yang didorong UI dengan menentukan ekspektasi kualitas data dalam file deklaratif yang dikontrol versinya.

Dengan menggunakan pendekatan Human-in-the-Loop, tempat AI membuat draf aturan awal dan Anda meninjau, menyempurnakan, dan memvalidasinya, Anda dapat dengan cepat menerjemahkan statistik profil ke dalam framework kualitas data.

Tujuan

  • Meratakan data BigQuery bertingkat dengan tampilan terwujud untuk mengaktifkan pembuatan profil Knowledge Catalog.
  • Menjalankan pemindaian profil Knowledge Catalog menggunakan library klien Python.
  • Menggunakan Gemini CLI untuk membuat aturan kualitas data berdasarkan statistik profil.
  • Memvalidasi dan men-deploy aturan yang dibuat AI sebagai pemindaian kualitas Knowledge Catalog menggunakan proses peninjauan Human-in-the-Loop.

Sebelum memulai

Sebelum memulai, pastikan Anda memiliki Google Cloud project dengan penagihan yang diaktifkan.

Menyiapkan lingkungan Anda

Langkah-langkah berikut menggunakan Cloud Shell, lingkungan command line yang berjalan di cloud.

  1. Di Google Cloud konsol, klik Activate Cloud Shell di toolbar kanan atas. Lingkungan memerlukan waktu beberapa saat untuk penyediaan dan terhubung.

  2. Di Cloud Shell, siapkan project ID dan variabel lingkungan Anda:

    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"
    

    Gunakan us (multi-region) sebagai lokasi karena data contoh publik juga berada di us (multi-region). Untuk kueri BigQuery, data sumber dan tabel tujuan harus berada di lokasi yang sama.

  3. Aktifkan layanan yang diperlukan:

    gcloud services enable dataplex.googleapis.com \
                           bigquery.googleapis.com \
                           serviceusage.googleapis.com
    
  4. Buat set data BigQuery untuk menyimpan data dan hasil contoh:

    bq --location=us mk --dataset $PROJECT_ID:$DATASET_ID
    
  5. Siapkan data contoh, yang berasal dari set data e-commerce publik dari Google Merchandise Store.

    Perintah bq berikut membuat tabel baru, ga4_transactions, di set data dataplex_dq_codelab Anda. Untuk memastikan pemindaian berjalan cepat, perintah ini hanya menyalin data dari satu hari (2021-01-31).

    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`'
    
  6. Clone repositori GitHub yang berisi struktur folder dan file pendukung untuk tutorial ini:

    # 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-dq
    

    Direktori ini adalah area kerja aktif Anda.

Membuat profil data bertingkat

Dengan pembuatan profil data, Knowledge Catalog menemukan statistik untuk kolom tingkat atas, seperti persentase null, keunikan, dan distribusi nilai dalam data Anda untuk membantu Anda memahaminya.

Untuk mendapatkan statistik kolom bertingkat, Anda dapat meratakan data menggunakan kumpulan tampilan terwujud. Tindakan ini mengubah setiap kolom bertingkat menjadi kolom tingkat atas yang dapat diprofilkan oleh Knowledge Catalog.

Mendapatkan skema bertingkat

Dapatkan skema lengkap tabel sumber Anda, termasuk semua struktur bertingkat, dan simpan output sebagai file JSON:

bq show --schema --format=json $PROJECT_ID:$DATASET_ID.$TABLE_ID > bq_schema.json

Lihat skema:

jq < bq_schema.json

File bq_schema.json menampilkan struktur yang kompleks.

Meratakan data dengan tampilan terwujud

Saat meratakan data bertingkat, penting untuk tidak membatalkan nesting beberapa array independen dalam tampilan yang sama. Jika melakukannya, Anda akan melakukan cross join implisit (produk Cartesian) antara array, yang akan mengalikan baris secara salah dan merusak data Anda.

Sebaiknya buat beberapa tampilan, yang masing-masing dibuat untuk tujuan tertentu. Setiap tampilan harus mempertahankan satu tingkat detail yang jelas. Pada langkah ini, Anda akan membuat tampilan terwujud berikut:

  • Tampilan datar sesi (mv_ga4_user_session_flat.sql): satu baris per peristiwa.
  • Tampilan transaksi (mv_ga4_ecommerce_transactions.sql): satu baris per transaksi.
  • Tampilan item (mv_ga4_ecommerce_items.sql): satu baris per item.

Repositori project menyediakan tiga file SQL di direktori devrel-demos/data-analytics/programmatic-dq yang menentukan tampilan ini.

Jalankan file ini dari Cloud Shell menggunakan perintah BigQuery berikut.

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

Menjalankan pemindaian profil dengan klien Python

Sekarang Anda dapat membuat dan menjalankan pemindaian profil data Knowledge Catalog untuk setiap tampilan terwujud. Skrip Python berikut menggunakan library klien google-cloud-dataplex untuk mengotomatiskan proses ini.

Sebelum menjalankan skrip, buat lingkungan virtual Python yang terisolasi di direktori project Anda.

# Create the virtual environment
python3 -m venv dq_venv

# Activate the environment
source dq_venv/bin/activate

Instal library klien Knowledge Catalog di dalam lingkungan virtual.

# Install the Dataplex client library
pip install google-cloud-dataplex

Setelah menyiapkan lingkungan dan menginstal library, Anda siap menggunakan skrip 1_run_dataplex_scans.py. Skrip ini membuat profil tiga tampilan terwujud Anda dengan membuat dan menjalankan pemindaian untuk setiap tampilan. Setelah selesai, skrip ini akan menampilkan ringkasan statistik lengkap yang Anda gunakan pada langkah berikutnya untuk membuat aturan kualitas data yang didukung AI.

.

Jalankan skrip dari terminal Cloud Shell Anda.

python3 1_run_dataplex_scans.py

Memeriksa pemindaian profil

Anda dapat memeriksa pemindaian profil baru di Google Cloud konsol.

  1. Di menu navigasi, buka Knowledge Catalog dan pilih Data profiling &quality di bagian Govern.
  2. Temukan tiga pemindaian profil Anda yang tercantum, beserta status tugas terbarunya. Klik pemindaian untuk melihat hasil detailnya.

Mengekspor hasil profil ke JSON

Agar Gemini dapat membaca pemindaian profil Anda, Anda harus mengekstrak kontennya ke dalam file lokal.

Gunakan skrip 2_dq_profile_save.py untuk menemukan pemindaian terbaru yang berhasil untuk tampilan mv_ga4_user_session_flat, mendownload data profil, dan menyimpannya ke file bernama dq_profile_results.json.

python3 2_dq_profile_save.py

Setelah selesai, skrip akan membuat file dq_profile_results.json di direktori. File ini menyimpan metadata statistik mendetail yang Anda perlukan untuk membuat aturan kualitas data. Lihat kontennya dengan menjalankan perintah berikut:

cat dq_profile_results.json

Membuat aturan kualitas data dengan Gemini CLI

Sekarang Anda dapat menggunakan Gemini CLI untuk membaca hasil pemindaian profil lokal.

Menulis aturan kualitas data secara manual untuk set data yang kompleks memerlukan waktu dan rentan error. AI generatif mempercepat alur kerja ini dengan membuat konfigurasi kualitas data awal yang komprehensif dalam hitungan detik. Hal ini membantu Anda beralih dari eksekusi tugas manual ke pengawasan tingkat tinggi.

Untuk memulai Gemini CLI, gunakan perintah berikut:

gemini

Sekarang Anda siap membuat aturan kualitas. Karena CLI dapat membaca file di direktori saat ini, CLI dapat menggunakan data pemindaian profil baru Anda secara langsung.

Meminta Gemini membuat rencana

Minta Gemini untuk bertindak sebagai analis ahli dan mengusulkan rencana untuk membuat aturan kualitas data Anda. Beri tahu Gemini untuk tidak menulis file YAML terlebih dahulu agar Gemini berfokus pada analisis. Gemini menganalisis file JSON dan menampilkan rencana terstruktur

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.

Membuat aturan kualitas data

Rencana Gemini sepenuhnya bergantung pada pola statistik dan tidak memiliki pengetahuan bisnis spesifik Anda.

Tinjau rencana dan tanyakan pertanyaan berikut kepada diri Anda sendiri:

  • Apakah rencana tersebut selaras dengan sasaran dan konteks bisnis Anda?
  • Apakah ada aturan yang secara statistik valid tetapi sebenarnya tidak praktis (seperti rowCount yang ketat untuk tabel yang berkembang)?

Sempurnakan rencana dengan Gemini, atau setujui apa adanya menggunakan contoh perintah berikut. Perintah dimulai dengan memberikan beberapa masukan, lalu menginstruksikan Gemini untuk membuat file dq_rules.yaml di direktori kerja Anda dan mematuhi spesifikasi DataQualityRule karena Knowledge Catalog memerlukan struktur YAML yang presisi. Hal ini membantu mencegah error sintaksis atau penggunaan versi skema yang sudah tidak berlaku.


- "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.

Membuat dan menjalankan pemindaian kualitas data

Sekarang Anda memiliki kumpulan aturan kualitas data yang dibuat agen yang dapat Anda daftarkan dan deploy sebagai pemindaian.

  1. Keluar dari Gemini CLI dengan memasukkan /quit atau menekan Ctrl+C dua kali.

  2. Kemudian, buat pemindaian data di 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"
    
  3. Terakhir, jalankan pemindaian:

    gcloud dataplex datascans run $DQ_SCAN --location=$LOCATION --project=$PROJECT_ID
    

    Perintah ini membuat pemindaian kualitas data bernama dq-scan.

  4. Periksa progres pemindaian Anda di bagian Knowledge Catalog di Google Cloud konsol.

    1. Di menu navigasi, buka Knowledge Catalog dan pilih Data profiling &quality di bagian Govern.
    2. Temukan dq-scan. Setelah pemindaian selesai, klik pemindaian untuk melihat hasilnya.

Pembersihan

Untuk menghindari biaya penagihan berulang untuk resource yang Anda buat dalam tutorial ini, hapus resource tersebut.

Menghapus pemindaian Knowledge Catalog

Hapus pemindaian profil dan kualitas Anda menggunakan nama pemindaian tertentu dari codelab ini:

# 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

Menghapus set data contoh

Hapus set data BigQuery sementara dan tabelnya.

bq rm -r -f --dataset $PROJECT_ID:dataplex_dq_codelab

Menghapus file lokal

Nonaktifkan lingkungan virtual Python dan hapus repositori yang di-clone beserta kontennya:

deactivate
cd ../../..
rm -rf devrel-demos

Kesimpulan

Selamat, Anda baru saja membuat alur kerja tata kelola data terprogram dan menyeluruh.

Dengan menggabungkan Gemini dengan Knowledge Catalog, Anda telah membangun fondasi untuk tata kelola yang dibantu AI. Pendekatan ini tidak menggantikan loop tata kelola, tetapi mempercepat proses pembuatan aturan sehingga Anda dapat berfokus pada validasi dan penyempurnaan aturan berdasarkan logika bisnis Anda.

Langkah berikutnya