Menggunakan dimensi yang berubah secara perlahan di Dataform

Dokumen ini menjelaskan cara menggunakan paket dimensi yang berubah secara perlahan open source di Dataform sebagai contoh penggunaan paket open source.

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

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

Paket Dimensi yang berubah perlahan membuat hubungan 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

Dataform memperbarui dimensi yang berubah perlahan setiap kali menjalankan tabel inkremental dimensi yang berubah perlahan. Sebaiknya jadwalkan tabel dimensi yang berubah perlahan untuk dijalankan setiap hari atau setiap jam, bergantung pada perincian perubahan yang ingin Anda catat.

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 perlahan, salin URL .tar.gz rilis terbaru.
  2. Buat repositori Dataform.
  3. Buat dan lakukan 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 guna 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 ke project, folder, dan organisasi.

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

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

Untuk membuat tabel dimensi yang berubah secara perlahan dengan 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 hal 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. ke file. Urutan ini menggambarkan

  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 secara 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 saat baris terakhir kali 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 berubah secara perlahan:

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