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:

  1. Buat set data dan tabel BigQuery dengan data bikeshare sampel yang berisi anomali yang disengaja, seperti duplikat dan nilai null, untuk menguji kemampuan pemindaian.
  2. 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.
  3. Tinjau hasil pemindaian profil data untuk menemukan pola dan potensi anomali.
  4. 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.
  5. Tinjau hasil evaluasi untuk melihat aturan kualitas mana yang lulus atau gagal.

Sebelum memulai

Siapkan project:

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

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

  4. Verify that billing is enabled for your Google Cloud project.

  5. Enable the Knowledge Catalog and BigQuery APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. 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.

    Enable the APIs

  6. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

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

  8. Verify that billing is enabled for your Google Cloud project.

  9. Enable the Knowledge Catalog and BigQuery APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. 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.

    Enable the APIs

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:

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.

  1. Di konsol Google Cloud , klik Activate Cloud Shell di toolbar. Penyediaan dan koneksi lingkungan memerlukan waktu beberapa saat.

  2. Buat agen layanan Knowledge Catalog:

    gcloud beta services identity create --service=dataplex.googleapis.com
    

    Perintah 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.iam.gserviceaccount.com
    

    Catat PROJECT_NUMBER di output untuk langkah berikutnya.

  3. 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.iam.gserviceaccount.com" \
       --role="roles/bigquery.jobUser"
    

    Ganti kode berikut:

    • PROJECT_ID: Google Cloud Project ID Anda.
    • PROJECT_NUMBER: nomor project Google Cloud Anda.
  4. 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.iam.gserviceaccount.com" \
       --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

  1. Di konsol Google Cloud , buka halaman BigQuery.

    Buka BigQuery

  2. Di panel Explorer, klik View actions di samping project ID Anda, lalu klik Create dataset.

  3. Di kolom Dataset ID, masukkan quickstart_data_profile.

  4. Di daftar Lokasi data, pilih us-central1 (Iowa).

  5. Klik Create dataset.

  6. Di editor kueri, masukkan kueri SQL berikut untuk membuat sampel data bikeshare di tabel bikeshare_trips Anda:

    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_ID dengan project ID Google Cloud Anda.

  7. Klik Run.

gcloud

  1. Di Cloud Shell, buat set data quickstart_data_profile di region us-central1:

    bq --location=us-central1 mk --dataset PROJECT_ID:quickstart_data_profile
    

    Ganti PROJECT_ID dengan Google Cloud project ID Anda.

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

  1. Di konsol Google Cloud , buka halaman Data profiling & quality.

    Buka Data profiling & quality

  2. Klik Buat pemindaian profil data.

  3. Di bagian Pilih jenis, biarkan Pemindaian profil data dipilih.

  4. Di bagian Umum, di kolom Nama tampilan, masukkan bikeshare-trips-profile.

  5. Di bagian Table to scan, di kolom Table, klik Browse, pilih tabel quickstart_data_profile.bikeshare_trips di project Anda, lalu klik Select.

  6. Untuk Mode, pilih Standard.

  7. Untuk Cakupan, pilih Seluruh data.

  8. Untuk Jadwal, pilih On-demand.

  9. Biarkan setelan lain tetap default.

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

  1. 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_ID dengan Google Cloud project ID Anda.

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

  1. Di konsol Google Cloud , buka halaman Data profiling & quality.

    Buka Data profiling & quality

  2. Dalam daftar pemindaian, klik bikeshare-trips-profile.

  3. Jika pemindaian belum dijalankan, klik Jalankan sekarang.

  4. Di bagian Ringkasan, tunggu hingga tugas pemindaian terbaru menampilkan status Berhasil.

    Gambar berikut menunjukkan tugas pemindaian di bagian Ringkasan dengan status Berhasil:

    Bagian ringkasan pemindaian profil perjalanan bikeshare yang menampilkan status tugas sebagai berhasil dan link Lihat hasil.

  5. 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_minutes Statistik ringkasan Nilai negatif terdeteksi: Nilai Min adalah -10.0 menit. 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_id Null % 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_type Nilai 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_id Jumlah 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

  1. Di konsol Google Cloud , buka halaman Data profiling & quality.

    Buka Data profiling & quality

  2. Klik Buat pemindaian kualitas data.

  3. Di bagian Umum, di kolom Nama tampilan, masukkan bikeshare-trips-quality.

  4. Di bagian Table to scan, di kolom Table, klik Browse, pilih tabel quickstart_data_profile.bikeshare_trips, lalu klik Select.

  5. Untuk Cakupan, pilih Seluruh data.

  6. Untuk Jadwal, pilih On-demand.

  7. Tetap gunakan nilai default untuk setelan lainnya, lalu klik Continue.

  8. Di bagian Aturan kualitas data, klik Tambahkan Aturan, lalu pilih Jenis aturan bawaan.

  9. Di panel Tambahkan aturan, pilih kolom dan jenis aturan:

    • Di kolom Pilih kolom, klik Jelajahi, lalu pilih duration_minutes, start_station_id, subscriber_type, dan trip_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 rentang
      • start_station_id: Pemeriksaan NULL
      • subscriber_type: Pemeriksaan set nilai
      • trip_id: Pemeriksaan keunikan
    • Klik Pilih.

  10. Di tabel Aturan kualitas data, konfigurasi parameter untuk aturan yang memerlukan nilai:

    • Untuk duration_minutes (Pemeriksaan rentang), klik Edit, masukkan 1.0 di 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, dan Weekender), lalu klik Simpan.
  11. Klik Lanjutkan, lalu klik Jalankan pemindaian.

gcloud

  1. Di Cloud Shell, buat file bernama dq_bikeshare.yaml dengan 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"
    EOF
    
  2. Buat 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_ID dengan Google Cloud project ID Anda.

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

  1. Di konsol Google Cloud , buka halaman Data profiling & quality.

    Buka Data profiling & quality

  2. Di tabel Scans, klik pemindaian bikeshare-trips-quality.

  3. Di bagian Ringkasan, klik Lihat hasil untuk membuka detail tugas.

  4. Di panel Job details, tinjau hasil evaluasi:

    • Status kualitas data: Seperti yang diharapkan, ketiga dimensi yang dievaluasi menunjukkan status Gagal.

      • Validitas: Gagal. Kolom duration_minutes berisi nilai negatif dan subscriber_type berisi nilai keanggotaan yang tidak valid (INVALID_TIER).
      • Kelengkapan: Gagal. Kolom start_station_id berisi nilai null.
      • Keunikan: Gagal. Kolom trip_id berisi duplikat data.
    • 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

  1. Di konsol Google Cloud , buka halaman Data profiling & quality.

    Buka Data profiling & quality

  2. Di tabel Scans, pilih bikeshare-trips-quality dan bikeshare-trips-profile.

  3. Klik Hapus dan konfirmasi.

  4. Buka halaman BigQuery.

    Buka BigQuery

  5. Di panel Penjelajah, klik Set data.

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