Buat tabel

Di Dataform, tabel adalah salah satu jenis objek yang membentuk alur kerja. Anda dapat membuat tabel yang mereferensikan data dari sumber data yang dideklarasikan untuk alur kerja Anda atau dari tabel lain dalam alur kerja Anda. Dataform mengompilasi definisi tabel Anda menjadi SQL secara real time. Saat Anda memicu eksekusi, Dataform akan menjalankan kode SQL dan membuat tabel yang ditentukan di BigQuery.

Anda dapat membuat jenis tabel berikut dalam file SQLX type: "table":

  • table: tabel reguler.
  • incremental: tabel inkremental.
  • view: tampilan tabel. Untuk mengetahui informasi selengkapnya, lihat Pengantar tabel virtual.

Anda juga dapat menentukan partisi dan cluster tabel.

Untuk menyimpan catatan tentang tujuan tabel atau hubungannya dengan tabel lain dalam alur kerja Anda, Anda dapat menambahkan dokumentasi ke tabel atau kolom yang dipilih.

Untuk menguji data dalam tabel terhadap kondisi tertentu, Anda dapat membuat kueri pengujian kualitas data yang disebut pernyataan. Dataform menjalankan pernyataan setiap kali memperbarui alur kerja Anda dan memberi tahu Anda jika ada pernyataan yang gagal.

Untuk mengganti skema, database, dan nama default tabel yang dipilih, Anda dapat mengganti setelan tabel.

Untuk menonaktifkan pembuatan tabel atau menjalankan pernyataan SQL sebelum atau setelah pembuatan tabel, Anda dapat mengonfigurasi tindakan tambahan.

Untuk mengatur tabel di BigQuery setelah menjalankannya, Anda dapat menambahkan label BigQuery. Untuk mempelajari lebih lanjut, lihat Pengantar label.

Untuk membatasi akses data di tingkat kolom tabel, Anda dapat menambahkan tag kebijakan BigQuery. Untuk mempelajari lebih lanjut, lihat Pengantar kontrol akses tingkat kolom.

Selain menentukan tabel dalam file SQLX type: "table", Anda dapat membuat tabel kosong dengan menentukan kueri SQL kustom dalam file SQLX type: "operations". Anda mungkin ingin membuat tabel kosong agar layanan lain dapat mengisinya dengan data.

Sebelum memulai

  1. Di konsol Google Cloud , buka halaman Dataform.

    Buka Dataform

  2. Buat dan lakukan inisialisasi ruang kerja pengembangan di repositori Anda.

  3. Opsional: Nyatakan sumber data.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan guna menyelesaikan tugas dalam dokumen ini, minta administrator Anda untuk memberi Anda peran IAM Dataform Editor (roles/dataform.editor) di ruang kerja. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Membuat tabel

Bagian ini menunjukkan cara membuat tabel dengan Dataform core di Dataform.

Tentang definisi tabel

Untuk menentukan tabel, Anda menentukan jenis tabel dan menulis pernyataan SELECT dalam file SQLX type: "table". Kemudian, Dataform mengompilasi kode inti Dataform Anda menjadi SQL, menjalankan kode SQL, dan membuat tabel yang ditentukan di BigQuery.

Dalam pernyataan inti SELECT Dataform, Anda menentukan struktur tabel dan merujuk objek lain dari alur kerja Anda.

Selain menentukan tabel dalam file SQLX type: "table", Anda dapat membuat tabel kosong dengan menentukan kueri SQL kustom dalam file SQLX type: "operations". Untuk mengetahui informasi selengkapnya, lihat Membuat tabel kosong.

Merujuk dependensi dengan ref

Untuk mereferensikan tindakan alur kerja dalam pernyataan SELECT dan otomatis menambahkannya sebagai dependensi, gunakan fungsi ref. Dataform menjalankan dependensi sebelum tabel yang bergantung padanya untuk memverifikasi urutan pipeline yang benar.

Fungsi ref adalah fungsi inti Dataform bawaan yang sangat penting untuk pengelolaan dependensi di Dataform. Fungsi ref memungkinkan Anda mereferensikan dan secara otomatis bergantung pada objek berikut yang ditentukan dalam alur kerja Dataform, bukan meng-hard code nama skema dan tabel:

Dataform menggunakan fungsi ref untuk membuat hierarki dependensi semua tabel yang akan dibuat atau diperbarui.

Setelah dikompilasi, Dataform menambahkan pernyataan boilerplate ke pernyataan SQL, seperti CREATE, REPLACE, INSERT, atau MERGE.

Contoh kode berikut menunjukkan definisi tabel dengan penggunaan fungsi ref:

config { type: "table" }

SELECT
  order_date AS date,
  order_id AS order_id,
  order_status AS order_status,
  SUM(item_count) AS item_count,
  SUM(amount) AS revenue

FROM ${ref("store_clean")}

GROUP BY 1, 2

Dalam fungsi ref, Anda memberikan nama tabel atau deklarasi sumber data yang ingin Anda gunakan sebagai dependensi. Ini biasanya adalah nama file SQLX tempat deklarasi tabel atau sumber data tersebut ditentukan.

Jika nama tabel diganti, gunakan nama yang diganti dalam fungsi ref. Misalnya, referensikan tabel dengan config { name: "overridden_name" } sebagai ref("overridden_name"). Untuk mengetahui informasi selengkapnya, lihat Mengganti setelan tabel dan Merujuk tabel dengan nama tabel yang diganti.

Jika memiliki beberapa tabel dengan nama yang sama dalam skema yang berbeda, Anda dapat mereferensikan tabel tertentu dengan memberikan dua argumen ke fungsi ref: nama skema dan nama tabel.

Contoh kode berikut menunjukkan fungsi ref dengan dua argumen untuk menentukan tabel dalam skema tertentu:

config { type: "table" }
SELECT * FROM ${ref("schema", "store_clean")}

Anda juga dapat menambahkan dependensi tabel secara manual ke blok config untuk tabel, pernyataan, deklarasi sumber data, atau operasi SQL kustom yang tidak direferensikan dalam fungsi ref di pernyataan SELECT. Dataform menjalankan dependensi ini sebelum tabel dependen.

Contoh kode berikut menunjukkan dependensi tabel dalam blok config:

config { dependencies: [ "unreferenced_table" ] }
SELECT * FROM ...

Untuk mengetahui informasi selengkapnya tentang pengelolaan dependensi dalam alur kerja Anda, lihat Menetapkan dependensi.

Mereferensikan tabel lain dengan resolve

Fungsi resolve memungkinkan Anda mereferensikan deklarasi tabel atau sumber data dalam pernyataan SELECT seperti fungsi ref, tetapi tidak menambahkan referensi sebagai dependensi. Artinya, objek yang dirujuk menggunakan fungsi resolve tidak memengaruhi eksekusi tabel yang menggunakan fungsi resolve.

Untuk mengetahui informasi selengkapnya tentang fungsi inti Dataform bawaan, lihat Referensi inti Dataform.

Membuat file SQLX untuk definisi tabel

Simpan file SQLX definisi tabel di direktori definitions/. Untuk membuat file SQLX baru di direktori definitions/, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman Dataform.

    Buka Dataform

  2. Untuk membuka repositori, klik nama repositori.

  3. Untuk membuka ruang kerja pengembangan, klik nama ruang kerja.

  4. Di panel Files, di samping definitions/, klik More.

  5. Klik Create file.

  6. Di kolom Tambahkan jalur file, masukkan nama file yang diikuti dengan .sqlx setelah definitions/. Contoh, definitions/my-table.sqlx.

    Nama file hanya boleh berisi angka, huruf, tanda hubung, dan garis bawah.

  7. Klik Create file.

Menentukan jenis tabel

Untuk membuat definisi jenis tabel baru, ikuti langkah-langkah berikut:

  1. Di ruang kerja pengembangan Anda, di panel Files, luaskan direktori definitions/.
  2. Pilih file SQLX definisi tabel yang ingin Anda edit.
  3. Di file tersebut, masukkan cuplikan kode berikut:

    config { type: "TABLE_TYPE" }
    

    Ganti TABLE_TYPE dengan salah satu jenis tabel berikut:

    • table
    • incremental
    • view
  4. Opsional: Untuk menentukan tampilan terwujud, masukkan properti materialized di bagian type: "view" dalam format berikut:

    config {
      type: "view",
      materialized: true
    }
    

    Untuk mengetahui informasi selengkapnya, lihat ITableConfig.

  5. Opsional: Klik Format.

Menentukan struktur dan dependensi tabel

Untuk menulis pernyataan definisi tabel SELECT dan menentukan struktur dan dependensi tabel, ikuti langkah-langkah berikut:

  1. Di ruang kerja pengembangan Anda, di panel Files, luaskan direktori definitions/.
  2. Pilih file SQLX definisi tabel yang ingin Anda edit.
  3. Di bawah blok config, tulis pernyataan SELECT.
  4. Opsional: Klik Format.

Contoh kode berikut menunjukkan definisi tabel dengan pernyataan SELECT dan fungsi ref:

config { type: "table" }
SELECT
  customers.id AS id,
  customers.first_name AS first_name,
  customers.last_name AS last_name,
  customers.email AS email,
  customers.country AS country,
  COUNT(orders.id) AS order_count,
  SUM(orders.amount) AS total_spent
FROM
  dataform-samples.dataform_sample.crm_customers AS customers
  LEFT JOIN ${ref('order_stats')} orders
    ON customers.id = orders.customer_id

WHERE
  customers.id IS NOT NULL
  AND customers.first_name <> 'Internal account'
  AND country IN ('UK', 'US', 'FR', 'ES', 'NG', 'JP')

GROUP BY 1, 2, 3, 4, 5

Menambahkan dependensi tabel manual

Untuk menambahkan dependensi tabel yang tidak dirujuk dalam pernyataan SELECT tetapi perlu dijalankan sebelum tabel saat ini, ikuti langkah-langkah berikut:

  1. Di ruang kerja pengembangan Anda, di panel Files, luaskan direktori definitions/.
  2. Pilih file SQLX definisi tabel yang ingin Anda edit.
  3. Di blok config tabel, masukkan cuplikan kode berikut:

    dependencies: [ "DEPENDENCY_TABLE", ]
    

    Ganti DEPENDENCY_TABLE dengan nama file tabel yang ingin Anda tambahkan sebagai dependensi. Anda dapat memasukkan beberapa nama file.

  4. Opsional: Klik Format.

Contoh kode berikut menunjukkan dua tabel yang ditambahkan sebagai dependensi tabel manual ke blok config file definisi tabel:

config { dependencies: [ "some_table", "some_other_table" ] }

Mengganti setelan tabel

Anda dapat mengganti skema, database, dan nama default tabel yang dipilih.

Secara default, tabel mengikuti konfigurasi skema dan database yang Anda tetapkan di workflow_settings.yaml. Nama tabel sama dengan nama file SQLX definisi tabel.

Untuk mengganti skema dan nama tabel yang dipilih, ikuti langkah-langkah berikut:

  1. Buka ruang kerja pengembangan Anda.

  2. Di panel Files, luaskan definitions/.

  3. Buka file definisi tabel SQLX.

  4. Di blok config, masukkan cuplikan kode berikut:

     {
       schema: "OVERRIDDEN_SCHEMA",
       database: "OVERRIDDEN_DATABASE",
       name: "OVERRIDDEN_NAME"
     }
    

    Ganti kode berikut:

    • OVERRIDDEN_SCHEMA: set data BigQuery tempat Anda ingin membuat tabel.

    • OVERRIDDEN_DATABASE: ID project BigQuery tempat Anda ingin membuat tabel.

    • OVERRIDDEN_NAME: nama tabel, yang berbeda dengan nama file definisi tabel SQLX.

  5. Opsional: Klik Format.

Untuk mengetahui informasi selengkapnya, lihat Merujuk tabel dengan nama tabel yang diganti.

Membuat tabel terkelola Apache Iceberg

Gunakan Dataform untuk membuat tabel BigQuery dalam format tabel Iceberg. Tabel ini dikenal sebagai tabel terkelola Iceberg. Untuk mengetahui informasi selengkapnya tentang peran yang diperlukan dan tugas penyiapan lainnya, lihat langkah-langkah Sebelum memulai untuk alur kerja tabel terkelola Iceberg.

Buat definisi tabel Iceberg

Untuk membuat tabel, tentukan konfigurasi Iceberg di blok bigquery dari file definisi tabel.

Untuk menentukan tabel, ikuti langkah-langkah berikut:

  1. Buka ruang kerja pengembangan Anda.
  2. Di panel Files, luaskan definitions/.
  3. Buka file SQLX definisi tabel.
  4. Di blok config, tambahkan blok bigquery yang berisi blok iceberg dalam format berikut:

    config {
      type: "table",
      name: "my_table",
      uniqueKey: ["uniquekey"],
      bigquery: {
        iceberg: {
          bucket_name: "BUCKET_NAME"
        }
      }
    }
    

    Ganti BUCKET_NAME dengan nama bucket Cloud Storage tempat data tabel disimpan.

    Properti lainnya bersifat opsional dan memiliki nilai default jika tidak ditentukan. Untuk mengetahui informasi selengkapnya, lihat properti iceberg.

    Anda dapat memberikan nilai untuk setiap tabel atau menetapkan default tingkat alur kerja di workflow_settings.yaml. Anda dapat mengganti default tingkat alur kerja dengan menyetel properti secara eksplisit di blok iceberg.

Membuat partisi dan cluster tabel

Bagian ini menunjukkan cara menggunakan Dataform core untuk membuat partisi dan cluster tabel. BigQuery mendukung tabel berpartisi dan pengelompokan tabel. Untuk mengetahui informasi selengkapnya, lihat Pengantar tabel berpartisi dan Membuat dan menggunakan tabel yang dikelompokkan.

Membuat partisi tabel

Untuk membuat partisi tabel, ikuti langkah-langkah berikut:

  1. Buka ruang kerja pengembangan Anda.
  2. Di panel Files, luaskan definitions/.
  3. Buka file SQLX definisi tabel.
  4. Di blok config, tambahkan blok bigquery di bawah deklarasi jenis tabel dalam format berikut:

    config {
      type: "table",
      bigquery: {
      }
    }
    
  5. Di blok bigquery, masukkan cuplikan kode berikut:

        partitionBy: "PARTITION_EXPRESSION"
    

    Ganti PARTITION_EXPRESSION dengan ekspresi untuk mempartisi tabel.

  6. Opsional: Klik Format.

Contoh kode berikut menunjukkan cara mempartisi tabel per jam dalam file SQLX definisi tabel:

config {
  type: "table",
  bigquery: {
    partitionBy: "DATETIME_TRUNC(<timestamp_column>, HOUR)"
  }
}

Contoh kode berikut menunjukkan cara mempartisi tabel menurut nilai bilangan bulat dalam file SQLX definisi tabel:

config {
  type: "table",
  bigquery: {
    partitionBy: "RANGE_BUCKET(<integer_column>, GENERATE_ARRAY(0, 1000000, 1000))"
  }
}

Menetapkan filter partisi

Untuk menyetel filter partisi, ikuti langkah-langkah berikut:

  1. Buka ruang kerja pengembangan Anda.
  2. Di panel Files, luaskan definitions/.
  3. Buka file SQLX definisi tabel berpartisi.
  4. Di blok bigquery, masukkan cuplikan kode berikut:

    requirePartitionFilter : true
    
  5. Opsional: Klik Format.

Contoh kode berikut menunjukkan filter partisi yang ditetapkan di blok bigquery dari file SQLX tabel yang dipartisi:

config {
  type: "table",
  bigquery: {
    partitionBy: "DATE(ts)",
    requirePartitionFilter : true
  }
}
SELECT CURRENT_TIMESTAMP() AS ts

Untuk mengetahui informasi selengkapnya tentang filter partisi di BigQuery, lihat Menetapkan atribut wajibkan filter partisi pada tabel berpartisi.

Menetapkan periode retensi untuk partisi

Untuk mengontrol retensi semua partisi dalam tabel berpartisi, ikuti langkah-langkah berikut:

  1. Buka ruang kerja pengembangan Anda.
  2. Di panel Files, luaskan definitions/.
  3. Buka file SQLX definisi tabel berpartisi.
  4. Di blok bigquery, masukkan cuplikan kode berikut:

    partitionExpirationDays: NUMBER_OF_DAYS
    

    Ganti NUMBER_OF_DAYS dengan jumlah hari yang diinginkan untuk menyimpan partisi.

  5. Opsional: Klik Format.

Contoh kode berikut menunjukkan periode retensi untuk partisi yang ditetapkan ke 14 hari di blok bigquery file SQLX tabel berpartisi:

config {
  type: "table",
  bigquery: {
    partitionBy: "DATE(ts)",
    partitionExpirationDays: 14,
  }
}
SELECT CURRENT_TIMESTAMP() AS ts

Membuat cluster tabel

Untuk membuat cluster tabel, ikuti langkah-langkah berikut:

  1. Buka ruang kerja pengembangan Anda.
  2. Di panel Files, luaskan definitions/.
  3. Buka file SQLX definisi tabel.
  4. Di blok bigquery, masukkan cuplikan kode berikut:

        clusterBy: ["CLUSTER_COLUMN"]
    

    Ganti CLUSTER_COLUMN dengan nama kolom yang ingin Anda gunakan untuk mengelompokkan tabel. Untuk mengetahui informasi selengkapnya, lihat clustering_column_list.

  5. Opsional: Klik Format.

Contoh kode berikut menunjukkan tabel berpartisi yang dikelompokkan menurut kolom