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'));
関連項目:
-
ディメンション・オブジェクトの詳細および
CUBE_TABLE
で生成される表の詳細は、『Oracle OLAPユーザーズ・ガイド』を参照してください。 -
CUBE_TABLE
によって生成された表の各文字データ型列に割り当てる照合を定義する照合導出ルールは、『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録Cを参照してください。
例
次の例では、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 . . .