Membuat profil dan memvalidasi kualitas data
Knowledge Catalog (sebelumnya Dataplex Universal Catalog) memungkinkan Anda membuat profil tabel BigQuery untuk menghitung statistik tingkat kolom, seperti persentase null, jumlah nilai unik, dan distribusi nilai. Kemudian, Anda dapat menggunakan insight ini untuk menentukan aturan kualitas data dan memvalidasi data Anda untuk menemukan anomali.
Dalam panduan memulai ini, Anda akan mengisi tabel BigQuery contoh dengan anomali yang disengaja, menjalankan pemindaian profil data, dan mengevaluasi hasilnya dengan pemindaian kualitas data. Untuk mengetahui informasi selengkapnya, lihat Tentang pembuatan profil data dan Tentang kualitas data otomatis.
Sebelum memulai
Siapkan project:
-
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.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk membuat dan menjalankan pemindaian profil data dan kualitas data, serta mengelola resource BigQuery, minta administrator untuk memberi Anda peran IAM berikut pada project:
-
Membuat, menjalankan, dan menghapus pemindaian data:
Dataplex DataScan Editor (
roles/dataplex.dataScanEditor) -
Membuat, mengisi, dan menghapus tabel contoh:
BigQuery Data Owner (
roles/bigquery.dataOwner) -
Menjalankan kueri SQL di BigQuery:
BigQuery Job User (
roles/bigquery.jobUser)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Jika Anda memiliki izin yang diperlukan untuk mengelola akses IAM di
project, Anda dapat memberikan peran ini ke akun pengguna Anda sendiri dengan menjalankan
perintah gcloud berikut:
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"
Ganti kode berikut:
PROJECT_ID: Project ID Google Cloud Anda.USER_EMAIL: alamat email akun pengguna Anda (misalnya,name@example.com).
Memberikan izin ke agen layanan Knowledge Catalog
Agen layanan adalah akun layanan yang dikelola Google yang digunakan Knowledge Catalog untuk menjalankan kueri pemindaian di BigQuery atas nama Anda.
Di konsol Google Cloud , klik Activate Cloud Shell di toolbar. Lingkungan memerlukan waktu beberapa saat untuk menyediakan dan terhubung.
Buat agen layanan Knowledge Catalog:
gcloud beta services identity create --service=dataplex.googleapis.comPerintah ini akan membuat agen layanan jika belum disediakan dan menampilkan emailnya. Jika project Anda sudah memiliki agen layanan Knowledge Catalog, perintah ini akan menampilkan identitas yang ada tanpa melakukan perubahan apa pun.
Outputnya mirip dengan hal berikut ini:
serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex.Catat
PROJECT_NUMBERdi output untuk langkah berikutnya.Berikan peran BigQuery Job User (
roles/bigquery.jobUser) agar Knowledge Catalog dapat menjalankan tugas kueri di project Anda:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex." \ --role="roles/bigquery.jobUser"
Ganti kode berikut:
PROJECT_ID: Project ID Google Cloud Anda.PROJECT_NUMBER: nomor project Google Cloud Anda.
Berikan peran BigQuery Data Viewer (
roles/bigquery.dataViewer) agar agen layanan dapat membaca data dan skema tabel Anda:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex." \ --role="roles/bigquery.dataViewer"
Ganti kode berikut:
PROJECT_ID: Project ID Google Cloud Anda.PROJECT_NUMBER: nomor project Google Cloud Anda.
Membuat contoh set data dan tabel
Untuk mencoba pembuatan profil dan pemindaian kualitas data dengan aman tanpa menyentuh data produksi, siapkan set data BigQuery khusus dan buat tabel yang berisi data sampel berbagi sepeda dengan anomali yang disengaja, seperti duplikat dan nilai null.
Konsol
Di konsol Google Cloud , buka halaman BigQuery.
Di panel Explorer, klik View actions di samping project ID Anda, lalu klik Create dataset.
Di kolom Dataset ID, masukkan
quickstart_data_profile.Di daftar Data location, pilih us-central1 (Iowa).
Klik Create dataset.
Di editor kueri, masukkan kueri SQL berikut untuk membuat data sampel berbagi sepeda di tabel
bikeshare_tripsAnda: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;
Ganti
PROJECT_IDdengan project ID Google Cloud Anda.Klik Run.
gcloud
Di Cloud Shell, buat set data
quickstart_data_profiledi regionus-central1:bq --location=us-central1 mk --dataset PROJECT_ID:quickstart_data_profile
Ganti
PROJECT_IDdengan project IDGoogle Cloud Anda.Buat dan isi tabel contoh
bikeshare_trips: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;"
Membuat dan menjalankan pemindaian profil data
Pemindaian profil data melihat baris tabel Anda untuk menghitung insight statistik, termasuk jumlah nilai unik, rasio null, dan rentang distribusi data.
Konsol
Di konsol Google Cloud , buka halaman Data profiling & quality.
Klik Create data profile scan.
Di bagian Choose type, biarkan Data profile scan tetap dipilih.
Di bagian General, di kolom Display name, masukkan
bikeshare-trips-profile.Di bagian Table to scan, di kolom Table, klik Browse, pilih tabel
quickstart_data_profile.bikeshare_tripsdi project Anda, lalu klik Select.Untuk Mode, pilih Standard.
Untuk Scope, pilih Entire data.
Untuk Schedule, pilih On-demand.
Biarkan setelan lain tetap pada nilai defaultnya.
Klik Jalankan pemindaian.
Tugas pemindaian dimulai. Biasanya perlu waktu 3 hingga 5 menit bagi Knowledge Catalog untuk menjalankan pemindaian dan menghitung statistik untuk tabel Anda.
gcloud
Di Cloud Shell, buat pemindaian profil data:
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"
Ganti
PROJECT_IDdengan project IDGoogle Cloud Anda.Jalankan pemindaian profil data:
gcloud dataplex datascans run bikeshare-trips-profile \ --location=us-central1
Tugas pemindaian dimulai di latar belakang. Pemindaian biasanya memerlukan waktu 3 hingga 5 menit untuk selesai.
Meninjau hasil pemindaian profil data
Setelah pemindaian selesai, tinjau statistik kolom untuk memahami karakteristik data Anda.
Di konsol Google Cloud , buka halaman Data profiling & quality.
Dalam daftar pemindaian, klik bikeshare-trips-profile.
Jika pemindaian belum berjalan, klik Run now.
Di bagian Overview, tunggu hingga tugas pemindaian terbaru menampilkan Succeeded.
Gambar berikut menunjukkan tugas pemindaian di bagian Overview dengan status Succeeded:
Periksa hasil pemindaian untuk memahami distribusi data tabel Anda dan mengidentifikasi target validasi kualitas data yang potensial. Di tab Latest job results, Knowledge Catalog menampilkan metrik tingkat kolom, termasuk Null %, Unique count and %, Top values, dan Summary statistics.
Tabel berikut menunjukkan metrik profil yang harus diperiksa untuk setiap kolom tabel, cara menafsirkan hasilnya, dan aturan kualitas data yang harus ditargetkan:
Kolom tabel Metrik hasil profil Yang harus diperhatikan dan cara menafsirkan data Target validasi kualitas data duration_minutesStatistik ringkasan Nilai negatif terdeteksi: Nilai Min adalah -10.0menit. Durasi perjalanan yang telah berlalu tidak boleh negatif, yang menunjukkan rekaman sensor atau perjalanan yang tidak valid.Targetkan dengan aturan Validitas (Rentang) (seperti duration_minutes ≥ 1.0) untuk mewajibkan waktu perjalanan yang berlalu positif.start_station_id%Null Sekitar 5% nilai null: Persentase null lebih besar dari 0%, yang menunjukkan bahwa beberapa data tidak memiliki ID checkout stasiun (seperti perjalanan tanpa dok atau tanpa kios). Targetkan dengan aturan Completeness (Non-null) untuk menangkap dan menandai data yang tidak memiliki ID stasiun. subscriber_typeNilai teratas Kategori yang tidak terduga: Daftar nilai yang sering muncul mencantumkan kategori non-standar (seperti INVALID_TIER) bersama tingkat keanggotaan yang valid, yang menunjukkan input pengguna yang tidak divalidasi atau masalah penyerapan.Targetkan dengan aturan Validitas (Set) untuk menerapkan bahwa semua nilai yang masuk termasuk dalam daftar jenis keanggotaan yang diizinkan. trip_idJumlah unik dan % ID duplikat terdeteksi: Keunikan lebih rendah dari 100% (sekitar 98%), yang menunjukkan adanya data ID berulang. Kunci utama dan ID perjalanan harus 100% unik. Target dengan aturan Keunikan untuk menandai dan mencegah data perjalanan duplikat.
Temuan profil ini memberi Anda dasar pengukuran berbasis bukti untuk membuat aturan kualitas data yang ditargetkan.
Membuat dan menjalankan pemindaian kualitas data
Setelah menemukan tampilan data, siapkan aturan kualitas data otomatis untuk mendeteksi anomali. Pada langkah ini, Anda akan mengonfigurasi empat jenis aturan umum berdasarkan temuan profil Anda.
Konsol
Di konsol Google Cloud , buka halaman Data profiling & quality.
Klik Buat pemindaian kualitas data.
Di bagian General, di kolom Display name, masukkan
bikeshare-trips-quality.Di bagian Table to scan, di kolom Table, klik Browse, pilih tabel
quickstart_data_profile.bikeshare_trips, lalu klik Select.Untuk Scope, pilih Entire data.
Untuk Schedule, pilih On-demand.
Tetap gunakan nilai default untuk setelan lainnya, lalu klik Continue.
Di bagian Aturan kualitas data, klik Tambahkan Aturan, lalu pilih Jenis aturan bawaan.
Di panel Add rules, pilih kolom dan jenis aturan:
- Di kolom Choose columns, klik Browse, lalu pilih
duration_minutes,start_station_id,subscriber_type, dantrip_id. - Klik Pilih.
- Dalam daftar Choose rule types, pilih Range check, NULL check, Value-set check, dan Uniqueness check, lalu klik OK.
Dalam daftar aturan yang dibuat, centang kotak untuk setiap aturan berikut:
duration_minutes: Pemeriksaan rentangstart_station_id: Pemeriksaan NULLsubscriber_type: Pemeriksaan set nilaitrip_id: Pemeriksaan keunikan
Klik Pilih.
- Di kolom Choose columns, klik Browse, lalu pilih
Di tabel Aturan kualitas data, konfigurasikan parameter untuk aturan yang memerlukan nilai:
- Untuk
duration_minutes(Range check), klik Edit, masukkan1.0di kolom Min value, lalu klik Save. - Untuk
subscriber_type(Value-set check), klik Edit, klik Add Value untuk menambahkan setiap nilai yang diizinkan (Local Rider,Walk Up,Student Membership, danWeekender), lalu klik Save.
- Untuk
Klik Continue, lalu klik Run scan.
gcloud
Di Cloud Shell, buat file bernama
dq_bikeshare.yamldengan spesifikasi aturan yang menargetkan anomali yang ditemukan di profil Anda: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" EOFBuat pemindaian kualitas data:
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"
Ganti
PROJECT_IDdengan project IDGoogle Cloud Anda.Jalankan pemindaian kualitas data:
gcloud dataplex datascans run bikeshare-trips-quality \ --location=us-central1
Meninjau evaluasi aturan kualitas data
Periksa hasil kualitas data Anda untuk melihat cara aturan mengevaluasi data sampel dan mengidentifikasi anomali.
Di konsol Google Cloud , buka halaman Data profiling & quality.
Di tabel Scans, klik pemindaian bikeshare-trips-quality.
Di bagian Overview, klik View results untuk membuka detail tugas.
Di panel Job details, tinjau hasil evaluasi:
Status kualitas data: Seperti yang diharapkan, ketiga dimensi yang dievaluasi menunjukkan status Gagal.
- Validitas: Gagal. Kolom
duration_minutesberisi nilai negatif dansubscriber_typeberisi nilai keanggotaan yang tidak valid (INVALID_TIER). - Kelengkapan: Gagal. Kolom
start_station_idberisi nilai null. - Keunikan: Gagal. Kolom
trip_idberisi data duplikat.
- Validitas: Gagal. Kolom
Aturan: Di tabel Aturan, keempat aturan yang dievaluasi menampilkan status Gagal.
duration_minutes: Pemeriksaan rentang (Gagal)start_station_id: Pemeriksaan NULL (Gagal)subscriber_type: Pemeriksaan set nilai (Gagal)trip_id: Pemeriksaan keunikan (Gagal)
Untuk aturan yang gagal, Anda dapat menyalin kueri SQL di kolom Query to get failed records dan menjalankannya di BigQuery untuk mengisolasi dan memeriksa baris yang tidak valid.
Anda kini telah membuat profil tabel BigQuery untuk menemukan statistik kolom dan menggunakan insight tersebut untuk menentukan dan memvalidasi aturan kualitas data otomatis.
Pembersihan
Agar akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan pada halaman ini, ikuti langkah-langkah berikut.
Konsol
Di konsol Google Cloud , buka halaman Data profiling & quality.
Di tabel Scans, pilih bikeshare-trips-quality dan bikeshare-trips-profile.
Klik Hapus dan konfirmasi.
Buka halaman BigQuery.
Di panel Explorer, klik Datasets.
Pilih set data
quickstart_data_profile, lalu klik Delete.
gcloud
Di Cloud Shell, hapus pemindaian kualitas data, pemindaian profil data, dan set data sampel:
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
Ganti PROJECT_ID dengan project IDGoogle Cloud Anda.
Langkah berikutnya
- Melihat dan memecahkan masalah hasil pemindaian kualitas data
- Memantau metrik Knowledge Catalog
- Membangun alur kerja kualitas data policy-as-code menggunakan Antigravity CLI
- Mengelola aturan kualitas data sebagai kode dengan Terraform
- Menggunakan kembali aturan kualitas data di seluruh tabel
- Mempelajari kasus penggunaan Knowledge Catalog tambahan