A OLAP_TABLE SQLファンクション
この付録では、アナリティック・ワークスペースから多次元データを抽出して2次元のリレーショナル表の形式で表示できる次のSQLファンクションについて説明します。
OLAP_TABLEを使用したリレーショナル・ビューの作成
OLAP_TABLE
は、リレーショナル表およびビューに結合可能なオブジェクトの表、またはOLAP_TABLE
によって移入された別のオブジェクトの表に結合可能なオブジェクトの表を返すSQLファンクションです。SQL文の中で、表またはビューの名前を指定したい任意の部分にOLAP_TABLE
ファンクション・コールを指定できます。
OLAP_TABLE
は、制限マップを使用して、アナリティック・ワークスペース内で定義されているディメンションやメジャーを、論理表の列にマップします。制限マップとSQL SELECT
文のWHERE
句が組み合されて、アナリティック・ワークスペース内で実行される一連のOLAP DML LIMITコマンドが生成されます。
OLAP_TABLE
では、制限マップと事前定義された論理表を一緒に使用したり、制限マップの情報を使用して実行時に論理表を動的に生成したりできます。
関連項目:
必須のOLAP DMLオブジェクト
制限マップでのディメンション階層のマッピングをサポートするためには、アナリティック・ワークスペース内で次のオブジェクトが事前定義されている必要があります。
-
親リレーション: 階層内の各ディメンション・メンバーの親を識別します。詳細は、「parentrelリレーション」を参照してください。
-
階層ディメンション: ディメンションの階層を表します。詳細は、「hierlistディメンション」を参照してください。
-
階層内変数または値セット: 階層の各レベルに属するディメンション・メンバーを表します。詳細は、「inhier値セットまたは変数」を参照してください。
-
グルーピングID変数: 各ディメンション・メンバーの階層内の深さを識別します。詳細は、「gidrelリレーション」を参照してください。
-
ファミリ・リレーション: 階層内の各ディメンション・メンバーの完全な親子関係を表します。詳細は、「familyrelリレーション」を参照してください。
-
レベル・ディメンション: ディメンションのレベルを表します。詳細は、「levellistディメンション」を参照してください。
OLAP_TABLEで使用する論理表の作成
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
では、制限マップと事前定義された論理表を一緒に使用したり、制限マップの情報を使用して実行時に論理表を動的に生成したりできます。
関連項目:
-
オブジェクト型については、『Oracle Databaseオブジェクト・リレーショナル開発者ガイド』のオブジェクト型についてに関する項を参照してください
-
『Oracle Database SQL言語リファレンス』のCREATE TYPEに関する項
事前定義されたADTを使用したOLAP_TABLEの使用
オブジェクトを格納する表は、事前に定義することも、動的に生成することもできます。表型を事前にデータベース内に作成しておけば、その表はOLAP_TABLE
をコールしたときにいつでも使用できます。一般に、動的にオブジェクトを生成する問合せよりも、事前定義されたオブジェクトを使用する問合せの方がパフォーマンスに優れています。
例
例A-1 事前定義されたADTを使用してビューを作成するためのテンプレート
この例は、事前定義された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番目のパラメータは指定されていません。
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'));
自動ADTを使用したOLAP_TABLEの使用
表型の名前が引数として指定されていない場合、OLAP_TABLE
は、制限マップの情報を使用して自動的に論理表を生成します。この場合、その表型は、SQL SELECT
文をコールするコンテキスト内で、実行時にしか使用できません。
例
例A-3 自動ADTを使用してビューを作成するためのテンプレート
この例は、自動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ディメンションのビュー
この例では前の例と同じビューが作成されますが、事前定義された表型を使用するかわりに、自動的にADTを生成します。ここでは、制限マップでAS
句を使用してターゲット列のデータ型を指定しています。
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を自動生成する際にはターゲット列に対してデフォルトのリレーショナル・データ型が使用されます。表A-2に、OLAP_TABLE
で使用されるデフォルトのデータ型変換を示します。
リレーショナル・ビューへの計算された列の追加
OLAP_TABLE
では、アナリティック・ワークスペースの多次元データを表形式で表すために制限マップを使用します。制限マップによって、論理表の列が特定されます。OLAP_EXPRESSION
ファンクションを指定するか、または問合せのSELECT構文のリストにブール・ファンクション、テキスト・ファンクション、日付ファンクションのいずれかを指定することによって、計算された列をリレーショナル・ビューに追加できます。SELECT構文のリストにいずれかのファンクションを指定した場合は、そのファンクションの結果に対応する追加の列がOLAP_TABLE
によって生成されます。
これらの式のいずれかを使用する前に、OLAP_TABLE
で使用される制限マップにROW2CELL
句を指定して、OLAP単一行ファンクションによって使用される情報を移入する
RAW
列を指定する必要があります。
関連項目:
SELECT FROM OLAP_TABLE文でのOLAP DML式の使用
OLAP DMLコマンドは、SELECT FROM OLAP_TABLE文内で使用できます。詳細は次の項で説明します。
単一行ファンクションとして使用するOLAP DML式
一般に、SQLファンクションは、問い合された表またはビューのすべての行について単独の結果行を返す単一行ファンクションです。Oracleでは、事前定義された複数のSQL単一行ファンクションをサポートしており、たとえば、数値データを返すCOS
、LOG
、ROUND
、文字データを返すUPPER
やLOWER
などがあります。
SELECT FROM OLAP_TABLE
文のコンテキストには、OLAP DMLファンクションが単一行ファンクションとして機能するようにOLAP DMLファンクションをラップするための、4つのSQLファンクションがあります。これらのファンクションは、それぞれデータ型が異なる4種類のOLAP DML式の結果を戻しますが、具体的には、Oracle OLAPの数式に使用するOLAP_EXPRESSION、Oracle OLAPのブール式に使用するOLAP_EXPRESSION_BOOL、Oracle OLAPの日時式に使用するOLAP_EXPRESSION_DATE、Oracle OLAPのテキスト式に使用するOLAP_EXPRESSION_TEXTです。これらの各SQLファンクションの引数の1つが、OLAP DMLファンクションです。
OLAP_EXPRESSIONファンクションおよびこれに類するファンクションは、他のOracle単一行ファンクションと同じ方法で(特にSELECT構文のリスト内や、WHERE
句およびORDER BY
句内で)指定できます。
SELECT FROM OLAP_TABLE文からのアナリティック・ワークスペースの変更
OLAP_TABLE
の実行中にアナリティック・ワークスペースを即時に変更するためのメカニズムは複数あります。
OLAP_CONDITION
SQLファンクションを使用すると、SELECT FROM OLAP_TABLE
文のコンテキスト内でアナリティック・ワークスペースを変更できます。OLAP_CONDITION
は、(特にWHERE
句で)他のOracleファンクションと同じように指定できます。OLAP_CONDITION
を使用して、オプションを設定したり、LIMIT
コマンドを実行したり、OLAPのモデルや予測を実行したり、プログラムを実行したりできます。ワークスペースに対する変更は、一時的なものにすることも、問合せの完了時にセッションに残しておくこともできます。
OLAP_CONDITION
以外にも、たとえば、制限マップでのPREDMLCMD
句やPOSTDMLCMD
句、olap_commandパラメータなどのOLAP_TABLE
ファンクション自体によってサポートされている構文が使用できます。OLAP_CONDITION
はOLAP_TABLE
内に埋め込まれていないため移植が可能で、様々な入力ポイントで適用できるので汎用性があります。
OLAP_TABLE
は、問合せの結果セットを生成するLIMIT
コマンドの実行前に、制限マップ内のディメンションのステータスを保存します。データがフェッチされた後、OLAP_TABLE
はディメンションのステータスをリストアします。ディメンションのステータスが保存される前にOLAP DMLコマンドが実行されるようにするには、制限マップでPREDMLCMD
句を指定します。PREDMLCMD
句による変更は、OLAP_TABLE
の実行後もワークスペース内に保持されます(POSTDMLCMD
句で変更を無効にする場合を除く)。詳細は、「limit_map」を参照してください。
OLAP_TABLE
のolap_commandパラメータには、結果セットがフェッチされる直前に実行されるOLAP DMLコマンドを指定します。一部の環境では、olap_commandパラメータにOLAP DML FETCHコマンドが含まれていることがあり、その場合はこのコマンドによってフェッチが管理されます。olap_commandパラメータによって設定された制限は、OLAP_TABLE
の実行中のみ有効です。詳細は、「olap_command」を参照してください。
OLAP_TABLE
OLAP_TABLE
は、アナリティック・ワークスペースから多次元データを抽出し、そのデータを2次元のリレーショナル表に表示するSQLファンクションです。
OLAP_TABLE
ファンクションは、アナリティック・ワークスペースの多次元データを論理表として返します。
OLAP_TABLE
が入力パラメータに指定された情報を処理する順番については、「OLAP_TABLEにおける処理順序」で説明します。
OLAP_TABLE
は、アナリティック・ワークスペースに対して問合せを発行するための、データベースの基本的メカニズムです。SQL文の中で、表またはビューの名前を指定したい任意の部分にOLAP_TABLE
ファンクション・コールを指定できます。
OLAP_TABLE
は、リレーショナル表およびビューに結合可能なオブジェクトの表、またはOLAP_TABLE
によって移入された別のオブジェクトの表に結合可能なオブジェクトの表を返します。
注意:
OLAPワークシート内からはこのファンクションを実行できません。SQLワークシートなどのSQLツール内で実行してください。
戻り値
表型で、この表の行は、選択したワークスペース・データに対応するオブジェクト(ADT)です。「OLAP_TABLEを使用したリレーショナル・ビューの作成」を参照してください。
構文
OLAP_TABLE( analytic_workspace IN VARCHAR2, table_object IN VARCHAR2, olap_command IN VARCHAR2, limit_map1 IN VARCHAR2, limit_map2 IN VARCHAR2, . . . limit_map8 IN VARCHAR2) RETURN TYPE;
パラメータ
- analytic_workspace
-
ソース・データが格納されているアナリティック・ワークスペースの名前を指定します。また、
OLAP_TABLE
への最初のコールで開かれるOLAPセッションにアナリティック・ワークスペースをアタッチしておく期間も指定します。このパラメータは、
OLAP_TABLE
に必須です。このパラメータの構文は、次のとおりです。
'[owner.]aw_name DURATION QUERY | SESSION'
次に例を示します。
'olapuser.xademo DURATION SESSION'
-
owner
ownerは、他のユーザーによってアクセスされるビューを作成する場合に指定します。それ以外の場合で、アナリティック・ワークスペースを所有している場合は、ownerを省略できます。このパラメータは、所有者以外のユーザー名でログインしている場合にのみ必要です。
-
QUERY
単独の問合せを実行している間、アナリティック・ワークスペースをアタッチします。
QUERY
は、他のセッションで行われたアナリティック・ワークスペースに対する更新を確認する必要がある場合にのみ使用します。 -
SESSION
アナリティック・ワークスペースをアタッチし、問合せ後もアタッチしたままにします。OLAPセッションを開いた状態で維持するため、
QUERY
よりもパフォーマンスが向上します。このパフォーマンスの向上が顕著になるのは、制限マップにtable_objectパラメータやAS
句を指定しないでファンクションをコールする場合ですが、これは、OLAP_TABLE
ファンクションが適切な表定義を判断する必要があるためです。「自動ADTを使用したOLAP_TABLEの使用」を参照してください。
-
- table_object
-
事前定義されたオブジェクトの表の名前(「事前定義されたADTを使用したOLAP_TABLEの使用」を参照)。
このパラメータは省略可能です。自動ADTを使用する場合、このパラメータは省略します。
このパラメータの構文は、次のとおりです。
'table_name'
次に例を示します。
'product_dim_tbl'
table_nameパラメータを指定する場合、返されるデータの列のデータ型は事前定義されたものになります。この場合は、制限マップで
AS
句を使用できません。table_nameパラメータを省略する場合、返されるデータの列のデータ型は実行時に生成されます。ターゲットのデータ型は、制限マップの
AS
句で指定するか、またはデフォルトのデータ型(表A-2を参照)を使用します。「自動ADTを使用したOLAP_TABLEの使用」を参照してください。 - olap_command
-
単独のOLAP DMLコマンド。複数のコマンドを実行する場合は、アナリティック・ワークスペース内にプログラムを作成し、そのプログラムをこのパラメータでコールする必要があります。このパラメータは、OLAP DMLで使用できるほとんどのデータ操作コマンドを処理することが可能で、柔軟かつ機能的です。
OLAP_TABLE
がolap_commandパラメータを処理する順番については、「OLAP_TABLEにおける処理順序」で説明します。このパラメータの構文は、次のとおりです。
'olap_command'
olap_commandパラメータは、次の2つの用途に使用できます。
-
ワークスペース・セッションでデータがフェッチされる直前(すべての制限が適用された後)に変更を行う(「olap_commandパラメータでのFETCHの使用」を参照)。
-
制限マップを使用するかわりにソース・データを直接指定する(「olap_commandでの制限マップの使用」を参照)。
-
- limit_map
-
ワークスペース・オブジェクトをリレーショナル列にマップして、各オブジェクトのロールを指定します。「OLAP_TABLEを使用したリレーショナル・ビューの作成」を参照してください。
制限マップでは、
OLAP_TABLE
に実行させる特別な命令を指定することもできます。たとえば、制限マップの実行前または実行後にOLAP DMLコマンドが実行されるようにしたり、OLAP_CONDITION
およびOLAP_EXPRESSION
ファンクションにROW2CELL
列を指定することができます。(「OLAP_CONDITION」および「OLAP_EXPRESSION」を参照)OLAP_TABLE
が制限マップの情報を処理する順番については、「OLAP_TABLEにおける処理順序」で説明します。limit_mapパラメータは、通常は必ず指定する必要があります。olap_commandパラメータに
FETCH
コマンドを指定する場合にのみ省略できます。「olap_command」の説明を参照してください。制限マップのテキスト全体を
OLAP_TABLE
へのパラメータとして指定したり、制限マップの全体または一部をアナリティック・ワークスペース内のテキスト変数に格納し、アンパサンド置換を使用してその変数を参照したりできます。たとえば、次のOLAP_TABLE
問合せは、MYAW_AW
スキーマのMYAW
アナリティック・ワークスペース内にあるlimitmapvar
という変数に格納された制限マップを使用しています。SELECT * FROM TABLE(OLAP_TABLE( 'myaw_aw.myaw DURATION SESSION', '', '', '&(myaw_aw.myaw!limitmapvar)');
OLAP_TABLE
へのコールの中で制限マップをテキストとして指定する場合、その最大文字数は4000となりますが、これはPL/SQLの制限によるものです。制限マップをアナリティック・ワークスペースに格納する場合は、文字数の制限はありません。注意:
制限マップでのディメンション階層のマッピングをサポートするためには、いくつかのアナリティック・ワークスペース・オブジェクトをワークスペース内で事前定義しておく必要があります。詳細は、「必須のOLAP DMLオブジェクト」を参照してください。
制限マップの構文には、主にディメンション階層を定義するために、多くの句があります。構文エラーがあると制限マップが解析されないため、カンマの有無に注意してください。
'[MEASURE column [AS datatype] FROM {measure | AW_EXPR expression}] . . DIMENSION [column [AS datatype] FROM] dimension [WITH [HIERARCHY [column [AS datatype] FROM] parent_relation [(hierarchy_dimension ''hierarchy_name'')] [INHIERARCHY inhierarchy_obj] [GID column [AS datatype] FROM gid_relation] [PARENTGID column [AS datatype] FROM gid_relation] [FAMILYREL column1 [AS datatype], column2 [AS datatype], ... columnn [AS datatype] FROM {expression1, expression2, ... expressionn | family_relation USING level_dimension } [LABEL label_variable]] [HATTRIBUTE column [AS datatype] FROM hier_attribute_variable] . . ] [ATTRIBUTE column [AS datatype] FROM attribute_variable] . . ] [ROW2CELL column] [LOOP loop-clause] [PREDMLCMD olap_command] [POSTDMLCMD olap_command]'
説明:
columnは、ターゲット表の列の名前です。
datatypeは、columnのデータ型です。
measureは、アナリティック・ワークスペース内の変数、式またはリレーションです。
expressionは、アナリティック・ワークスペース内のオブジェクトに対する式または修飾データ参照です。
dimensionは、アナリティック・ワークスペース内のディメンションです。
parent_relationは、dimensionの階層を定義するアナリティック・ワークスペース内のセルフ・リレーションです。詳細は、「parentrelリレーション」を参照してください。
hierarchy_dimensionは、dimensionの階層の名前を含むアナリティック・ワークスペース内のディメンションです。詳細は、「hierlistディメンション」を参照してください。
hierarchy_nameは、hierarchy_dimensionのメンバーです。
inhierarchy_objは、階層の各レベルにどのディメンション・メンバーが属しているかを示すアナリティック・ワークスペース内の変数または値セットです。詳細は、「inhier値セットまたは変数」を参照してください。
gid_relationは、階層内の各ディメンション・メンバーのグルーピングIDを含むアナリティック・ワークスペース内のリレーションです。詳細は、「gidrelリレーション」を参照してください。
family_relationは、階層内の各ディメンション・メンバーの完全な親子関係を示すセルフ・リレーションです。詳細は、「familyrelリレーション」を参照してください。
level_dimensionは、階層のレベルの名前を含むアナリティック・ワークスペース内のディメンションです。詳細は、「levellistディメンション」を参照してください。
label_variableは、dimensionを説明するテキスト値を格納するアナリティック・ワークスペース内の変数です。
hier_attribute_variableは、hierarchy_nameの属性値を格納するアナリティック・ワークスペース内の変数です。
attribute_variableは、dimensionの属性値を格納するアナリティック・ワークスペース内の変数です。
loop_clauseには、データ値のループ処理およびリレーショナル表に作成する行をOracle OLAPがどのように決定するかを指定します。LOOP句を使用しない場合は、制限マップのDIMENSION句内のディメンションで識別されるすべてのデータ値がループされます。
LOOP句の構文の詳細は、「LOOP句」を参照してください。
olap_commandは、OLAP DMLコマンドです。
limit_mapパラメータの各句の構文について、次に詳しく説明します。
-
MEASURE句
MEASURE
句は、アナリティック・ワークスペース内の変数、式またはリレーションをターゲット表の列にマップします。MEASURE
句はいくつでも指定できます。ディメンション・ビューを作成する場合などは、この句の指定は任意です。AS
副次句では、ターゲット列のデータ型を指定します。AS
副次句は、オブジェクトの表が事前定義されていない場合に指定できます。「自動ADTを使用したOLAP_TABLEの使用」を参照してください。FROM
副次句では、変数、式またはリレーションの名前、あるいはこれらのオブジェクトの1つを評価するOLAP式のいずれかを指定できます。次に例を示します。AW_EXPR analytic_cube_sales - analytic_cube_cost or AW_EXPR LOGDIF(analytic_cube_sales, 1, time, LEVELREL time.lvlrel)
-
DIMENSION句
DIMENSION
句には、1つ以上のメジャーや属性をディメンション化するアナリティック・ワークスペース内のディメンションまたは結合ディメンションを指定するか、制限マップの1つ以上の階層に対するディメンション・メンバーを指定します。ディメンション・メンバー自体を表に含めないようにするときは、column副次句の指定は任意です。この場合は、データの選択に使用できるディメンション属性を含めてください。
AS
副次句については、「MEASURE句」を参照してください。制限マップには、少なくとも1つの
DIMENSION
句を必ず含めます。制限マップにMEASURE
句を指定した場合は、ディメンションが1つの値に制限されていないかぎり、メジャーの各ディメンションに対してDIMENSION
句を1つ指定する必要があります。メジャーがコンポジットによってディメンション化されている場合は、DIMENSION
句を使用してコンポジットの各ディメンションを指定する必要があります。大量の結果セットをフェッチする際のパフォーマンスを最適化するには、LOOP
句にコンポジットを指定します。「LOOP句」を参照してください。1つの
DIMENSION
句に指定できるディメンションは1つのみです。DIMENSION
句の副次句では、ディメンションの階層や属性を指定できます。-
ディメンションの階層および属性用のWITH副次句
WITH
副次句は、HIERARCHY
またはATTRIBUTE
副次句を導きます。階層または属性を指定しない場合は、WITH
キーワードを省略します。階層と属性の両方を指定する場合は、これらの副次句の前にWITH
キーワードを1つのみ使用します。 -
WITH HIERARCHY副次句
HIERARCHY
副次句には、ディメンションの階層を定義するアナリティック・ワークスペース内の親セルフ・リレーションを指定します。詳細は、「parentrelリレーション」を参照してください。ディメンションに階層がない場合、またはディメンションのステータスが階層の1つのレベルに制限されている場合は、
HIERARCHY
副次句の指定は任意です。ディメンションに複数の階層がある場合は、各階層に対して1つのHIERARCHY
副次句を指定し、さらにhierarchy_dimension句を指定します。hierarchy_dimensionには、このディメンションの階層の名前を含むアナリティック・ワークスペース内のディメンションを指定します。詳細は、「hierlistディメンション」を参照してください。hierarchy_nameは、hierarchy_dimensionのメンバーです。hierarchy_dimensionは、その階層に対する後続の副次句(
INHIERARCHY
、GID
、PARENTGID
、FAMILYREL
およびHATTRIBUTE
)で参照されるすべてのワークスペース・オブジェクトのhierarchy_nameに限定されます。column副次句については、「DIMENSION句」を参照してください。
次の表に、
HIERARCHY
副句のキーワードを示します。表A-1 HIERARCHY副句のキーワード
キーワード 説明 INHIERARCHY
INHIERARCHY
副次句には、階層の各レベルのディメンション・メンバーを示す、アナリティック・ワークスペース内のブール変数または値セットを指定します。詳細は、「inhier値セットまたは変数」を参照してください。OLAP_TABLE
は、制限マップの処理時に、INHIERARCHY
副次句が指定されているすべてのディメンションのステータスを保存するため、INHIERARCHY
副次句を指定することをお薦めします。階層から除外されているディメンション・メンバーがある場合は、必ず指定してください。GID
GID
副次句は、各ディメンション・メンバーのグルーピングIDを格納するアナリティック・ワークスペース内の整数値の変数を、ターゲット表の列にマップします。グルーピングID変数は、OLAP DML GROUPINGIDコマンドによって移入されます。詳細は、「gidrelリレーション」を参照してください。OLAP APIを使用するJavaアプリケーションの場合、
GID
副次句は必須です。AS
副次句については、「MEASURE句」を参照してください。PARENTGID
PARENTGID
副次句は、アナリティック・ワークスペース内のGID変数を使用して親リレーションのグルーピングIDを計算します。親のGIDはアナリティック・ワークスペースに格納されていません。かわりに、GID句で使用したのと同じGID変数をPARENTGID句に指定します。OLAP APIを使用するJavaアプリケーションの場合は、PARENTGID句を指定してください。AS
副次句については、「MEASURE句」を参照してください。FAMILYREL
FAMILYREL
句は、主に、アナリティック・ワークスペース内のファミリ・リレーションをターゲット表の複数の列にマップするために使用します。詳細は、「familyrelリレーション」を参照してください。各階層に対して複数のFAMILYREL
句を使用できます。これらの列は、level_dimension(アナリティック・ワークスペース内にある、すべてのディメンション・レベルの名前を格納しているディメンション)の順序に従って指定します。詳細は、「levellistディメンション」を参照してください。
特定のレベルを除外するには、対象の列にNULLを指定します。
AS
副次句については、「MEASURE句」を参照してください。LABEL
キーワードには、ディメンション・メンバーについてわかりやすい名前を表すテキスト属性を指定します。FAMILYREL
句によって返される表形式のデータは、ロールアップ形式で表されますが、つまり、階層の各レベルは別々の列で表され、各ディメンション・メンバーの完全な親子関係が、行内で表現されます。例A-7を参照してください。HATTRIBUTE
HATTRIBUTE
副次句は、アナリティック・ワークスペース内のhierarchy_dimensionによってディメンション化される階層固有の属性変数を、ターゲット表の列にマップします。 -
WITH ATTRIBUTE副次句
ATTRIBUTE
副次句は、アナリティック・ワークスペース内の属性変数をターゲット表の列にマップします。attribute_variableに複数のディメンションがある場合、dimensionについてはすべてのメンバーに関して値のマッピングが行われますが、その他のディメンションについては現在のステータスにある最初のメンバーに関してのみマッピングが行われます。たとえば、複数の属性に言語ディメンションがある場合、そのディメンションのステータスを特定の言語に設定する必要があります。ディメンションのステータスは、
PREDMLCMD
で設定できます。
-
-
ROW2CELL句
ROW2CELL
句は、文字長が16から32のRAW
列をターゲット表に作成し、OLAP_EXPRESSIONファンクションで使用される情報をその列に移入します。ROW2CELL
列はOLAP_CONDITION
ファンクションでも使用されます。これらのファンクションで使用されるビューを作成するときに、ROW2CELL
列を指定する必要があります。「SELECT FROM OLAP_TABLE文でのOLAP DML式の使用」および「リレーショナル・ビューへの計算された列の追加」を参照してください。 -
LOOP句
LOOP
句には、値の取得時にOracle OLAPがどのようにデータをループするかを指定します。制限マップでLOOP句を省略すると、Oracle OLAPはその制限マップのDIMENSION句を使用して、ループする値を決定します。Oracle OLAPはNAまたはnullを含まないメジャー・セルを識別するタプルのみをループします。LOOP句を含める場合、次のタイプの副句のいずれかを指定します。optimized_subclauseまたはunion_subclause。optimized_subclauseを指定すると、Oracle OLAPによってunion_subclauseが自動的に作成され、これを基にデータがループされます。作成されたunion_subclauseにはDENSE句は含まれません。したがって、optimized_subclauseを指定したときは、NAでもNULLでもないメジャー・セルであるタプルのみがループ対象となります。optimized_subclauseの構文は次のとおりです。
OPTIMIZED [MEASURES]
オプションのMEASURESキーワードを指定すると、Oracle OLAPは、ループ対象のタプルを特定した後、制限マップのMEASURES句に指定されたオブジェクトのディメンションではないディメンションの値を削除します。
ヒント:
$LOOP_AGGMAP、$LOOP_DENSEおよび$LOOP_VARプロパティを使用すると、OLAP_TABLEによる式のループ処理についてより詳しく指定できます。
union_subclauseには、Oracle OLAPがループ対象のデータ値を識別するために使用するベース・ディメンションをどのように決定するかを正確に指定します。正確な結合が行われるためには、この副次句で参照されるオブジェクトのベース・ディメンションが一致する必要があります。union_subclauseの構文は次のとおりです。
[ignore_phrase] [dense_phrase] UNION ({aggmap_phrase | list_phrase }...)]
ここで
aggmap_phraseにはOracle OLAPで集計変数の値をどのようにループするかを指定します。構文は次のとおりです。
AGGMAP (ignore_phrase] [dense_phrase] aggmap {variable | dimension_list})
list_phraseには、Oracle OLAPでコンポジット、パーティション・テンプレートまたはディメンションの値をどのようにループするかを指定します。構文は次のとおりです。
LIST ([ignore_phrase] [dense_phrase] dimension_list)
-
ignore_phraseには、Oracle OLAPでループの対象外にするディメンション値を指定します。構文は次のとおりです。
IGNORE (ignore_list )
ignore_listには、次のいずれか1つ以上を(複数の場合はカンマで区切って)指定できます。
dimension_name valueset_name COMPLEMENT (valueset_name)
単独のignore_list内には、複数の方法でのディメンションの指定はできません。つまり、あるディメンションとそのディメンションの値セットを両方とも指定したり、1つのディメンションにつき2つの値セットを指定したりすることはできません。
注意:
IGNORE valueset-nameを指定した場合の結果は、LIMIT REMOVE valueset-nameを指定した場合と同様になります(LIMITコマンドを参照)。
-
dense_phraseには、Oracle OLAPでループの対象となる値を指定します(その値によって識別されるメジャー・セルにNAまたはNULLが含まれる場合でもループ対象となります)。DENSE句にディメンションを指定するのは、リレーショナルの外部結合を要求することと似ています。通常は、時系列処理を実行するために(期間の相対位置を変更する場合など)、DENSE句にディメンション値を含めます。DENSE句の構文は次のとおりです。
DENSE (dense_list )
dense_listには、次のいずれか1つ以上を(複数の場合はカンマで区切って)指定できます。
dimension_name valueset_name COMPLEMENT (valueset_name)
単独のdense_list内には、複数の方法でのディメンションの指定はできません。つまり、あるディメンションとそのディメンションの値セットを両方とも指定したり、1つのディメンションにつき2つの値セットを指定したりすることはできません。
ただし、外側の
DENSE
句にディメンションの値セットを1つ指定し、内側のDENSE
に同じディメンションの別の値セットを指定することは可能です。ディメンションまたはディメンションの値セットを、内側と外側両方のDENSE
句に指定すると、Oracle OLAPはこの稠密な領域の結合全体をループします。ディメンション自体がどちらかの領域に現れた場合は、ディメンション全体を隈なくループします。 -
aggmapはaggmapオブジェクトの名前です。aggmapオブジェクトの名前のみを指定した場合、Oracle OLAPはそのaggmapのPRECOMPUTE句の値を基にしてループ対象の値を特定します。
-
variableはaggmap_nameによって集計される変数の名前です。
-
dimension_listは1つ以上のコンポジット、パーティション・テンプレートまたはディメンションのリストです。
-
-
PREDMLCMD句
PREDMLCMD
句には、アナリティック・ワークスペースのデータがターゲット表にフェッチされる前に実行されるOLAP DMLコマンドを指定します。たとえば、結果が表にフェッチされるOLAPモデルまたは予測を実行する場合に使用できます。コマンドの結果は、制限マップを実行している間有効で、OLAP_TABLE
の実行が完了した後のセッションにも引き継がれます。「OLAP_TABLEにおける処理順序」を参照してください。 -
POSTDMLCMD句
POSTDMLCMD
句には、アナリティック・ワークスペースのデータがターゲット表にフェッチされた後に実行されるOLAP DMLコマンドを指定します。たとえば、PREDMLCMD
句のコマンドによって作成されたオブジェクトまたはデータを削除する場合や、PREDMLCMD
句で変更されたディメンションのステータスをリストアする場合に使用できます。「」OLAP_TABLEにおける処理順序」を参照してください。
-
使用上の注意
制限マップ
OLAP_TABLE
は、制限マップを使用して、アナリティック・ワークスペース内で定義されているディメンションやメジャーを、論理表の列にマップします。制限マップとSQL SELECT
文のWHERE
句が組み合されて、アナリティック・ワークスペース内で実行される一連のOLAP DML LIMITコマンドが生成されます。
OLAP_TABLE
では、制限マップと事前定義された論理表を一緒に使用したり、制限マップの情報を使用して実行時に論理表を動的に生成したりできます。
関連項目:
limit_mapパラメータに関する説明
論理表
OLAP_TABLE
によって移入される論理表は、実際には表型です。また、その行は、抽象データ型またはADTとも呼ばれるユーザー定義のオブジェクト型です。
ユーザー定義のオブジェクト型は、表の各列に相当する属性で構成されます。行を定義するための基本的な構文は次のとおりです。
CREATE TYPE object_name AS OBJECT ( attribute1 datatype, attribute2 datatype, attributen datatype);
表型はオブジェクト型の集合で、この集合は表の各行に相当します。表型を作成するための基本的な構文は次のとおりです。
CREATE TYPE table_name AS TABLE OF object_name;
関連項目:
-
オブジェクト型については、『Oracle Databaseオブジェクト・リレーショナル開発者ガイド』のオブジェクト型についてに関する項を参照してください
-
『Oracle Database SQL言語リファレンス』のCREATE TYPEに関する項
事前定義されたADTを使用したOLAP_TABLEの使用
オブジェクトを格納する表は、事前に定義することも、動的に生成することもできます。表型を事前にデータベース内に作成しておけば、その表はOLAP_TABLE
をコールしたときにいつでも使用できます。一般に、動的にオブジェクトを生成する問合せよりも、事前定義されたオブジェクトを使用する問合せの方がパフォーマンスに優れています。「事前定義されたADTを使用したOLAP_TABLEの使用」を参照してください。
自動ADTを使用したOLAP_TABLEの使用
表型の名前が引数として指定されていない場合、OLAP_TABLE
は、制限マップの情報を使用して自動的に論理表を生成します。この場合、その表型は、SQL SELECT
文をコールするコンテキスト内で、実行時にしか使用できません。「自動ADTを使用したOLAP_TABLEの使用」を参照してください。
ユーザーが制限マップのAS
句でデータ型を指定しなかった場合、OLAP_TABLE
がADTを自動生成する際にはターゲット列に対してデフォルトのリレーショナル・データ型が使用されます。次の表に、OLAP_TABLE
で使用されるデフォルトのデータ型変換を示します。
表A-2 デフォルトのデータ型変換
アナリティック・ワークスペースのデータ型 | SQLデータ型 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
その他 |
|
olap_commandでの制限マップの使用
OLAP_TABLE
の実行中に、アプリケーションでアナリティック・ワークスペースを即時に変更することが必要となる場合があります。
通常、olap_commandパラメータは、1つ以上のディメンションを制限するために使用します。制限マップでINHIERARCHY
句を含むディメンションを制限する場合、該当するディメンションのステータスは、OLAP_TABLE
コールの実行時にのみ変更されますが、この制限は、OLAPセッションの他の部分には影響しません。ただし、その他のコマンド(INHIERARCHY
句で参照されていないディメンションを制限するコマンドなど)はセッションに影響します。
制限マップでのディメンションに対する制限を、コマンド実行時以外でもセッション全体を通して有効にするには、制限マップのPREDMLCMD
句にそのコマンドを指定するか、またはSQL SELECT
文にOLAP_CONDITION
ファンクションを指定します。
olap_commandパラメータでLIMIT
コマンドを使用する例を次に示します。
'LIMIT product TO product_member_levelrel ''L2'''
関連項目:
olap_commandパラメータでのFETCHの使用
olap_commandパラメータにOLAP DML FETCHコマンドを指定すると、OLAP_TABLE
では、制限マップでの指定ではなくこのコマンドを使用して、表オブジェクトのソース・データをフェッチします。このような使用方法から、olap_commandパラメータはデータ・マップと呼ばれることもあります。通常、FETCH
コマンドを指定する場合は、制限マップを指定しないでください。
注意:
通常、SNAPI用にFETCH
コマンドを使用していたExpressアプリケーションをアップグレードする場合にのみ、OLAP_TABLE
でFETCH
コマンドを使用します。アップグレードする場合、Oracleでの完全な構文はExpress 6.3の構文と同じです。SNAPIで従来使用していたのと同じFETCH
コマンドを、OLAP_TABLE
でも使用できます。FETCH
コマンドの構文については、「FETCH」を参照してください。
FETCH
では、アナリティック・ワークスペースのデータをどのように表オブジェクトにマップするかを明示的に指定します。基本の構文は次のとおりです。
FETCH expression...
各ターゲット列に対し1つの式を、行定義に指定されているとおりの順序で入力します。式は、空白またはカンマで区切ります。改行や継続マークを付けずに、文全体を1行で入力する必要があります。
関連項目:
OLAP_TABLEにおける処理順序
アナリティック・ワークスペースのディメンションのステータスを変更する制限マップ内の指定について、OLAP_TABLE
ファンクションが処理する順序を次に示します。
-
制限マップの
PREDMLCMD
パラメータに指定されているOLAP DMLコマンドを実行します。 -
後でリストアできるように、制限マップのすべてのディメンションの現在のステータスを保存します(ステータスの
PUSH
)。 -
制限マップの
INHIERARCHY
副次句で指定されているディメンション・メンバーのみステータスを保持します(LIMIT KEEP
)。 -
手順3で設定されたステータスのうち、
OLAP_TABLE
ファンクションを含むSELECT
文のWHERE
句の条件を満たすディメンション・メンバーのみを保持します(LIMIT KEEP
)。 -
OLAP_TABLE
ファンクションのolap_commandパラメータに指定されているOLAP DMLコマンドを実行します。(olap_commandにFETCH
が含まれている場合は、データをフェッチします。) -
データをフェッチします(olap_commandパラメータにOLAP DML
FETCH
コマンドが指定されていなかった場合)。 -
制限マップ内のすべてのディメンションのステータスをリストアします(ステータスの
POP
)。 -
制限マップの
POSTDMLCMD
パラメータに指定されているOLAP DMLコマンドを実行します。
例
アプリケーションにはそれぞれ固有の要件があるため、アナリティック・ワークスペースのデータをSQLにフェッチする方法としていくつかの一般的な形式があります。この項の例では、様々な形式を使用してビューを作成する方法を紹介します。
これらの例はビューの作成用として示されていますが、例の中のSELECT
文は、アナリティック・ワークスペースのデータをアプリケーションにフェッチするためにそのまま使用できます。
注意:
この項の例では、事前定義されたADTを使用しています。自動ADTを使用するようにコードを修正することもできます。「自動ADTを使用したOLAP_TABLEの使用」を参照してください。
例A-5 OLAP_TABLEを使用して埋込み合計のディメンション・ビューを作成するスクリプト
この例のスクリプトは、MYAWというアナリティック・ワークスペースのTIME
ディメンションの埋込み合計ビューを作成するPL/SQLスクリプトです。この例は、例A-2と似ていますが、ここではCalendar階層とFiscal階層を指定し、階層固有のEnd Date属性に対してHATTRIBUTE
副次句を指定しています。
INHIERARCHY
副次句には、ディメンションの各階層のすべてのディメンション・メンバーを示す、アナリティック・ワークスペース内の値セットを指定しています。OLAP_TABLE
は、制限マップの処理時に、INHIERARCHY
副次句が指定された制限マップ内のすべてのディメンションのステータスを保存します。「」OLAP_TABLEにおける処理順序」を参照してください。
CREATE TYPE awtime_row AS OBJECT ( awtime_id VARCHAR2(12), awtime_short_label VARCHAR2(12), awtime_cal_end_date DATE, awtime_fis_end_date DATE); / CREATE TYPE awtime_table AS TABLE OF awtime_row; / CREATE OR REPLACE VIEW awtime_view AS SELECT awtime_id, awtime_short_label, awtime_cal_end_date, awtime_fis_end_date FROM TABLE(OLAP_TABLE( 'myaw DURATION SESSION', 'awtime_table', '', 'DIMENSION awtime_id FROM time WITH HIERARCHY time_parentrel (time_hierlist ''CALENDAR'') INHIERARCHY time_inhier HATTRIBUTE awtime_cal_end_date FROM time_cal_end_date HIERARCHY time_parentrel (time_hierlist ''FISCAL'') INHIERARCHY time_inhier HATTRIBUTE awtime_fis_end_date FROM time_fis_end_date ATTRIBUTE awtime_short_label FROM time_short_description')); / SQL>SELECT * FROM awtime_view; AWTIME_ID AWTIME_SHORT_LABEL AWTIME_CAL_END_DATE AWTIME_FIS_END_DATE --------- ------------------ ------------------- ------------------- 19 Jan-98 31-JAN-98 31-JAN-98 20 Feb-98 28-FEB-98 28-FEB-98 21 Mar-98 31-MAR-98 31-MAR-98 22 Apr-98 30-APR-98 30-APR-98 23 May-98 31-MAY-98 31-MAY-98 24 Jun-98 30-JUN-98 30-JUN-98 . . . . 98 Q1-03 31-MAR-03 30-SEP-03 99 Q2-03 30-JUN-03 31-DEC-03 1 1998 31-DEC-98 30-JUN-99 102 2003 31-DEC-03 30-JUN-04 119 2004 31-DEC-04 30-JUN-05 2 1999 31-DEC-99 30-JUN-00 3 2000 31-DEC-00 30-JUN-01 4 2001 31-DEC-01 30-JUN-02 85 2002 31-DEC-02 30-JUN-03
作成されたビューに対してSELECT
文を発行し、そのビューが正しく作成されたかどうか確認してください。OLAP_TABLE
コールにエラーがあった場合は、このときにそのエラーが表示されます。
例A-6 OLAP_TABLEを使用して埋込み合計のメジャー・ビューを作成するスクリプト
スター・スキーマには、各ディメンション・ビューに結合可能な列を持つ個別のメジャー・ビューが必要です。この例では、ROW2CELL
句によって移入された列を持つ、カスタム・メジャーをサポートするためのメジャー・ビューを作成するPL/SQLスクリプトを示します。ROW2CELLについては、「ROW2CELL句」を参照してください。
CREATE TYPE awunits_row AS OBJECT ( awtime VARCHAR2(12), awcustomer VARCHAR2(30), awproduct VARCHAR2(30), awchannel VARCHAR2(30), awunits NUMBER(16), r2c RAW(32)); / CREATE TYPE awunits_table AS TABLE OF awunits_row; / CREATE OR REPLACE VIEW awunits_view AS SELECT awunits, awtime, awcustomer, awproduct, awchannel, r2c FROM TABLE(OLAP_TABLE( 'myaw DURATION SESSION', 'awunits_table', '', 'MEASURE awunits FROM units_cube_units DIMENSION awtime FROM time WITH HIERARCHY time_parentrel DIMENSION awcustomer FROM customer WITH HIERARCHY customer_parentrel (customer_hierlist ''MARKET_ROLLUP'') INHIERARCHY customer_inhier DIMENSION awproduct FROM product WITH HIERARCHY product_parentrel DIMENSION channel WITH HIERARCHY channel_parentrel ATTRIBUTE awchannel FROM channel_short_description ROW2CELL r2c')) WHERE awunits IS NOT NULL; SQL>SELECT awchannel, awunits FROM awunits_view WHERE awproduct = '1' AND awcustomer = '7' AND awtime = '4'; AWCHANNEL AWUNITS --------- ------- All Channels 415392 Direct Sales 43783 Catalog 315737 Internet 55872
例A-7 OLAP_TABLEを使用してPRODUCTのロールアップ・ビューを作成するスクリプト
ロールアップ形式では、各階層レベルの列を使用して、各ディメンション・メンバーの完全な親子関係が表されます。ロールアップ形式の構文と埋込み合計形式の構文の唯一の違いは、制限マップ内の各ディメンションの定義にFAMILYREL
句が追加されることです。FAMILYREL
については、「WITH HIERARCHY副次句」を参照してください。
この例は、PRODUCT
ディメンションのロールアップ形式のビューを作成するためのPL/SQLスクリプトを示します。ここでは、例A-5の埋込み合計形式で使用した構文と制限マップの構文との違いを明らかにするためのディメンション・ビューが示されています。これらのレベルに対応するターゲット列は、最大集計レベル(CLASS
)から最小集計レベル(ITEM
)の順でFAMILYREL
句に列記されていますが、これは、levellistディメンションにリストされる順序です。このファミリ・リレーションは、4つの列を返します。最大集計レベル(全商品)はNULLにマッピングされ、ビューでは省略されます。
例A-8では、FAMILYREL
句に対して別の構文を使用しています。この構文では、QDRを使用して、ファミリ・リレーションからマップされる各列を正確に指定しています。
例A-7と例A-8の制限マップは、まったく同じビューを生成します。
CREATE TYPE awproduct_row AS OBJECT ( class VARCHAR2(50), family VARCHAR2(50), item VARCHAR2(50)); / CREATE TYPE awproduct_table AS TABLE OF awproduct_row; / CREATE OR REPLACE VIEW awproduct_view AS SELECT class, family, item FROM TABLE(OLAP_TABLE( 'myaw DURATION QUERY', 'awproduct_table', '', 'DIMENSION product WITH HIERARCHY product_parentrel FAMILYREL null, class, family, item FROM product_familyrel USING product_levellist LABEL product_short_description')); SQL> SELECT * FROM awproduct_view ORDER BY class, family, item; CLASS FAMILY ITEM -------------- ---------------- ------------------------ Hardware CD-ROM Envoy External 6X CD-ROM Hardware CD-ROM Envoy External 8X CD-ROM Hardware CD-ROM External 6X CD-ROM Hardware CD-ROM External 8X CD-ROM Hardware CD-ROM Internal 6X CD-ROM Hardware CD-ROM Internal 8X CD-ROM Hardware CD-ROM Hardware Desktop PCs Sentinel Financial Hardware Desktop PCs Sentinel Multimedia . . . Software/Other Operating Systems UNIX/Windows 1-user pack Software/Other Operating Systems UNIX/Windows 5-user pack Software/Other Operating Systems Software/Other
例A-8 OLAP_TABLEのFAMILYREL句でQDRを使用するスクリプト
CREATE OR REPLACE TYPE awproduct_row AS OBJECT ( class VARCHAR2(50), family VARCHAR2(50), item VARCHAR2(50)); / CREATE TYPE awproduct_table AS TABLE OF awproduct_row; / CREATE OR REPLACE VIEW awproduct_view AS SELECT class, family, item FROM TABLE(OLAP_TABLE( 'myaw DURATION QUERY', 'awproduct_table', '', 'DIMENSION product WITH HIERARCHY product_parentrel FAMILYREL class, family, item FROM product_familyrel(product_levellist ''CLASS''), product_familyrel(product_levellist ''FAMILY''), product_familyrel(product_levellist ''ITEM'') LABEL product_short_description')); SQL> SELECT * FROM awproduct_view ORDER BY by class, family, item; CLASS FAMILY ITEM -------------- ---------------- ------------------------ Hardware CD-ROM Envoy External 6X CD-ROM Hardware CD-ROM Envoy External 8X CD-ROM Hardware CD-ROM External 6X CD-ROM Hardware CD-ROM External 8X CD-ROM Hardware CD-ROM Internal 6X CD-ROM Hardware CD-ROM Internal 8X CD-ROM Hardware CD-ROM Hardware Desktop PCs Sentinel Financial Hardware Desktop PCs Sentinel Multimedia . . . Software/Other Operating Systems UNIX/Windows 1-user pack Software/Other Operating Systems UNIX/Windows 5-user pack Software/Other Operating Systems Software/Other
例A-9 OLAP_TABLEでFETCHを使用するスクリプト
Oracle Databaseと連携するように変更されているOracle OLAP Serverアプリケーションでは、制限マップのかわりにOLAP DML FETCHコマンドを使用して、ワークスペース・オブジェクトをリレーショナル列にマップできます。
FETCH
コマンドはOLAP_TABLE
の3番目のパラメータに指定し、このパラメータでは、OLAP DMLコマンドを1つ指定します。「olap_command」を参照してください。
次のスクリプトは、MYAW
アナリティック・ワークスペース内の2つの変数(SALES
とCOST
)からデータをフェッチして、2つのカスタム・メジャー(COST_PRIOR_PERIOD
とPROFIT
)を計算します。この例では、ビューを作成せずにアプリケーションで直接OLAP_TABLE
を使用する方法も示します。
次の例のFETCH
文は、見やすくするためにインデントされています。実際にはFETCH
文全体を1行で記述し、改行や継続記号は使用しないでください。
CREATE TYPE measure_row AS OBJECT ( time VARCHAR2(20), geography VARCHAR2(30), product VARCHAR2(30), channel VARCHAR2(30), sales NUMBER(16), cost NUMBER(16), cost_prior_period NUMBER(16), profit NUMBER(16)); / CREATE TYPE measure_table AS TABLE OF measure_row; / SELECT time, geography, product, channel, sales, cost, cost_prior_period, profit FROM TABLE(OLAP_TABLE( 'xademo DURATION SESSION', 'measure_table', 'FETCH time, geography, product, channel, analytic_cube_f.sales, analytic_cube_f.costs, LAG(analytic_cube_f.costs, 1, time, LEVELREL time_member_levelrel), analytic_cube_f.sales - analytic_cube_f.costs', '')) WHERE channel = 'STANDARD_2.TOTALCHANNEL' AND product = 'L1.TOTALPROD' AND geography = 'L1.WORLD' ORDER BY time;
このSQL SELECT
文は、次の結果セットを返します。
TIME GEOGRAPHY PRODUCT CHANNEL SALES COST COST_PRIOR_PERIOD PROFIT --------- --------- ------------ ----------------------- --------- --------- ------------------ -------- L1.1996 L1.WORLD L1.TOTALPROD STANDARD_2.TOTALCHANNEL 118247112 2490243 115756869 L1.1997 L1.WORLD L1.TOTALPROD STANDARD_2.TOTALCHANNEL 46412113 1078031 2490243 45334082 L2.Q1.96 L1.WORLD L1.TOTALPROD STANDARD_2.TOTALCHANNEL 26084848 560379 25524469 L2.Q1.97 L1.WORLD L1.TOTALPROD STANDARD_2.TOTALCHANNEL 26501765 615399 560379 25886367 L2.Q2.96 L1.WORLD L1.TOTALPROD STANDARD_2.TOTALCHANNEL 30468054 649004 615399 29819049 L2.Q2.97 L1.WORLD L1.TOTALPROD STANDARD_2.TOTALCHANNEL 19910347 462632 649004 19447715 L2.Q3.96 L1.WORLD L1.TOTALPROD STANDARD_2.TOTALCHANNEL 27781702 582693 462632 27199009 L2.Q4.96 L1.WORLD L1.TOTALPROD STANDARD_2.TOTALCHANNEL 33912508 698166 582693 33214342 L3.APR96 L1.WORLD L1.TOTALPROD STANDARD_2.TOTALCHANNEL 8859808 188851 8670957 . . . 27 rows selected.
OLAP_CONDITION
OLAP_CONDITION
は、アナリティック・ワークスペースの問合せ中にOLAP DMLコマンドを動的に実行するSQLファンクションです。
OLAP_CONDITION
ファンクションは、OLAP_TABLE
のコールで使用される制限マップの3つの入力ポイントのうちの1つでOLAP DMLコマンドを実行します(「OLAP_TABLE制限マップ内のOLAP_CONDITIONの入力ポイント」を参照)。
注意:
OLAPワークシート内からはこのファンクションを実行できません。SQLワークシートなどのSQLツール内で実行してください。
戻り値
OLAP_CONDITION
の呼出しが成功した場合、数値1
が返されます。
構文
OLAP_CONDITION( r2c IN RAW(32), expression IN VARCHAR2, event IN NUMBER DEFAULT 1); RETURN NUMBER;
パラメータ
- r2c
-
制限マップの
ROW2CELL
句で指定された列の名前。このパラメータは、OLAP_TABLE
の特定の呼出しを識別するためにOLAP_CONDITION
によって使用されます。ROW2CELL
列は、単一行ファンクションの処理で使用されます。(「OLAP_EXPRESSION」を参照)OLAP_CONDITION
では、単に識別子として使用されます。ROW2CELL
列の作成方法については、「ROW2CELL句」を参照してください。 - expression
-
r2cパラメータによって特定される、
OLAP_TABLE
ファンクションのコンテキスト内で実行される単独のOLAP DMLコマンド。 - event
-
OLAP_TABLE
の処理中に、expressionパラメータで指定されたOLAP DMLコマンドの実行をトリガーするイベント。このパラメータに指定できる値は、0、1または2です(表A-3を参照)。
使用上の注意
OLAP_TABLE制限マップ内のOLAP_CONDITIONの入力ポイント
OLAP_CONDITION
のパラメータでは、OLAP_TABLE
の呼出し、制限マップの入力ポイント、その入力ポイントで実行されるOLAP DMLコマンドが特定されます。
対象の制限マップにはROW2CELL
列を含める必要があります。OLAP_CONDITION
は、この列を使用してOLAP_TABLE
のインスタンスを識別します。そのインスタンス内で、OLAP_CONDITION
は3つの入力ポイントのいずれかでOLAP DMLコマンドを実行します。ユーザーが指定した入力ポイントによって、問合せで返されたデータに条件が影響するかどうか、および問合せの完了時にも条件が有効なままかどうかが決まります。
OLAP_CONDITION
は、次のいずれかの時点でトリガーされます。
-
制限マップ内のディメンションのステータスが保存される前(結果セットが計算される前)
-
結果セットが計算された後、フェッチされる前(デフォルト)
-
結果セットがフェッチされ、制限マップ内のディメンションのステータスがリストアされた後
OLAP_CONDITION
の入力ポイントを次の表で説明します。各入力ポイントの発生時点を確認するには、「OLAP_TABLEにおける処理順序」を参照してください。
表A-3 OLAP_TABLE制限マップ内のOLAP_CONDITIONの入力ポイント
入力ポイント | 説明 |
---|---|
0 |
制限マップの この入力ポイントは、「OLAP_TABLEにおける処理順序」の1と2の間。
|
1 |
この入力ポイントは、「OLAP_TABLEにおける処理順序」の4と5の間。
|
2 |
データがフェッチされ、制限マップ内のディメンションのステータスがリストアされた後に、OLAP DMLコマンドを実行する。 この入力ポイントは、「OLAP_TABLEにおける処理順序」の8の後。
|
例
OLAP_CONDITION
を使用する問合せの例を、例A-11に示します。これらの例では、MYAW
というアナリティック・ワークスペースのPRICE_CUBE
を使用しています。このキューブには、時間ディメンションと製品ディメンションがあり、単位原価と単位価格のメジャーが格納されています。
これらの例は、unit_cost_price_view
というビューを基にしています。このビューを作成するためのSQLを、例A-10に示します。アナリティック・ワークスペースのビューの作成方法については、「OLAP_TABLEを使用したリレーショナル・ビューの作成」を参照してください。
例A-10 PRICE_CUBEのビュー
-- Create the logical row SQL>CREATE TYPE unit_cost_price_row AS OBJECT ( aw_unit_cost NUMBER, aw_unit_price NUMBER, aw_product VARCHAR2(50), aw_product_gid NUMBER(10), aw_time VARCHAR2(20), aw_time_gid NUMBER(10), r2c RAW(32)); -- Create the logical table SQL>CREATE TYPE unit_cost_price_table AS TABLE OF unit_cost_price_row; -- Create the view SQL>CREATE OR REPLACE VIEW unit_cost_price_view AS SELECT aw_unit_cost, aw_unit_price, aw_product, aw_product_gid, aw_time, aw_time_gid, r2c FROM TABLE(OLAP_TABLE( 'myaw DURATION SESSION', 'unit_cost_price_table', '', 'MEASURE aw_unit_cost FROM price_cube_unit_cost MEASURE aw_unit_price FROM price_cube_unit_price DIMENSION product WITH HIERARCHY product_parentrel INHIERARCHY product_inhier GID aw_product_gid FROM product_gid ATTRIBUTE aw_product FROM product_short_description DIMENSION time WITH HIERARCHY time_parentrel INHIERARCHY time_inhier GID aw_time_gid FROM time_gid ATTRIBUTE aw_time FROM time_short_description ROW2CELL r2c')); -- query the view SQL>SELECT * FROM unit_cost_price_view WHERE aw_product = 'Hardware' AND aw_time in ('2000', '2001', '2002', '2003') ORDER BY aw_time; AW_UNIT_COST AW_UNIT_PRICE AW_PRODUCT AW_PRODUCT_GID AW_TIME AW_TIME_GID R2C ------------ ------------- ---------- -------------- ------- ----------- ----- 211680.12 224713.71 Hardware 3 2000 3 00... 195591.60 207513.16 Hardware 3 2001 3 00... 184413.05 194773.78 Hardware 3 2002 3 00... 73457.31 77275.06 Hardware 3 2003 3 00...
例A-11 OLAP_CONDITIONを使用したUNIT_COST_PRICE_VIEWの問合せ
この例の問合せでは、OLAP_CONDITION
を使用して、例A-10のUNIT_COST_PRICE_VIEW
の問合せを変更します。それぞれの問合せのOLAP_CONDITION
では、異なる入力ポイントを使用してTIME
ディメンションを2000年に制限しています。
最初の問合せでは、OLAP_CONDIITON
で入力ポイント0を使用しています。制限されたデータがOLAP_TABLE
によって返され、この制限はアナリティック・ワークスペースでも有効なままです。
SQL>SELECT * FROM unit_cost_price_view WHERE aw_product = 'Hardware' AND aw_time in ('2000', '2001', '2002', '2003') AND OLAP_CONDITION(r2c, 'limit time to time_short_description eq ''2000''', 0)=1 ORDER BY aw_time; AW_UNIT_COST AW_UNIT_PRICE AW_PRODUCT AW_PRODUCT_GID AW_TIME AW_TIME_GID R2C ------------ ------------- ---------- -------------- ------- ----------- ----- 211680.12 224713.71 Hardware 3 2000 3 00... --Check status in the analytic workspace SQL>exec dbms_aw.execute('rpr time_short_description'); TIME TIME_SHORT_DESCRIPTION ---- ---------------------- 3 2000 -- Reset status SQL>exec dbms_aw.execute('allstat');
次の問合せでは、OLAP_CONDIITON
で入力ポイント1を使用しています。制限されたデータがOLAP_TABLE
によって返されますが、この制限はアナリティック・ワークスペースでは有効ではありません。
この場合、入力ポイント1がデフォルトであるため、3番目のパラメータは指定しなくてもかまいません。
SQL>SELECT * FROM unit_cost_price_view WHERE aw_product = 'Hardware' AND aw_time in ('2000', '2001', '2002', '2003') AND OLAP_CONDITION(r2c, 'limit time to time_short_description eq ''2000''', 1)=1 ORDER BY aw_time; AW_UNIT_COST AW_UNIT_PRICE AW_PRODUCT AW_PRODUCT_GID AW_TIME AW_TIME_GID R2C ------------ ------------- ---------- -------------- ------- ----------- ----- 211680.12 224713.71 Hardware 3 2000 3 00... --Check status in the analytic workspace SQL>exec dbms_aw.execute('rpr time_short_description'); TIME TIME_SHORT_DESCRIPTION ---- ---------------------- 19 Jan-98 20 Feb-98 21 Mar-98 22 Apr-98 . . . 1 1998 2 1999 3 2000 4 2001 85 2002 102 2003 119 2004 -- Reset status SQL>exec dbms_aw.execute('allstat');
最後の問合せでは、OLAP_CONDIITON
で入力ポイント2を使用しています。この制限はOLAP_TABLE
によって返されたデータには影響しませんが、アナリティック・ワークスペースでは有効なままです。
SQL>SELECT * FROM unit_cost_price_view WHERE aw_product = 'Hardware' AND aw_time in ('2000', '2001', '2002', '2003') AND OLAP_CONDITION(r2c, 'limit time to time_short_description eq ''2000''', 2)=1 ORDER BY aw_time; AW_UNIT_COST AW_UNIT_PRICE AW_PRODUCT AW_PRODUCT_GID AW_TIME AW_TIME_GID R2C ------------ ------------- ---------- -------------- ------- ----------- ----- 211680.12 224713.71 Hardware 3 2000 3 00... 195591.60 207513.16 Hardware 3 2001 3 00... 184413.05 194773.78 Hardware 3 2002 3 00... 73457.31 77275.06 Hardware 3 2003 3 00... --Check status in the analytic workspace SQL>exec dbms_aw.execute('rpr time_short_description'); TIME TIME_SHORT_DESCRIPTION ---- ---------------------- 3 2000
OLAP_EXPRESSION
OLAP_EXPRESSION
は、OLAP_TABLE
ファンクションのコンテキスト内でOLAP DMLブール式を動的に実行するSQLファンクションです。このファンクションを使用すると、戻り値としてカスタム・メジャーを取得できる他、WHERE
句やORDER BY
句内で使用してアナリティック・ワークスペースの問合せで返される結果セットを変更することもできます。
OLAP_EXPRESSION_TEXT
は文字データを返します。テキスト・データ、ブール・データ、日付データを返すには、OLAP_EXPRESSION_TEXT、OLAP_EXPRESSION_BOOLまたはOLAP_EXPRESSION_DATE SQLファンクションを使用します。
このファンクションを使用するときは、OLAP_TABLE
で使用される制限マップにROW2CELL
句を指定しておく必要があります。ROW2CELL
には、OLAP単一行ファンクションで使用される情報をOLAP_TABLE
が移入するRAW
列を指定します。
注意:
OLAPワークシート内からはこのファンクションを実行できません。SQLワークシートなどのSQLツール内で実行してください。
戻り値
OLAP_TABLE
によって返された表オブジェクトの各行に対するnumeric_expressionの評価。
OLAP_EXPRESSION
は数値データを返します。テキスト・データ、ブール・データ、日付データを返すには、OLAP_EXPRESSION_TEXT
、OLAP_EXPRESSION_BOOL
またはOLAP_EXPRESSION_DATE
ファンクションを使用します。
構文
OLAP_EXPRESSION( r2c IN RAW(32), numeric_expression IN VARCHAR2) RETURN NUMBER;
パラメータ
- r2c
-
制限マップの
ROW2CELL
句で指定された列の名前。OLAP_TABLEの「ROW2CELL句」を参照してください。 - numeric_expression
-
数値を結果として返すOLAP DML式。
例
次のスクリプトは、unit_cost_price_view
を作成するためのものです。このビューは、OLAP_EXPRESSION
の使用例を示すために例A-12と例A-13で使用されます。アナリティック・ワークスペースのビューの作成方法については、「OLAP_TABLEを使用したリレーショナル・ビューの作成」を参照してください。
サンプル・ビュー: MYAW.UNIT_COST_PRICE_VIEW
-- Create the logical row CREATE TYPE unit_cost_price_row AS OBJECT ( aw_unit_cost NUMBER, aw_unit_price NUMBER, aw_product VARCHAR2(50), aw_time VARCHAR2(20), r2c RAW(32)); / -- Create the logical table CREATE TYPE unit_cost_price_table AS TABLE OF unit_cost_price_row; / -- Create the view CREATE OR REPLACE VIEW unit_cost_price_view AS SELECT aw_unit_cost, aw_unit_price, aw_product, aw_time, r2c FROM TABLE(OLAP_TABLE( 'myaw DURATION SESSION', 'unit_cost_price_table', '', 'MEASURE aw_unit_cost FROM price_cube_unit_cost MEASURE aw_unit_price FROM price_cube_unit_price DIMENSION product WITH HIERARCHY product_parentrel INHIERARCHY product_inhier ATTRIBUTE aw_product FROM product_short_description DIMENSION time WITH HIERARCHY time_parentrel INHIERARCHY time_inhier ATTRIBUTE aw_time FROM time_short_description ROW2CELL r2c')); /
次の問合せは、このビューの集計データの一部を返します。
SQL>SELECT * FROM unit_cost_price_view WHERE aw_product = 'Hardware' AND aw_time in ('2000', '2001', '2002', '2003') ORDER BY aw_time; AW_UNIT_COST AW_UNIT_PRICE AW_PRODUCT AW_TIME R2C ------------ ------------- ---------- ------- ----- 211680.12 224713.71 Hardware 2000 00... 195591.60 207513.16 Hardware 2001 00... 184413.05 194773.78 Hardware 2002 00... 73457.31 77275.06 Hardware 2003 00...
例A-12 OLAP_EXPRESSION: WHERE句内の時系列ファンクション
この例では、「サンプル・ビュー: MYAW.UNIT_COST_PRICE_VIEW」のビューを使用します。
次のSELECT
文は、PERIODAGO
という別名の付いた式を計算し、結果セットを、計算後の値が50,000より大きいものに制限します。この計算は、LAG
ファンクションを使用して、1つ前の期間の値を返します。
SQL>SELECT aw_time time, aw_unit_cost unit_cost, OLAP_EXPRESSION(r2c, 'LAG(price_cube_unit_cost, 1, time, LEVELREL time_levelrel)') periodago FROM unit_cost_price_view WHERE aw_product = 'Hardware' AND OLAP_EXPRESSION(r2c, 'LAG(price_cube_unit_cost, 1, time, LEVELREL time_levelrel)') > 50000;
このSELECT
文は次の結果を返します。
TIME UNIT_COST PERIODAGO -------------------- ---------- ---------- 2003 73457.31 184413.05 2004 73457.31 1999 231095.4 162526.92 2000 211680.12 231095.4 2001 195591.6 211680.12 2002 184413.05 195591.6 Q2-99 57587.34 57856.76 Q3-99 59464.25 57587.34 Q4-99 56187.05 59464.25 Q1-00 53982.32 56187.05 Q2-00 53629.74 53982.32 Q3-00 53010.65 53629.74 Q4-00 51057.41 53010.65 Q1-01 49691.22 51057.41
例A-13 OLAP_EXPRESSION: ORDER BY句内での数値計算
この例では、「サンプル・ビュー: MYAW.UNIT_COST_PRICE_VIEW」のビューを使用します。
この例では、価格からコストを引いて、その式にMARKUP
という別名を付けます。返される行は、利幅(MARKUP)の高い順に並べられます。
SQL>SELECT aw_time time, aw_unit_cost unit_cost, aw_unit_price unit_price, OLAP_EXPRESSION(r2c, 'PRICE_CUBE_UNIT_PRICE - PRICE_CUBE_UNIT_COST') markup FROM unit_cost_price_view WHERE aw_product = 'Hardware' AND aw_time in ('1998', '1999', '2000', '2001') ORDER BY OLAP_EXPRESSION(r2c, 'PRICE_CUBE_UNIT_PRICE - PRICE_CUBE_UNIT_COST') DESC;
このSELECT
文は次の結果を返します。
TIME UNIT_COST UNIT_PRICE MARKUP -------------------- ---------- ---------- --------- 1999 231095.40 245412.91 14317.51 2000 211680.12 224713.71 13033.59 2001 195591.60 207513.16 11921.56 1998 162526.92 173094.41 10567.49
OLAP_EXPRESSION_BOOL
OLAP_EXPRESSION_BOOL
は、OLAP_TABLE
ファンクションのコンテキスト内でOLAP DMLブール式を動的に実行するSQLファンクションです。このファンクションを使用すると、戻り値としてカスタム・メジャーを取得できる他、WHERE
句やORDER BY
句内で使用してアナリティック・ワークスペースの問合せで返される結果セットを変更することもできます。
OLAP_EXPRESSION_TEXT
は文字データを返します。数値データ、テキスト・データ、日付データを返すには、OLAP_EXPRESSION、OLAP_EXPRESSION_TEXTまたはOLAP_EXPRESSION_DATE SQLファンクションを使用します。
このファンクションを使用するときは、OLAP_TABLE
で使用される制限マップにROW2CELL
句を指定しておく必要があります。ROW2CELL
には、OLAP単一行ファンクションで使用される情報をOLAP_TABLE
が移入するRAW
列を指定します。
注意:
OLAPワークシート内からはこのファンクションを実行できません。SQLワークシートなどのSQLツール内で実行してください。
戻り値
OLAP_TABLE
によって返された表オブジェクトの各行に対するboolean_expressionの評価。
OLAP_EXPRESSION_BOOL
は、falseの場合は0を、trueの場合は1をブール・データとして返します。数値データ、日付データ、テキスト・データを返すには、OLAP_EXPRESSION
、OLAP_EXPRESSION_DATE
またはOLAP_EXPRESSION_TEXT
ファンクションを使用します。
構文
OLAP_EXPRESSION_BOOL( r2c IN RAW(32), boolean_expression IN VARCHAR2) RETURN NUMBER;
パラメータ
- r2c
-
制限マップの
ROW2CELL
句で指定された列の名前。OLAP_TABLEの「ROW2CELL句」を参照してください。 - boolean_expression
-
ブール値を結果として返すOLAP DML式。
例
次のスクリプトは、awunits_view
を作成するためのものです。このビューは、OLAP_EXPRESSION_BOOL
の使用例を示すために例A-14で使用されます。
サンプル・ビュー: MYAW_AW.AWUNITS_VIEW
-- Create the logical row CREATE TYPE awunits_row AS OBJECT ( awtime VARCHAR2(12), awcustomer VARCHAR2(30), awproduct VARCHAR2(30), awchannel VARCHAR2(30), awunits NUMBER(16), r2c RAW(32)); / -- Create the logical table CREATE TYPE awunits_table AS TABLE OF awunits_row; / -- Create the view CREATE OR REPLACE VIEW awunits_view AS SELECT awunits, awtime, awcustomer, awproduct, awchannel, r2c FROM TABLE(OLAP_TABLE( 'myaw_aw.myawaw DURATION SESSION', 'awunits_table', '', 'MEASURE awunits FROM units_cube_aw_units_aw DIMENSION awtime FROM time_aw WITH HIERARCHY time_aw_parentrel DIMENSION awcustomer FROM customer_aw WITH HIERARCHY customer_aw_parentrel (customer_aw_hierlist ''MARKET_ROLLUP_AW'') INHIERARCHY customer_aw_inhier DIMENSION awproduct FROM product_aw WITH HIERARCHY product_aw_parentrel DIMENSION channel_aw WITH HIERARCHY channel_aw_parentrel ATTRIBUTE awchannel FROM channel_aw_short_description ROW2CELL r2c')) WHERE awunits IS NOT NULL; /
次の問合せは、このビューの集計データの一部を返します。2001年の全市場での全商品の売上数量がチャネル別に示されます。
SQL> SELECT awchannel, awunits FROM awunits_view WHERE awproduct = '1' AND awcustomer = '7' AND awtime = '4'; AWCHANNEL AWUNITS --------- ------- All Channels 415392 Direct Sales 43783 Catalog 315737 Internet 55872
次の文は、この問合せで使用されているProduct、Customer、Timeの各ディメンション・メンバーの説明を表示します。
SQL>execute dbms_aw.execute('limit product_aw to ''1'''); SQL>execute dbms_aw.execute('rpr product_aw_short_description'); PRODUCT_AW PRODUCT_AW_SHORT_DESCRIPTION --------------- -------------------------------------------------- 1 Total Product SQL>execute dbms_aw.execute('limit customer_aw to ''7'''); SQL>execute dbms_aw.execute('rpr customer_aw_short_description'); CUSTOMER_AW CUSTOMER_AW_SHORT_DESCRIPTION --------------- -------------------------------------------------- 7 Total Market SQL>execute dbms_aw.execute('limit time_aw to ''4'''); SQL>execute dbms_aw.execute('rpr time_aw_short_description'); TIME_AW TIME_AW_SHORT_DESCRIPTION --------------- -------------------------------------------------- 4 2001
例A-14 SELECT構文のリストに指定されたOLAP_EXPRESSION_BOOL
この例では、「サンプル・ビュー: MYAW_AW.AWUNITS_VIEW」のビューを使用します。次のSELECT
文は、lowest_units
という別名が付いた式を計算しますが、この式は、各商品の個数が500個未満かどうかを示します。
SQL>SELECT awproduct products, olap_expression_bool(r2c, 'units_cube_aw_units_aw le 500') lowest_units FROM awunits_view WHERE awproduct > 39 AND awproduct < 46 AND awcustomer = '7' AND awchannel = 'Internet' AND awtime = '4'; PRODUCTS LOWEST_UNITS --------------- ------------ 40 0 41 1 42 1 43 1 44 1 45 0
この問合せにより、商品41から44はすべて500個未満だったことが示されます。これらの商品は、ドイツ語、フランス語、スペイン語およびイタリア語のドキュメント・セットです。選択された商品は次のとおりです。
SQL>execute dbms_aw.execute ('limit product_aw to product_aw gt 39 and product_aw lt 46'); SQL>execute dbms_aw.execute('rpr product_aw_short_description'); PRODUCT_AW PRODUCT_AW_SHORT_DESCRIPTION --------------- -------------------------------------------------- 40 O/S Documentation Set - English 41 O/S Documentation Set - German 42 O/S Documentation Set - French 43 O/S Documentation Set - Spanish 44 O/S Documentation Set - Italian 45 O/S Documentation Set - Kanji
OLAP_EXPRESSION_DATE
OLAP_EXPRESSION_DATE
は、OLAP_TABLE
ファンクションのコンテキスト内でOLAP DML日時式を動的に実行するSQLファンクションです。このファンクションを使用すると、戻り値としてカスタム・メジャーを取得できる他、WHERE
句やORDER BY
句内で使用してアナリティック・ワークスペースの問合せで返される結果セットを変更することもできます。
OLAP_EXPRESSION_TEXT
は文字データを返します。数値データ、ブール・データ、テキスト・データを返すには、OLAP_EXPRESSION、OLAP_EXPRESSION_BOOLまたはOLAP_EXPRESSION_TEXT SQLファンクションを使用します。
このファンクションを使用するときは、OLAP_TABLE
で使用される制限マップにROW2CELL
句を指定しておく必要があります。ROW2CELL
には、OLAP単一行ファンクションで使用される情報をOLAP_TABLE
が移入するRAW
列を指定します。
注意:
OLAPワークシート内からはこのファンクションを実行できません。SQLワークシートなどのSQLツール内で実行してください。
戻り値
OLAP_TABLE
によって返された表オブジェクトの各行に対するdate_expressionの評価。
OLAP_EXPRESSION_DATE
は日付データを返します。数値データ、ブール・データ、テキスト・データを返すには、OLAP_EXPRESSION
、OLAP_EXPRESSION_BOOL
またはOLAP_EXPRESSION_TEXT
ファンクションを使用します。
構文
OLAP_EXPRESSION_DATE( r2c IN RAW(32), date_expression IN VARCHAR2) RETURN NUMBER;
パラメータ
- r2c
-
制限マップの
ROW2CELL
句で指定された列の名前。OLAP_TABLEの「ROW2CELL句」を参照してください。 - date_expression
-
日時を結果として返すOLAP DML式。
例
OLAP_EXPRESSIONおよびOLAP_EXPRESSION_BOOLで紹介されているOLAP単一行ファンクションの例を参照してください。
OLAP_EXPRESSION_TEXT
OLAP_EXPRESSION_TEXT
は、OLAP_TABLE
ファンクションのコンテキスト内でOLAP DMLテキスト式を動的に実行するSQLファンクションです。このファンクションを使用すると、戻り値としてカスタム・メジャーを取得できる他、WHERE
句やORDER BY
句内で使用してアナリティック・ワークスペースの問合せで返される結果セットを変更することもできます。
OLAP_EXPRESSION_TEXT
は文字データを返します。数値データ、ブール・データ、日付データを返すには、OLAP_EXPRESSION、OLAP_EXPRESSION_BOOLまたはOLAP_EXPRESSION_DATE SQLファンクションを使用します。
このファンクションを使用するときは、OLAP_TABLE
で使用される制限マップにROW2CELL
句を指定しておく必要があります。ROW2CELL
には、OLAP単一行ファンクションで使用される情報をOLAP_TABLE
が移入するRAW
列を指定します。
注意:
OLAPワークシート内からはこのファンクションを実行できません。SQLワークシートなどのSQLツール内で実行してください。
戻り値
OLAP_TABLE
によって返された表オブジェクトの各行に対するtext_expressionの評価。
構文
OLAP_EXPRESSION_TEXT( r2c IN RAW(32), text_expression IN VARCHAR2) RETURN NUMBER;
パラメータ
- r2c
-
制限マップの
ROW2CELL
句で指定された列の名前。OLAP_TABLEの「ROW2CELL句」を参照してください。 - text_expression
-
テキストを結果として返すOLAP DML式。
例
OLAP_EXPRESSIONおよびOLAP_EXPRESSION_BOOLで紹介されているOLAP単一行ファンクションの例を参照してください。