親子関係表について
リレーショナル表では、親子階層内の異なるメンバー間の関係は、関連付けられたベース表内の識別子キーによって暗黙に定義されます。
リレーショナル表に定義されている親子階層ごとに、個別の親子関係表でメンバー間関係を明示的に定義する必要もあります。
親子関係表には、次の4つの列を含める必要があります:
-
メンバーを識別する列
-
メンバーの祖先を識別する列
祖先は、そのメンバーの親の場合もあれば、より上位の祖先の場合もあります。
-
親子階層におけるメンバーから祖先までのレベルの数を指定する関係距離列
-
メンバーがリーフ・メンバーであるかどうかを示すリーフ・ノード列(
1= Yes、0=No)
列名はユーザー定義にできます。 列のデータ型は、次の条件を満たす必要があります。
-
メンバーを識別する列および祖先を識別する列は、階層メンバーが含まれる論理表内の関連する列と同じデータ型を持つ。
-
距離列とリーフ列は
INTEGER列です。
親子関係表内の行については、次の条件に注意してください。
-
各メンバーは、距離が0の自身を指し示す行を持つ必要があります。
-
各メンバーは、それぞれの祖先を指し示す行を持つ必要があります。 ルート・メンバーの場合、これは親の値と距離の値がnullである終了行です。
表に示す例では、可読性を考慮してテキスト文字列を使用していますが、通常は、member_keyおよびancestor_keyには整数の代理キーを使用します(それらがソースのディメンション表に存在する場合)。
この表は親子関係表の例を示しています。各行は、従業員のメンバー間の関係を表しています。 親子階層についての図を参照してください。
| Member_Key | Ancestor_Key | 距離 | Isleaf |
|---|---|---|---|
|
Andrew |
Andrew |
0 |
0 |
|
Barbara |
Barbara |
0 |
0 |
|
Carlos |
Carlos |
0 |
0 |
|
Dawn |
Dawn |
0 |
0 |
|
Emre |
Emre |
0 |
0 |
|
Andrew |
null |
null |
0 |
|
Barbara |
Andrew |
1 |
0 |
|
Carlos |
Andrew |
1 |
1 |
|
Dawn |
Barbara |
1 |
1 |
|
Dawn |
Andrew |
2 |
1 |
|
Emre |
Barbara |
1 |
1 |
|
Emre |
Andrew |
2 |
1 |
親子関係表を親子階層に関連付ける前に、親子関係表を生成してから物理レイヤーにインポートする必要があります。 「階層」タブの「関係表の生成」機能を使用して、親子関係表を作成および移入するために実行されるスクリプトを生成します。
関係表を生成すると、2つのスクリプトが作成されます: 表を作成するスクリプトと、表をロードするスクリプトがあります。 作成およびロード・スクリプトに関する次の情報に注意してください:
-
作成スクリプトは1回のみ実行し、データ・ソース内に親子関係表を作成します。
-
ディメンション表内のデータに変更があった場合は、毎回ロード・スクリプトを実行する必要があります。 このため、ロード・スクリプトは通常はETL処理時に呼び出します。 ロード・スクリプトによって、親子関係表全体がリロードされます。増分的ではありません。
関係表スクリプトの生成の詳細は、「親子関係表を作成するためのスクリプトの生成」を参照してください。