ファクト表の設定とピボット・ディメンションの識別

Autonomous Data Warehouseのファクト表に、フェデレーテッド・パーティションを含むEssbaseキューブのデータが格納されます。フェデレーテッド・パーティションの要件を満たすファクト表がない場合は、作成する必要があります。Essbaseキューブから選択できるように、ピボット・ディメンションが何かを理解する必要もあります。

この項を開始する前に、Essbaseアプリケーションとキューブを作成します(まだない場合)。

ファクト表の作成

フェデレーテッド・パーティションの場合、ファクト表にはEssbaseキューブのデータ値が格納されます。Autonomous Data Warehouseに必須のファクト表がない場合は、作成する必要があります。

開始する前に、ファクト表のための空のスキーマがあることを確認してください。フェデレーテッド・パーティションのスキーマの作成を参照してください。

ファクト表は、Essbase対応のフォーマットである必要があります。これは、その内容と形状が次の要件を満たしていることを意味します:

  • キューブのディメンションの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)よりも低い精度ではなりません。

  • ファクト表には、ディメンション・メンバー用に、NVARCHAR2型を使用した、1024ビットの文字長の国際化された文字列が必要です。

ファクト表の作成の例

Autonomous Data Warehouseでファクト表を作成するには、SQLを使用できます。

  1. SQL Developerまたは任意のツールを使用して、スキーマ所有者としてAutonomous Data Warehouseにログインします(フェデレーテッド・パーティションのスキーマの作成のステップから)。

  2. 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値を含めることはできません。

  • キューブの使用に増分データ・ロードやバッチ・スクリプト更新などのデータ生成プロセスが含まれる場合、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に基づいていますが、これは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保管済メンバーである)フラットな単一レベル階層の保管済階層を選択してください。