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 kolomscd_valid_from
danscd_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
- Di halaman rilis dimensi yang berubah secara perlahan, salin URL
.tar.gz
rilis terbaru. - Buat repositori Dataform.
- Buat dan inisialisasi ruang kerja di repositori.
- 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:
Di panel Files, di samping
definitions/
, klik menu More.Klik Create file.
Di panel Create new file, lakukan langkah 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. hilang atau rusak.Impor 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 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
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
- Untuk mempelajari cara membuat tabel inkremental di Dataform, lihat Mengonfigurasi tabel inkremental.
- Untuk mempelajari lebih lanjut tentang paket yang disertakan dalam Dataform dengan JavaScript, lihat Pengantar JavaScript di Dataform.
- Untuk mempelajari cara membuat paket Anda sendiri dan menggunakannya dalam Dataform, lihat Membuat paket dalam Dataform.