Menggunakan dimensi yang berubah Perlahan-lahan di Dataform

Dokumen ini berisi cara menggunakan paket dimensi yang Berubah secara perlahan dari open source di Dataform sebagai contoh penggunaan paket open source.

Paket dimensi yang berubah secara perlahan berisi model data umum untuk membuat tabel dimensi jenis 2 yang berubah secara perlahan dari sumber data yang dapat diubah dalam Dataform.

Tabel dimensi yang berubah secara perlahan adalah tabel inkremental berisi data yang dapat berubah tanpa terduga, bukan jadwal rutin, seperti pelanggan atau produk. Pada tabel dimensi jenis 2 yang perlahan berubah, data baru ditambahkan ke baris baru tanpa menimpa baris tabel yang ada. Histori tabel dipertahankan dalam beberapa data untuk kunci tertentu dalam kunci dimensi yang berubah secara perlahan. Setiap data memiliki kunci unik.

Paket dimensi yang berubah secara perlahan akan membuat relasi berikut di BigQuery untuk NAME tertentu:

  • NAME - tampilan dengan kolom scd_valid_from dan scd_valid_to
  • NAME_updates - tabel inkremental yang menyimpan histori perubahan tabel sumber

Pembaruan bentuk data mengubah dimensi secara perlahan setiap kali mengeksekusi tabel inkremental dimensi yang berubah secara perlahan. Anda mungkin ingin menjadwalkan tabel dimensi yang berubah secara perlahan agar berjalan setiap hari atau setiap jam, bergantung pada tingkat perincian perubahan yang ingin Anda ambil.

Untuk mempelajari cara menjadwalkan eksekusi Dataform, lihat Menjadwalkan eksekusi dengan Cloud Composer atau Menjadwalkan eksekusi dengan Workflows dan Cloud Scheduler.

Sebelum memulai

  1. Di halaman rilis dimensi yang berubah secara perlahan, salin URL .tar.gz rilis terbaru.
  2. Buat repositori Dataform.
  3. Buat dan inisialisasi ruang kerja di repositori.
  4. Instal paket Dimensi yang berubah secara perlahan di repositori Dataform Anda.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk mengonfigurasi paket, minta administrator untuk memberi Anda peran IAM Dataform Editor (roles/dataform.editor) di ruang kerja. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.

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

Membuat tabel dimensi yang berubah perlahan dengan paket dimensi yang perlahan berubah

Untuk membuat tabel dimensi yang berubah secara perlahan menggunakan paket paket dimensi yang Berubah secara perlahan di Dataform, ikuti langkah-langkah berikut:

  1. Di panel Files, di samping definitions/, klik menu More.

  2. Klik Create file.

  3. Di panel Create new file, lakukan langkah berikut:

    1. Di kolom Add a file path, setelah definitions/, masukkan nama file, diikuti dengan .js. Contoh, definitions/definitions.js.

    2. Klik Create file.

  4. Di panel Files, pilih .js yang baru dibuat. hilang atau rusak.

  5. Impor paket ke file dalam format berikut:

     const CONSTANT-NAME = require("dataform-scd");
    

    Ganti CONSTANT-NAME dengan nama untuk konstanta, misalnya, scd.

  6. Buat tabel dimensi yang berubah perlahan dalam format berikut:

    scd("source_data_scd", {
      uniqueKey: "UNIQUE_ID",
      timestamp: "UPDATED_AT", // A field that stores a timestamp or date of when the row was last changed.
      source: {
        schema: "SOURCE_SCHEMA",     // The source table to build slowly changing dimensions from.
        name: "SOURCE_SCHEMA_NAME",
      },
      incrementalConfig: {        // Any configuration parameters to apply to the incremental table that will be created.
        bigquery: {
          partitionBy: "UPDATED_AT",
        },
      },
    });
    

    Ganti kode berikut:

    • UNIQUE_ID: ID unik untuk baris dalam tabel
    • UPDATED_AT: nama untuk kolom yang menyimpan stempel waktu atau tanggal baris terakhir diubah, misalnya updated_at
    • SOURCE_SCHEMA: skema tabel sumber, misalnya dataform_scd_example
    • SOURCE_SCHEMA_NAME: nama tabel sumber, misalnya source_data
  7. Opsional: Klik Format.

Contoh kode berikut menunjukkan definisi tabel dimensi yang berubah secara perlahan yang dibuat dengan paket dimensi yang perlahan berubah:

const scd = require("dataform-scd");

/**
 * Create an SCD table on top of the table defined in source_data.sqlx.
 */
const { updates, view } = scd("source_data_scd", {
  // A unique identifier for rows in the table.
  uniqueKey: "user_id",
  // A field that stores a timestamp or date of when the row was last changed.
  timestamp: "updated_at",
  // The source table to build slowly changing dimensions from.
  source: {
    schema: "dataform_scd_example",
    name: "source_data",
  },
  // Any tags that will be added to actions.
  tags: ["slowly-changing-dimensions"],
  // Documentation of table columns
  columns: {user_id: "User ID", some_field: "Data Field", updated_at: "Timestamp for updates"},
  // Configuration parameters to apply to the incremental table that will be created.
  incrementalConfig: {
    bigquery: {
      partitionBy: "updated_at",
    },
  },
});

// Additional customization of the created models can be done by using the returned actions objects.
updates.config({
  description: "Updates table for SCD",
});

Langkah selanjutnya