日本語PDF

CUBE_TABLE

構文

目的

CUBE_TABLEは、キューブまたはディメンションのデータを抽出し、SQLベースのアプリケーションで使用可能な2次元形式のリレーショナル表に戻します。

このファンクションは、1つのVARCHAR2引数を取ります。オプションのHIERARCHY句を使用すると、ディメンション階層を指定できます。キューブでは複数のHIERARCHY句(ディメンションごとに1つ)を使用できます。

次の様々なタイプの表を生成できます。

  • キューブ表には、各ディメンションのキー列およびキューブ内の各メジャーと計算されたメジャーの列が含まれています。キューブ表を作成するには、キューブを指定します。キューブのHIERARCHY句は、使用することも使用しないこともできます。複数の階層のあるディメンションの場合は、この句によって戻り値を指定された階層内のディメンション・メンバーとレベルに制限します。HIERARCHY句を使用しない場合は、すべてのディメンション・メンバーとすべてのレベルが含められます。

  • ディメンション表には、キー列、および各レベルと各属性の列が含まれています。次のいずれかのコードによりメンバーを識別するMEMBER_TYPE列も含まれます。

    • L - 表、ビュー、またはシノニムからロードされています。

    • A - ロードされたメンバーおよびディメンション内の全階層の単一ルート、つまりすべての集計メンバーです。

    • C - 計算済メンバー

    この表には、すべてのディメンション・メンバーとすべてのレベルが含められます。ディメンション表を作成するには、ディメンションのHIERARCHY句を使用しないでディメンションを指定します。

  • 階層表には、ディメンション表のすべての列に加えて、親メンバーの列と各ソース・レベルの列が含まれています。ディメンション表と同様のMEMBER_TYPE列も含まれます。指定された階層に含まれないディメンション・メンバーとレベルはすべて、表から除外されます。階層表を作成する場合は、ディメンションのHIERARCHY句を使用してディメンションを指定します。

CUBE_TABLEは表ファンクションであり、SELECT文のコンテキストで常に次の構文で使用されます。

SELECT ... FROM TABLE(CUBE_TABLE('arg'));

関連項目:

次の例では、OLAPオプションが指定されたOracle DatabaseおよびGLOBALサンプル・スキーマが必要です。GLOBALサンプル・スキーマのダウンロードおよびインストールの詳細は、『Oracle OLAPユーザーズ・ガイド』を参照してください。

次のSELECT文は、GLOBALスキーマのCHANNELのディメンション表を生成します。

SELECT dim_key, level_name, long_description, channel_total_id tot_id,
       channel_channel_id chan_id, channel_long_description chan_desc,
       total_long_description tot_desc
  FROM TABLE(CUBE_TABLE('global.channel'));

DIM_KEY      LEVEL_NAME LONG_DESCRIPTION TOT_ID CHAN_ID CHAN_DESC    TOT_DESC
-----------  ---------- ---------------- ------ ------- ------------ -------------
CHANNEL_CAT  CHANNEL    Catalog          TOTAL  CAT     Catalog      Total Channel
CHANNEL_DIR  CHANNEL    Direct Sales     TOTAL  DIR     Direct Sales Total Channel
CHANNEL_INT  CHANNEL    Internet         TOTAL  INT     Internet     Total Channel
TOTAL_TOTAL  TOTAL      Total Channel    TOTAL                       Total Channel

次の文は、UNITS_CUBEのキューブ表を生成します。この文は、表をMARKET階層およびCALENDAR階層に制限します。

SELECT sales, units, cost, time, customer, product, channel
  FROM TABLE(CUBE_TABLE('global.units_cube HIERARCHY customer market HIERARCHY time calendar'))
  WHERE rownum < 20;

     SALES      UNITS       COST TIME                       CUSTOMER       PRODUCT     CHANNEL
---------- ---------- ---------- -------------------------- -------------- ----------- -----------
24538587.9      61109 22840853.7 CALENDAR_QUARTER_CY1998.Q1 TOTAL_TOTAL    TOTAL_TOTAL TOTAL_TOTAL
24993273.3      61320   23147171 CALENDAR_QUARTER_CY1998.Q2 TOTAL_TOTAL    TOTAL_TOTAL TOTAL_TOTAL
25080541.4      65265 23242535.4 CALENDAR_QUARTER_CY1998.Q3 TOTAL_TOTAL    TOTAL_TOTAL TOTAL_TOTAL
  26258474      66122 24391020.6 CALENDAR_QUARTER_CY1998.Q4 TOTAL_TOTAL    TOTAL_TOTAL TOTAL_TOTAL
  32785170      77589 30607218.1 CALENDAR_QUARTER_CY1999.Q1 TOTAL_TOTAL    TOTAL_TOTAL TOTAL_TOTAL
. . .