ファクト表の設定とピボット・ディメンションの特定
Autonomous Data Warehouseのファクト表に、フェデレーテッド・パーティションを持つEssbaseキューブのデータが格納されます。フェデレーテッド・パーティションの要件を満たすファクト表がない場合は、それを作成する必要があります。また、Essbaseキューブからピボット・ディメンションを選択できるように、ピボット・ディメンションとはどのようなものかを理解しておく必要があります。
この項を開始する前に、Essbaseアプリケーションおよびキューブを作成します(まだ作成していない場合)。
ファクト表の作成
フェデレーテッド・パーティションの場合、ファクト表にはEssbaseキューブのデータ値が格納されます。必要なファクト表がAutonomous Data Warehouse内にない場合は、それを作成する必要があります。
開始する前に、ファクト表に空のスキーマがあることを確認します。「フェデレーテッド・パーティションのスキーマの作成」を参照してください。
ファクト表は、Essbase対応の形式である必要があります。つまり、その内容と形状について次の要件を満たしている必要があります。
-
キューブの(非属性)ディメンションはそれぞれ、1つの列ヘッダーとして表されている必要があります。ただし、キューブのディメンションの1つ(通常は、メジャー/勘定科目を含むディメンション)を2つ以上の列にピボットする必要があります。
ノート:
このドキュメント内の他の部分では、ピボットされるディメンションはピボット・ディメンションと呼ばれます。
-
ファクト表は、Essbaseセル交差のシーケンスごとに1行の、一意のレコード(重複なし)で構成されている必要があります。
Essbaseデータ・エクスポートを熟知している場合は、ファクト表の形状が、Essbase列エクスポートと同じであることがわかるでしょう。
列エクスポートと同様に、ファクト表に次のものが含まれている必要があります:
-
アウトラインの(非属性)ディメンションごとに1つの列(ピボット・ディメンション以外)
-
ピボット・ディメンションの保管済メンバーごとに1つの列
メジャー・ディメンションがピボットされたファクト表(つまり、ピボット・ディメンション)の例を次に示します。ピボット・ディメンションは、その保管済メンバーが列ヘッダー(SALES、COGS、MARKETING、PAYROLL、MISC、INTITIAL_INVENTORYおよびADDITIONS)になるため、ファクト表の形状に影響します。

SQLを使用してファクト表を作成するか、Essbaseデータ・エクスポートからそれを作成することができます。Autonomous Data Warehouseのツールを使用して、またはEssbaseデータ・ロード機能を使用して、ファクト表にデータをロードできます。
ファクト表を作成するためのその他のガイドラインを次に示します:
-
ファクト表の列は1000より少なくする必要があります。
-
Essbaseにおいてマップされる列を、属性ディメンションに含めないでください。
-
ファクト表の精度をIEEE binary64 (double)より小さくしないでください。
-
ファクト表には、ディメンション・メンバーについて、1024ビット文字長でNVARCHAR2型が使用された国際化文字列が含まれている必要があります。
ファクト表の作成例
Autonomous Data Warehouse内にファクト表を作成するには、SQLを使用できます。
-
SQL Developerまたは選択したツールを使用して、スキーマ所有者としてAutonomous Data Warehouseにログインします(「フェデレーテッド・パーティションのスキーマの作成」のステップから)。
-
ファクト表がない場合は、SQLを使用してファクト表を作成します。
たとえば、次のSQLでは、EssbaseキューブSample Basicからのデータ・エクスポートでファクト表が作成されます。
CREATE TABLE "SAMP_FACT" ( "PRODUCT" NVARCHAR2(1024), "MARKET" NVARCHAR2(1024), "YEAR" NVARCHAR2(1024), "SCENARIO" NVARCHAR2(1024), "SALES" NUMBER(38,0), "COGS" NUMBER(38,0), "MARKETING" NUMBER(38,0), "PAYROLL" NUMBER(38,0), "MISC" NUMBER(38,0), "INITIAL_INVENTORY" NUMBER(38,0), "ADDITIONS" NUMBER(38,0) ) NOCOMPRESS LOGGING PARALLEL 4;
ノート
-
前述の例では、ファクト表名はSAMP_FACTで、Sample Basicに基づいています。
-
最適なパフォーマンスを得るには、ファクト表のすべての非数値列がNVARCHAR2(1024)型で、すべての数値列がNUMBER型である必要があります。
-
PARALLEL 4を追加して、Autonomous Data Warehouseでインデックスのパラレル作成を有効にすることをお薦めします。
-
メタデータ列では、NULL値を含めることはできません。
-
キューブの使用に増分データ・ロードやバッチ・スクリプト更新などのデータ生成プロセスが含まれる場合、OracleではNOCOMPRESSをお薦めします。キューブを主に読取り操作に使用する場合は、COMPRESSを使用してレポート用にファクト表を最適化します。
-
ファクト表の作成時に次の検証エラーが発生した場合は、NULL行を削除します。
ORA-18265: fact table key column ("<DIM_NAME>") with value ('') not in dimension("<Name_of_Column") star table key column
-
最適なパフォーマンスを得るためには、特に必要でないかぎり、表に特定の制約を追加しないでください。
-
前述の例では、ファクト表名はSample Basicに基づいています。Sample Basicは、Essbaseファイル・カタログのギャラリで使用できます。このサンプル・キューブまたは他のEssbaseキューブからデータをエクスポートし、それをロードしてファクト表を作成できます。これを実行する前に、フェデレーテッド・パーティション・アプリケーションにデータをロードするための資格証明を設定する必要があります。資格証明を設定し、DATAEXPORTコマンドを使用してデータをDBMS形式にエクスポートする方法について学習するには、「フェデレーテッド・パーティションのデータ・ロード」を参照してください。
ピボット・ディメンションの特定
フェデレーテッド・パーティションの設計の一環として、ピボット・ディメンションを選択する必要があります。ピボット・ディメンションは、数値データ値を表すためにEssbaseキューブ・アウトラインから指定するディメンションです。
-
ピボット・ディメンションは、メジャー/勘定科目である必要はありませんが、そうであってもかまいません。
-
ピボット・ディメンションのすべての保管済メンバーは、Autonomous Data Warehouseで数値データの値を表すファクト表の列にマップされる必要があります。
-
Essbaseブロック・ストレージ(BSO)の計算スクリプトを実行する必要がある場合は、ピボット・ディメンションとして密ディメンションを選択します。ピボット・ディメンションが疎である場合、計算スクリプトは、フェデレーテッド・パーティションではサポートされていません。
-
ピボット・ディメンションには、多数のメンバーではなく、ほとんど変化のない複数のメンバー名が含まれている必要があります。理由: Essbaseキューブ・アウトラインのピボット・ディメンションを(保管済メンバーの追加または名前変更などによって)変更すると、Autonomous Data Warehouseのファクト表に対応する手動更新が必要になり、フェデレーテッド・パーティションの再作成も必要になります。
-
複雑な動的式を必要とするメンバー(例としてSample Basicを使用する"Opening Inventory"や"Ending Inventory"など)を含むEssbaseディメンションは、ピボット・ディメンションとして選択できません。
-
フェデレーテッド・パーティションの作成時に選択したピボット・ディメンションを指定します。
-
Oracle Databaseでは列の上限が1,000個であり、ピボット・ディメンションではこの上限が継承されます。ピボット・ディメンションにおける対象となる列メンバーの数を特定して、この上限に到達しないようにしてください。ピボット・ディメンション内の可能性がある保管済メンバー組合せの数とキューブ内のディメンションの数の合計は、1,000以下である必要があります。
-
集約ストレージ・キューブでは、マルチレベル保管済メンバー階層を含むディメンションをピボット・ディメンションとして選択しないでください。動的階層を含むピボット・ディメンションを選択するか、(すべてのメンバーがレベル0保管済メンバーである)フラットな単一レベル階層の保管済階層を選択してください。