Membuat profil dan memvalidasi kualitas data
Panduan memulai ini menunjukkan cara menggunakan Knowledge Catalog (sebelumnya dikenal sebagai Dataplex Universal Catalog) untuk membuat profil tabel BigQuery, menentukan aturan kualitas data berdasarkan insight profil, dan menjalankan pemindaian kualitas data.
Anda menyelesaikan langkah-langkah berikut:
- Buat set data dan tabel BigQuery dengan data bikeshare sampel yang berisi anomali yang disengaja, seperti duplikat dan nilai null, untuk menguji kemampuan pemindaian.
- Buat dan jalankan pemindaian profil data pada tabel. Pembuatan profil data menghitung statistik tingkat kolom seperti persentase null, jumlah nilai unik, dan distribusi nilai. Untuk mengetahui informasi selengkapnya, lihat Tentang pembuatan profil data.
- Tinjau hasil pemindaian profil data untuk menemukan pola dan potensi anomali.
- Tentukan aturan kualitas data berdasarkan temuan profil Anda dan jalankan pemindaian kualitas data. Pemindaian kualitas data memvalidasi data Anda terhadap aturan yang ditentukan untuk mengidentifikasi anomali. Untuk mengetahui informasi selengkapnya, lihat Tentang kualitas data otomatis.
- Tinjau hasil evaluasi untuk melihat aturan kualitas mana yang lulus atau gagal.
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.
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 diperlukan untuk membuat dan menjalankan pemindaian profil data dan kualitas data, serta mengelola resource BigQuery, minta administrator Anda untuk memberi Anda peran IAM berikut di project:
-
Membuat, menjalankan, dan menghapus pemindaian data:
Editor Dataplex DataScan (
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 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: Google Cloud Project ID 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. Penyediaan dan koneksi lingkungan memerlukan waktu beberapa saat.
Buat agen layanan Knowledge Catalog:
gcloud beta services identity create --service=dataplex.googleapis.comPerintah ini membuat agen layanan jika belum disediakan dan menampilkan emailnya. Jika project Anda sudah memiliki agen layanan Knowledge Catalog, perintah 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: Google Cloud Project ID 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: Google Cloud Project ID Anda.PROJECT_NUMBER: nomor project Google Cloud Anda.
Membuat contoh set data dan tabel
Untuk mencoba pemrofilan dan pemindaian kualitas data dengan aman tanpa menyentuh data produksi, siapkan set data BigQuery khusus dan buat tabel yang berisi data sampel langsung di project Anda.
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 Lokasi data, pilih us-central1 (Iowa).
Klik Create dataset.
Di editor kueri, masukkan kueri SQL berikut untuk membuat sampel data bikeshare 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 Google Cloud project ID Anda.Buat dan isi tabel sampel
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 di seluruh 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 Buat pemindaian profil data.
Di bagian Pilih jenis, biarkan Pemindaian profil data dipilih.
Di bagian Umum, di kolom Nama tampilan, 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 Cakupan, pilih Seluruh data.
Untuk Jadwal, pilih On-demand.
Biarkan setelan lain tetap default.
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 Google Cloud project ID 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 dijalankan, klik Jalankan sekarang.
Di bagian Ringkasan, tunggu hingga tugas pemindaian terbaru menampilkan status Berhasil.
Gambar berikut menunjukkan tugas pemindaian di bagian Ringkasan dengan status Berhasil:
Periksa hasil pemindaian untuk memahami distribusi data tabel Anda dan mengidentifikasi potensi target validasi kualitas data. Di tab Hasil tugas terbaru, Knowledge Catalog menampilkan metrik tingkat kolom, termasuk %Null, Jumlah dan %unik, Nilai teratas, dan Statistik ringkasan.
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 menafsirkannya Target validasi kualitas data duration_minutesStatistik ringkasan Nilai negatif terdeteksi: Nilai Min adalah -10.0menit. Elapsed durasi perjalanan tidak boleh negatif, yang menunjukkan rekaman sensor atau perjalanan yang tidak valid.Menargetkan dengan aturan Validitas (Rentang) (seperti duration_minutes ≥ 1.0) untuk mewajibkan waktu perjalanan yang positif.start_station_idNull % Sekitar 5% nilai null: Persentase null lebih besar dari 0%, menunjukkan bahwa beberapa data tidak memiliki ID checkout stasiun (seperti perjalanan tanpa stasiun atau tanpa kios). Menargetkan dengan aturan Kelengkapan (Tidak null) untuk menemukan dan menandai data dengan ID stasiun yang tidak ada. subscriber_typeNilai teratas Kategori yang tidak terduga: Daftar nilai yang sering muncul kategori non-standar (seperti INVALID_TIER) bersama tingkatan keanggotaan yang valid, yang menunjukkan input pengguna yang tidak divalidasi atau masalah penyerapan data.Menargetkan dengan aturan Validitas (Set) untuk menerapkan bahwa semua nilai yang masuk termasuk dalam daftar jenis keanggotaan yang diizinkan. trip_idJumlah dan %unik ID duplikat terdeteksi: Keunikan lebih rendah dari 100% (sekitar 98%), yang menunjukkan adanya catatan ID yang berulang. Kunci utama dan ID perjalanan harus 100% unik. Targetkan dengan aturan Keunikan untuk menandai dan mencegah duplikasi catatan perjalanan.
Temuan profil ini memberi Anda dasar pengukuran berbasis bukti untuk membuat aturan kualitas data yang ditargetkan.
Membuat dan menjalankan pemindaian kualitas data
Setelah mengetahui 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 Umum, di kolom Nama tampilan, 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 Cakupan, pilih Seluruh data.
Untuk Jadwal, 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 Tambahkan aturan, pilih kolom dan jenis aturan:
- Di kolom Pilih kolom, klik Jelajahi, lalu pilih
duration_minutes,start_station_id,subscriber_type, dantrip_id. - Klik Pilih.
- Dalam daftar Pilih jenis aturan, pilih Pemeriksaan rentang, Pemeriksaan NULL, Pemeriksaan set nilai, dan Pemeriksaan keunikan, lalu klik Oke.
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 Pilih kolom, klik Jelajahi, lalu pilih
Di tabel Aturan kualitas data, konfigurasi parameter untuk aturan yang memerlukan nilai:
- Untuk
duration_minutes(Pemeriksaan rentang), klik Edit, masukkan1.0di kolom Nilai min, lalu klik Simpan. - Untuk
subscriber_type(Pemeriksaan set nilai), klik Edit, klik Tambahkan Nilai untuk menambahkan setiap nilai yang diizinkan (Local Rider,Walk Up,Student Membership, danWeekender), lalu klik Simpan.
- Untuk
Klik Lanjutkan, lalu klik Jalankan pemindaian.
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 Google Cloud project ID 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 Anda 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 Ringkasan, klik Lihat hasil 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 duplikat data.
- Validitas: Gagal. Kolom
Aturan: Di tabel Aturan, semua 4 aturan yang dievaluasi menunjukkan 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 setiap aturan yang gagal, Anda dapat menyalin kueri SQL di kolom Kueri untuk mendapatkan data yang gagal dan menjalankannya di BigQuery untuk mengisolasi dan memeriksa baris yang tidak valid.
Sekarang Anda 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 Penjelajah, klik Set data.
Pilih set data
quickstart_data_profile, lalu klik Hapus.
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
Google Cloud project ID Anda.
Langkah berikutnya
- Melihat dan memecahkan masalah hasil pemindaian kualitas data
- Memantau pemindaian data dan menyiapkan pemberitahuan
- 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
- Menjelajahi kasus penggunaan Knowledge Catalog lainnya