変化が緩やかなディメンション パッケージには、Dataform で変更可能なデータソースからタイプ 2 の変化が緩やかなディメンション テーブルを作成する一般的なデータモデルが含まれています。
変化が緩やかなディメンション テーブルは、顧客や商品など、定期的なスケジュールではなく、予測できない変更が生じる可能性があるデータを含む増分テーブルです。タイプ 2 の変化が緩やかなディメンション テーブルでは、既存のテーブルの行を上書きすることなく、新しいデータが新しい行に追加されます。テーブル履歴は、変化が緩やかなディメンションキーの特定のキーの複数のレコードに保存されます。各レコードには一意のキーがあります。
変化が緩やかなディメンション パッケージは、指定された NAME
に対して BigQuery で次のリレーションを作成します。
NAME
-scd_valid_from
フィールドとscd_valid_to
フィールドを持つビューNAME_updates
- ソーステーブルの変更履歴を格納する増分テーブル
Dataform は、変化が緩やかなディメンションの増分テーブルを実行するたびに、変化が緩やかなディメンションを更新します。キャプチャする変更の粒度に応じて、変化が緩やかなディメンション テーブルを毎日または毎時間実行するようにスケジュールを設定できます。
Dataform の実行をスケジュールする方法については、Cloud Composer を使用して実行をスケジュールするまたはWorkflows と Cloud Scheduler を使用して実行をスケジュールするをご覧ください。
始める前に
- 変化が緩やかなディメンションのリリースページで、最新のリリースの
.tar.gz
URL をコピーします。 - Dataform リポジトリの作成
- リポジトリ内でワークスペースを作成して初期化します。
- Dataform リポジトリに変化が緩やかなディメンション パッケージをインストールします。
必要なロール
パッケージの構成に必要な権限を取得するには、ワークスペースに対するDataform 編集者 (roles/dataform.editor
)IAM ロールの付与を管理者に依頼してください。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
変化が緩やかなディメンション パッケージを使用して変化が緩やかなディメンション テーブルを作成する
Dataform で変化が緩やかなディメンション パッケージを使用して変化が緩やかなディメンション テーブルを作成するには、次の操作を行います。
[ファイル] ペインで、
definitions/
の横にある [その他] メニューをクリックします。[ファイルを作成] をクリックします。
[新しいファイルを作成] ペインで、次の操作を行います。
[ファイルパスを追加] フィールドにおいて、
definitions/
の後で、ファイル名の後に.js
を入力します。例:definitions/definitions.js
[ファイルを作成] をクリックします。
[ファイル] ペインで、新しく作成した
.js
ファイルを選択します。パッケージを次の形式でファイルにインポートします。
const CONSTANT-NAME = require("dataform-scd");
CONSTANT-NAME は、定数の名前に置き換えます(例:
scd
)。変化が緩やかなディメンション テーブルは、次の形式で作成します。
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", }, }, });
以下を置き換えます。
- UNIQUE_ID: テーブル内の行の一意の識別子
- UPDATED_AT: 行が最後に変更されたタイムスタンプまたは日付を格納するフィールドの名前(例:
updated_at
) - SOURCE_SCHEMA: ソーステーブルのスキーマ(例:
dataform_scd_example
) - SOURCE_SCHEMA_NAME: ソーステーブルの名前(例:
source_data
)
省略可: [書式] をクリックします。
次のコードサンプルは、変化が緩やかなディメンション パッケージを使用して、緩やかに変化するディメンション テーブルの定義を示しています。
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",
});
次のステップ
- Dataform で増分テーブルを作成する方法については、増分テーブルを構成するをご覧ください。
- JavaScript インクルードを使用した Dataform のパッケージの詳細については、Dataform での JavaScript の概要をご覧ください。
- 独自のパッケージを作成して Dataform で使用する方法については、Dataform にパッケージを作成するをご覧ください。