Skip to main content

ディメンジョン・テーブル

Business Intelligence キューブ定義クラスをコンパイルする際に、レベルごとに生成されるテーブルについて説明します。

基本情報

キューブ定義クラスをコンパイルする際、年齢タイプおよび時間タイプのレベル以外の各レベルにもテーブルが生成されます。これらのテーブルは、ファクト・テーブルと同じパッケージ内に存在します。モデル・スキーマ内で他のディメンジョン・テーブル ID へのリンクを宣言する外部キー定義も、ディメンジョン・テーブル内に生成されます。

キューブを構築したり、インクリメンタルに更新すると、常にディメンジョン・テーブル (スター・テーブルとも呼ばれる) が更新されます。

レベルのディメンジョン・テーブルには、そのレベルのメンバごとに 1 つの行が含まれます。ディメンジョン・テーブルは、システムがベース・テーブルのレコードを処理する際に動的に作成されます。指定のレベルに対して、新たな一意の値が検出されるたびに、適切なディメンジョン・テーブルにその値が新しい行として追加されます。つまり、ディメンジョン・テーブルには必要な時点で行が自動的に追加され、特に操作する必要はありません。

ディメンジョン・テーブルの名前

キューブ定義で対応するレベルに factName 属性が指定されている場合、その値が該当するディメンジョン・テーブルの名前として使用されます。

この指定がない場合、ディメンジョン・テーブルの名前の形式は以下のとおりです。

Stargenerated_name

generated_name はファクト・テーブルの対応するフィールド名で、先頭に Dx は使用されません。例えば、ファクト・テーブル内で、Home City レベルのフィールド名が DxPostalCodeViaHomeCity であるとします。この場合、対応するディメンジョン・テーブルは StarPostalCodeViaHomeCity と名付けられます。

同じソース・プロパティまたはソース式を使用する 2 つのレベルは、同じ factName を持つ必要があります。

ディメンジョン・テーブル内の列

この行の列は以下のようになります。

  • ID — この行の ID。行の作成時に割り当てられます。

  • 列が 1 つ存在し、このメンバのキーが格納されます。このフィールドの名前は、このレベルに対応するファクト・テーブルの列名のフィールドと同じになります。前のセクションを参照してください。

  • このレベルのプロパティごとに 1 つの列が存在し、このメンバの実際のプロパティ値が格納されます。

    このフィールド名は Dx で始まり、前述したように、ソース・プロパティ名に基づくか、一意の番号として生成されます。

    linkClasslinkProperty を使用して、プロパティと、そのプロパティが属するレベルの両方を定義する場合、プロパティとレベルのフィールドの名前は同じものになります。このシナリオでは、システムによりプロパティのフィールド名の末尾に _Link が追加されます。

  • このレベルの親レベルごとに 1 つの列が存在し、このメンバの親の ID が格納されます。

    このフィールドの名前は、親レベルに対応するファクト・テーブルの列名と同じになります。

レベルの定義方法に応じて、メンバ名は以下のように確認できます。

  • 既定では、キーが名前として使用され、その名前は個別には格納されません。

  • レベルに isName="true" で定義されているプロパティが含まれる場合、(1 つの例外を除いて) メンバ名はそのプロパティが含まれる列に格納されます。例外は、プロパティが isReference="true" でも定義されている場合です。この場合、フィールドは実行時に計算されます。

FeedbackOpens in a new tab