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 kolomscd_valid_from
danscd_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
- Di halaman rilis dimensi yang berubah perlahan, salin URL
.tar.gz
rilis terbaru. - Buat repositori Dataform.
- Buat dan lakukan inisialisasi ruang kerja di repositori.
- 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:
Di panel Files, di samping
definitions/
, klik menu More.Klik Create file.
Di panel Create new file, lakukan hal berikut:
Di kolom Add a file path, setelah
definitions/
, masukkan nama file diikuti dengan.js
. Contoh,definitions/definitions.js
.Klik Create file.
Di panel Files, pilih
.js
yang baru dibuat. ke file. Urutan ini menggambarkanImpor paket ke file dalam format berikut:
const CONSTANT-NAME = require("dataform-scd");
Ganti CONSTANT-NAME dengan nama untuk konstanta, misalnya,
scd
.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
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
- Untuk mempelajari cara membuat tabel inkremental di Dataform, lihat Mengonfigurasi tabel inkremental.
- Untuk mempelajari paket di Dataform dengan menyertakan JavaScript lebih lanjut, lihat Pengantar JavaScript di Dataform.
- Untuk mempelajari cara membuat paket Anda sendiri dan menggunakannya di Dataform, lihat Membuat paket di Dataform.