![]() 前へ |
![]() 次へ |
タイプ2のSCDには、値の完全な履歴が保持されます。トリガー属性の値が変更されると、カレント・レコードはクローズされます。変更されたデータ値で新しいレコードが作成され、この新しいレコードがカレント・レコードになります。各レコードには、レコードがアクティブであった期間を識別する有効日と有効期限があります。NULL以外の特定の日付値を有効期限として設定することもできます。カレント・レコードは、有効期限がNULL値または以前に指定した値のレコードです。
ディメンションのすべてのレベルに履歴データを格納する必要はありません。通常は、最下位レベルのみがバージョン管理されます。
タイプ2の緩やかに変化するディメンション(SCD)を定義するには、次の情報を指定する必要があります。
履歴データを格納するレベルに対して、有効日と有効期限として使用する属性を指定します。
履歴のバージョンの作成をトリガーするレベル属性を選択します。
サロゲート識別子、有効日属性または有効期限属性は、トリガー属性として選択できません。
レコードの各バージョンに異なるサロゲート識別子が割り当てられます。ビジネスIDは、論理的な意味で異なるバージョンを一緒に接続します。通常は、ビジネス・ニーズがある場合にタイプ2のSCDが使用されます。
タイプ2のSCD Customersに、HouseholdとCustomerの2つのレベルがあるとします。表: タイプ2のCustomersのディメンション属性は、タイプ2のSCD Customersのディメンション属性を示しています。
タイプ2のCustomersのディメンション属性
| 属性名 | 識別子 |
|---|---|
|
|
サロゲート識別子 |
|
|
ビジネス識別子 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
有効日 |
|
|
有効期限 |
Customerはリーフ・レベルで、Householdは非リーフ・レベルです。
Householdレベルでは、ID、BUSN_ID、ADDRESS、ZIP、EFFECTIVE_DATE、EXPIRATION_DATEという属性が実装されています。Customerレベルでは、ID、BUSN_ID、MARITAL_STATUS、HOME_PHONE、EFFECTIVE_DATE、EXPIRATION_DATEという属性が実装されています。Customers_tab表には、タイプ2のSCD Customersが実装されています(リレーショナル実装またはROLAP実装として)。表: タイプ2のSCD Customersのレベル属性が実装されている列は、Customers_tab表の列、およびディメンション・レベルと各列に実装されている属性の詳細を示しています。
タイプ2のSCD Customersのレベル属性が実装されている列
Customers_tab表の列名 |
レベル名 | ディメンション属性名 |
|---|---|---|
|
DIMENSION_KEY |
||
|
H_ID |
Household |
ID |
|
H_BUSN_ID |
Household |
BUSN_ID |
|
H_ADDRESS |
Household |
ADDRESS |
|
H_ZIP |
Household |
ZIP |
|
H_EFFECTIVE_DATE |
Household |
EFFECTIVE_DATE |
|
H_EXPIRATION_DATE |
Household |
EXPIRATION_DATE |
|
C_ID |
Customer |
ID |
|
C_BUSN_ID |
Customer |
BUSN_ID |
|
C_MARITAL_STATUS |
Customer |
MARITAL_STATUS |
|
C_HOME_PHONE |
Customer |
HOME_PHONE |
|
C_EFFECTIVE_DATE |
Customer |
EFFECTIVE_DATE |
|
C_EXPIRATION_DATE |
Customer |
EXPIRATION_DATE |
タイプ2のSCD Customersを作成する手順は、次のとおりです。
HouseholdレベルのZIP属性およびCustomerレベルのMARITAL_STATUS属性をトリガー属性として指定します。
2つの追加属性を使用して、そのレベルのレコードの有効日と有効期限を格納します。ディメンションの作成ウィザードを使用すると、これらの追加属性は最下位レベルに対してのみ作成されます。ディメンション・エディタを使用する場合は、これらの属性を明示的に作成して、その属性を該当するレベルに適用する必要があります。