ディメンジョン・テーブル
基本情報
キューブ定義クラスをコンパイルする際、年齢タイプおよび時間タイプのレベル以外の各レベルにもテーブルが生成されます。これらのテーブルは、ファクト・テーブルと同じパッケージ内に存在します。モデル・スキーマ内で他のディメンジョン・テーブル ID へのリンクを宣言する外部キー定義も、ディメンジョン・テーブル内に生成されます。
キューブを構築したり、インクリメンタルに更新すると、常にディメンジョン・テーブル (スター・テーブルとも呼ばれる) が更新されます。
レベルのディメンジョン・テーブルには、そのレベルのメンバごとに 1 つの行が含まれます。ディメンジョン・テーブルは、システムがベース・テーブルのレコードを処理する際に動的に作成されます。指定のレベルに対して、新たな一意の値が検出されるたびに、適切なディメンジョン・テーブルにその値が新しい行として追加されます。つまり、ディメンジョン・テーブルには必要な時点で行が自動的に追加され、特に操作する必要はありません。
ディメンジョン・テーブルの名前
キューブ定義で対応するレベルに factName 属性が指定されている場合、その値が該当するディメンジョン・テーブルの名前として使用されます。
この指定がない場合、ディメンジョン・テーブルの名前の形式は以下のとおりです。
Stargenerated_name
generated_name はファクト・テーブルの対応するフィールド名で、先頭に Dx は使用されません。例えば、ファクト・テーブル内で、Home City レベルのフィールド名が DxPostalCodeViaHomeCity であるとします。この場合、対応するディメンジョン・テーブルは StarPostalCodeViaHomeCity と名付けられます。
同じソース・プロパティまたはソース式を使用する 2 つのレベルは、同じ factName を持つ必要があります。
ディメンジョン・テーブル内の列
この行の列は以下のようになります。
-
ID — この行の ID。行の作成時に割り当てられます。
-
列が 1 つ存在し、このメンバのキーが格納されます。このフィールドの名前は、このレベルに対応するファクト・テーブルの列名のフィールドと同じになります。前のセクションを参照してください。
-
このレベルのプロパティごとに 1 つの列が存在し、このメンバの実際のプロパティ値が格納されます。
このフィールド名は Dx で始まり、前述したように、ソース・プロパティ名に基づくか、一意の番号として生成されます。
linkClass と linkProperty を使用して、プロパティと、そのプロパティが属するレベルの両方を定義する場合、プロパティとレベルのフィールドの名前は同じものになります。このシナリオでは、システムによりプロパティのフィールド名の末尾に _Link が追加されます。
-
このレベルの親レベルごとに 1 つの列が存在し、このメンバの親の ID が格納されます。
このフィールドの名前は、親レベルに対応するファクト・テーブルの列名と同じになります。
レベルの定義方法に応じて、メンバ名は以下のように確認できます。
-
既定では、キーが名前として使用され、その名前は個別には格納されません。
-
レベルに isName="true" で定義されているプロパティが含まれる場合、(1 つの例外を除いて) メンバ名はそのプロパティが含まれる列に格納されます。例外は、プロパティが isReference="true" でも定義されている場合です。この場合、フィールドは実行時に計算されます。