OLAP_TABLE
は、リレーショナル表およびビューに結合可能なオブジェクトの表、またはOLAP_TABLE
によって移入された別のオブジェクトの表に結合可能なオブジェクトの表を返すSQLファンクションです。SQL文の中で、表またはビューの名前を指定したい任意の部分にOLAP_TABLE
ファンクション・コールを指定できます。
OLAP_TABLE
は、制限マップを使用して、アナリティック・ワークスペース内で定義されているディメンションやメジャーを、論理表の列にマップします。制限マップとSQL SELECT
文のWHERE
句が組み合されて、アナリティック・ワークスペース内で実行される一連のOLAP DML LIMITコマンドが生成されます。
OLAP_TABLE
では、制限マップと事前定義された論理表を一緒に使用したり、制限マップの情報を使用して実行時に論理表を動的に生成したりできます。
制限マップでのディメンション階層のマッピングをサポートするためには、アナリティック・ワークスペース内で次のオブジェクトが事前定義されている必要があります。
親リレーション。階層内の各ディメンション・メンバーの親を表します。詳細は、「parentrelリレーション」を参照してください。
階層ディメンション。ディメンションの階層を表します。詳細は、「hierlistディメンション」を参照してください。
階層内変数または値セット。階層の各レベルに属するディメンション・メンバーを表します。詳細は、「inhier値セットまたは変数」を参照してください。
グルーピングID変数。各ディメンション・メンバーの階層内の深さを表します。詳細は、「gidrelリレーション」を参照してください。
ファミリ・リレーション。階層内の各ディメンション・メンバーの完全な親子関係を表します。詳細は、「familyrelリレーション」を参照してください。
レベル・ディメンション。ディメンションのレベルを表します。詳細は、「levellistディメンション」を参照してください。
OLAP_TABLE
によって移入される論理表は、実際には表型です。また、その行は、抽象データ型またはADTとも呼ばれるユーザー定義のオブジェクト型です。
ユーザー定義のオブジェクト型は、表の各列に相当する属性で構成されます。行を定義するための基本的な構文は次のとおりです。
CREATE TYPE object_name AS OBJECT ( attribute1 datatype, attribute2 datatype, attributen datatype);
表型はオブジェクト型の集合です。これらのオブジェクト型は表の各行に相当します。表型を作成するための基本的な構文は次のとおりです。
CREATE TYPE table_name AS TABLE OF object_name;
OLAP_TABLE
では、制限マップと事前定義された論理表を一緒に使用したり、制限マップの情報を使用して実行時に論理表を動的に生成したりできます。
参照:
|
オブジェクトを格納する表は、事前に定義することも、動的に生成することもできます。表型を事前にデータベース内に作成しておけば、その表はOLAP_TABLE
をコールしたときにいつでも使用できます。一般に、動的にオブジェクトを生成する問合せよりも、事前定義されたオブジェクトを使用する問合せの方がパフォーマンスに優れています。
例A-1「事前定義されたADTを使用してビューを作成するためのテンプレート」は、事前定義されたADTを使用してアナリティック・ワークスペースのビューを作成する方法を示しています。
例A-1 事前定義されたADTを使用してビューを作成するためのテンプレート
SET ECHO ON SET SERVEROUT ON DROP TYPE table_obj; DROP TYPE row_obj; CREATE TYPE row_obj AS OBJECT ( column_first datatype, column_next datatype, column_n datatype); / CREATE TYPE table_obj AS TABLE OF row_obj; / CREATE OR REPLACE VIEW view_name AS SELECT column_first, column_next, column_n FROM TABLE(OLAP_TABLE( 'analytic_workspace', 'table_obj', 'olap_command', 'limit_map')); / COMMIT; / GRANT SELECT ON view_name TO PUBLIC;
例A-2「事前定義されたADTを使用するTIMEディメンションのサンプル・ビュー」では、OLAP_TABLE
と事前定義された表型を使用して、MYAW_AW
スキーマ内のMYAW
というアナリティック・ワークスぺースのTIME
ディメンションのリレーショナル・ビューを作成します。
OLAP_TABLE
コールの1番目のパラメータはアナリティック・ワークスペースの名前です。2番目は事前定義された表型の名前です。4番目は、ワークスペース・ディメンションと事前定義された表型の列とのマッピングを指定する制限マップです。3番目のパラメータは指定されていません。
例A-2 事前定義されたADTを使用するTIMEディメンションのサンプル・ビュー
CREATE TYPE time_cal_row AS OBJECT ( time_id varchar2(32), cal_short_label varchar2(32), cal_end_date date, cal_timespan number(6)); CREATE TYPE time_cal_table AS TABLE OF time_cal_row; CREATE OR REPLACE VIEW time_cal_view AS SELECT time_id, cal_short_label, cal_end_date, cal_timespan FROM TABLE(OLAP_TABLE( 'myaw_aw.myaw duration session', 'time_cal_table', '', 'DIMENSION time_id from time with HIERARCHY time_parentrel INHIERARCHY time_inhier ATTRIBUTE cal_short_label from time_short_description ATTRIBUTE cal_end_date from time_end_date ATTRIBUTE cal_timespan from time_time_span'));
表型の名前が引数として指定されていない場合、OLAP_TABLE
は、制限マップの情報を使用して自動的に論理表を生成します。この場合、その表型は、SQL SELECT
文をコールするコンテキスト内で、実行時にしか使用できません。
例A-3「自動ADTを使用してビューを作成するためのテンプレート」は、自動ADTを使用してアナリティック・ワークスペースのビューを作成する方法を示しています。
例A-3 自動ADTを使用してビューを作成するためのテンプレート
SET ECHO ON SET SERVEROUT ON CREATE OR REPLACE VIEW view_name AS SELECT column_first, column_next, column_n FROM TABLE(OLAP_TABLE( 'analytic_workspace', '', 'olap_command', 'limit_map')); / COMMIT; / GRANT SELECT ON view_name TO PUBLIC;
例A-4「自動ADTを使用するTIMEディメンションのビュー」では例A-2「事前定義されたADTを使用するTIMEディメンションのサンプル・ビュー」と同じビューが作成されますが、事前定義された表型を使用するかわりに、自動的にADTを生成します。ここでは、制限マップでAS
句を使用してターゲット列のデータ型を指定しています。
例A-4 自動ADTを使用するTIMEディメンションのビュー
CREATE OR REPLACE VIEW time_cal_view AS SELECT time_id, cal_short_label, cal_end_date, cal_timespan FROM TABLE(OLAP_TABLE( 'myaw_aw.myaw duration session', null, null, 'DIMENSION time_id AS varchar2(32) FROM time WITH HIERARCHY time_parentrel INHIERARCHY time_inhier ATTRIBUTE cal_short_label AS VARCHAR2(32) from time_short_description ATTRIBUTE cal_end_date AS DATE from time_end_date ATTRIBUTE cal_timespan AS NUMBER(6) from time_time_span'));
ユーザーが制限マップのAS
句でデータ型を指定しなかった場合、OLAP_TABLE
がADTを自動生成する際にはターゲット列に対してデフォルトのリレーショナル・データ型が使用されます。OLAP_TABLE
で使用されるデフォルトのデータ型変換については、表A-1「デフォルトのデータ型変換」を参照してください。
OLAP_TABLE
では、アナリティック・ワークスペースの多次元データを表形式で表すために制限マップを使用します。制限マップによって、論理表の列が特定されます。OLAP_EXPRESSION
ファンクションを指定するか、または問合せのSELECT構文のリストにブール・ファンクション、テキスト・ファンクション、日付ファンクションのいずれかを指定することによって、計算された列をリレーショナル・ビューに追加できます。SELECT構文のリストにいずれかのファンクションを指定した場合は、そのファンクションの結果に対応する追加の列がOLAP_TABLE
によって生成されます。
これらの式のいずれかを使用する前に、OLAP_TABLE
で使用される制限マップにROW2CELL
句を指定して、OLAP単一行ファンクションによって使用される情報を移入するRAW
列を指定する必要があります。