DBMS_CUBE
には、OLAPキューブおよびディメンションを作成するサブプログラム、および問合せのためにデータをロードして処理するサブプログラムが含まれています。
関連項目: ビジネス・インテリジェンス・アプリケーションおよび分析アプリケーションをサポートするOLAPオプションの使用の詳細は、『Oracle OLAPユーザーズ・ガイド』を参照してください。 |
この章では、次の項目について説明します。
キューブおよびディメンションは、複数ディメンションの分析をサポートする優れたデータ・オブジェクトです。キューブおよびディメンションは、アナリティック・ワークスペースと呼ばれるコンテナに格納されています。 OLAPオプションを使用すると、Oracle Databaseで複数ディメンションのオブジェクトと分析を使用できます。
キューブおよびディメンションのメタデータは、XMLテンプレートに定義されています。XMLテンプレートは、アナリティック・ワークスペース・マネージャという名前のグラフィック・ツールを使用して、対話形式で生成できます。
IMPORT_XML
プロシージャは、キューブおよびディメンションを含むアナリティック・ワークスペースを作成します。BUILD
プロシージャは、データ・ソースからキューブおよびディメンションにデータをロードし、問合せ用のデータを準備するために必要な処理手順を実行します。また、アナリティック・ワークスペース・マネージャを使用して、XMLからアナリティック・ワークスペースを作成し、データのロードを開始することもできます。この2つの方法は同じです。
表36-1 DBMS_CUBEサブプログラム
サブプログラム | 説明 |
---|---|
|
データを1つ以上のキューブおよびディメンションにロードし、問合せ用のデータを準備します。 |
|
XMLテンプレートから、アナリティック・ワークスペースを作成するか、または既存のアナリティック・ワークスペースにオブジェクトを追加します。 |
|
結果をデータベースにコミットしないで、XMLが有効かどうかをチェックします。 |
このプロシージャは、データを1つ以上のキューブおよびディメンションにロードし、そのキューブで集計値を生成します。結果は自動的にデータベースにコミットされます。
構文
DBMS_CUBE.BUILD ( SCRIPT IN VARCHAR2, METHOD IN VARCHAR2 DEFAULT NULL, REFRESH_AFTER_ERRORS IN BOOLEAN DEFAULT FALSE, PARALLELISM IN BINARY_INTEGER DEFAULT 0, ATOMIC_REFRESH IN BOOLEAN DEFAULT FALSE, AUTOMATIC_ORDER IN BOOLEAN DEFAULT TRUE, ADD_DIMENSIONS IN BOOLEAN DEFAULT TRUE, SCHEDULER_JOB IN VARCHAR2 DEFAULT NULL);
パラメータ
表36-2 BUILDプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
キューブおよびディメンションのリストと作成オプション(「SCRIPTパラメータ」を参照)。 |
|
完全リフレッシュまたは(部分的な)高速リフレッシュ。高速リフレッシュでは、変更された行のみがキューブに挿入され、キューブ内で影響を受けた部分が再集計されます。 各キューブに順番にメソッドを指定するか、またはすべてのキューブに単一のメソッドを適用できます。指定したキューブの数がメソッドの数を上回る場合は、最後に指定したメソッドが残りのキューブに適用されます。
詳細は、「使用上の注意」を参照してください。 メソッドはディメンションには適用されません。 |
|
|
|
このジョブに割り当てられた並列処理の数(「使用上の注意」を参照)。 |
|
FALSEにすると、ユーザーは作成中に中間結果にアクセスできます。 |
|
|
|
|
|
ログ表に表示される、ジョブのテキスト識別子。 |
SCRIPTパラメータ
SCRIPT
パラメータは、作成時に追加されるオブジェクトを識別し、各作成で実行される処理のタイプを指定します。このパラメータの構文は、次のとおりです。
object [ USING ( commands ) ][,...]
各項目の意味は、次のとおりです。
object
は、aw_name.object
形式のキューブまたはディメンションの完全修飾名(GLOBAL.TIME
など)を示します。
SCRIPTパラメータ: USING句
USING
句は、処理オプションを指定します。カンマで区切った1つ以上のコマンドで構成されます。
注意: リライト・マテリアライズド・ビューを含むキューブでは、ANALYZE コマンドを除いてUSING 句は使用できません。デフォルトの作成オプションが使用されます。 |
commands
には、次のいずれかを指定できます。
CLEAR [ VALUES | LEAVES | AGGREGATES ]
データ・リフレッシュ用にキューブを準備します。ディメンションに対して使用することもできますが、CLEAR
では、すべてのディメンション・キーが削除されるため、ディメンションを使用するキューブのデータ値がすべて削除されます。
次のオプションの引数で、リフレッシュ・メソッドを制御します。
VALUES
: キューブ内のデータをすべて消去します。このオプションでは、COMPLETE
リフレッシュ・メソッドがサポートされています。(C
およびF
メソッドのデフォルト)
LEAVES
: 詳細データを消去し、集計を保持します。このオプションでは、FAST
リフレッシュ・メソッドがサポートされています。(?
メソッドのデフォルト)
AGGREGATES
: 集計を消去し、詳細データを保持します。
LOAD [SYNCH | NO SYNCH]
データをディメンションまたはキューブにロードします。このオプションの引数は、ディメンションのみに適用されます。
SYNCH
は、ディメンション・キーをリレーショナル・データ・ソースと一致させます。(デフォルト)。
NO SYNCH
は、新規ディメンション・キーをロードしますが、古いキーは削除しません。
SOLVE
キューブ用に定義したルール(集計演算子、事前計算の仕様など)を使用して、キューブを集計します。(キューブのみ)
COMPILE
ディメンションでサポートされる構造を作成します。(ディメンションのみ)
ANALYZE
DBMS_AW_STATS.ANALYZE
を実行して、キューブおよびディメンションのオプティマイザ統計を生成し格納します。
EXECUTE OLAP DML文字列
アナリティック・ワークスペースでOLAP DMLコマンドまたはプログラムを実行します。
EXECUTE PLSQL文字列
データベースでPL/SQLコマンドまたはスクリプトを実行します。
MODEL model_name
事前にキューブ用に作成されたモデルを実行します。
AGGREGATE USING [MEASURE]
「SCRIPTパラメータ: USING句: AGGREGATEコマンド」に記載されている構文を使用して、集計値を生成します。
SCRIPTパラメータ: USING句: AGGREGATEコマンド
スクリプトのAGGREGATE
コマンドは、1つ以上のメジャーに対して集計ルールを指定します。
注意: AGGREGATE コマンドは、未圧縮のキューブでのみ使用できます。 |
AGGREGATE
の構文は、次のとおりです。
{ AGGREGATE USING MEASURE WHEN measure1 THEN operator1 WHEN measure2 THEN operator2... ELSE default_operator | [AGGREGATE USING] operator_clause } processing_options OVER { ALL | dimension | dimension HIERARCHIES (hierarchy)}
USING MEASURE句
この句を使用すると、キューブ内の様々なメジャーに対して、それぞれ異なる集計演算子を指定できます。
operator_clause
operator_clause
の構文は、次のとおりです。
operator(WEIGHTBY expression | SCALEBY expression)
WEIGHTBY
は、集計前に各データ値を式で乗算します。
SCALEBY
は、集計前に各データ値に式の値を追加します。
表36-3 集計演算子
演算子 | オプション | 説明 |
---|---|---|
|
|
データ値を追加し、その合計を追加したデータ値の数で割ります。 |
|
|
最初の実際のデータ値。 |
|
|
データ値を追加し、その合計をディメンション階層の子の数で割ります。非NAの子のみをカウントするAVERAGEとは異なり、HAVERAGEでは、各子が値を持っているかどうかに関係なく、1つの親の論理的な子がすべてカウントされます。 |
|
|
階層の最初のデータ値(値がNAの場合でも)。 |
|
|
階層の最後のデータ値(値がNAの場合でも)。 |
|
|
最後の実際のデータ値。 |
|
|
各親の子の中で最大のデータ値。 |
|
|
各親の子の中で最小のデータ値。 |
|
|
データ値を追加します(デフォルト)。 |
処理オプション
次の処理オプションを集計用に指定できます。
(ALLOW | DISALLOW) OVERFLOW
小数部オーバーフローを許可するかどうかを指定します。小数部オーバーフローは、計算の結果が大きすぎて、数値の指数部分で表現できない場合に発生します。
ALLOW
: オーバーフローが発生する計算がエラーなしで実行され、結果はNULLとなります(デフォルト)。
DISALLOW
: オーバーフローを含む計算の実行が停止され、エラー・メッセージが生成されます。
(ALLOW | DISALLOW) DIVISION BY ZERO
0(ゼロ)で割り算できるかどうかを指定します。
ALLOW
: 0(ゼロ)の割り算を含む計算はエラーなしで実行されますが、NULL値が戻されます(デフォルト)。
DISALLOW
: 0(ゼロ)の割り算を含む計算の実行が停止され、エラー・メッセージが生成されます。
(CONSIDER | IGNORE) NULLS
NULLが計算に含まれるかどうかを指定します。
CONSIDER
: NULLが計算に含まれます。NULL値が含まれる計算では、NULL値が戻されます。
IGNORE
: 実際のデータ値のみが計算に使用されます。NULLは存在しないものとして処理されます(デフォルト)。
MAINTAIN COUNT
平均の計算に使用するために、ディメンション・メンバーの最新数を保存します。オンザフライでメンバーをカウントするには、このオプションを省略します。
使用上の注意
作成メソッド
C
、S
および?
メソッドは常に成功し、任意のキューブで使用できます。
F
およびP
メソッドでは、作成済の高速マテリアライズド・ビューまたはリライト・マテリアライズド・ビューがキューブに存在している必要があります。
並列度
パーティション化されたキューブは、並列処理でロードおよび集計できます。たとえば、5つのパーティションがあるキューブでは、最大で5つのプロセスを使用できます。ディメンションは常に、直列でロードされます。
作成で実際に使用される並列処理の数は、次の要素の最小値で制御されます。
作成中のキューブの数および各キューブのパーティションの数。
BUILD
プロシージャのPARALLELISM
引数の設定。
JOB_QUEUE_PROCESSES
データベース初期化パラメータの設定。
UNITS_CUBE
にパーティションが12個あり、PARALLELISM
を10に設定し、JOB_QUEUE_PROCESSES
を4に設定するとします。この作成では、4つのプロセスが使用されます。これらのプロセスは、スレーブ・プロセスとして作成ログに表示されます。
作成ログ
作成ログは、所有者のスキーマにCUBE_BUILD_LOG
という名前の表として保存されます。このログは動的に更新されるため、作成の進捗を監視できます。アナリティック・ワークスペース・マネージャでは、このログが自動的に作成されます。 それ以外の場合は、$ORACLE_HOME/olap/admin/utlolaplog.sql
を実行するとログファイルを作成できます。
次に、UNITS_CUBE
という名前のキューブのデフォルト作成の、一部の列の例を示します。
SQL> SELECT command, status, build_object, build_object_type type FROM cube_build_log WHERE build_id='1'; COMMAND STATUS BUILD_OBJECT TYPE -------------------- ---------- ------------------------------------ ---------- BUILD STARTED BUILD LOAD SYNCH STARTED TIME DIMENSION LOAD SYNCH COMPLETED TIME DIMENSION COMPILE STARTED TIME DIMENSION COMPILE COMPLETED TIME DIMENSION UPDATE STARTED TIME DIMENSION UPDATE COMPLETED TIME DIMENSION COMMIT STARTED TIME DIMENSION COMMIT COMPLETED TIME DIMENSION LOAD SYNCH STARTED PRODUCT DIMENSION LOAD SYNCH COMPLETED PRODUCT DIMENSION COMPILE STARTED PRODUCT DIMENSION COMPILE COMPLETED PRODUCT DIMENSION UPDATE STARTED PRODUCT DIMENSION UPDATE COMPLETED PRODUCT DIMENSION COMMIT STARTED PRODUCT DIMENSION COMMIT COMPLETED PRODUCT DIMENSION LOAD SYNCH STARTED CUSTOMER DIMENSION LOAD SYNCH COMPLETED CUSTOMER DIMENSION COMPILE STARTED CUSTOMER DIMENSION COMPILE COMPLETED CUSTOMER DIMENSION UPDATE STARTED CUSTOMER DIMENSION UPDATE COMPLETED CUSTOMER DIMENSION COMMIT STARTED CUSTOMER DIMENSION COMMIT COMPLETED CUSTOMER DIMENSION LOAD SYNCH STARTED CHANNEL DIMENSION LOAD SYNCH COMPLETED CHANNEL DIMENSION COMPILE STARTED CHANNEL DIMENSION COMPILE COMPLETED CHANNEL DIMENSION UPDATE STARTED CHANNEL DIMENSION UPDATE COMPLETED CHANNEL DIMENSION COMMIT STARTED CHANNEL DIMENSION COMMIT COMPLETED CHANNEL DIMENSION LOAD STARTED UNITS_CUBE CUBE LOAD COMPLETED UNITS_CUBE CUBE SOLVE STARTED UNITS_CUBE CUBE SOLVE COMPLETED UNITS_CUBE CUBE UPDATE STARTED UNITS_CUBE CUBE UPDATE COMPLETED UNITS_CUBE CUBE COMMIT STARTED UNITS_CUBE CUBE COMMIT COMPLETED UNITS_CUBE CUBE BUILD COMPLETED BUILD 42 rows selected.
例
この例では、デフォルト・パラメータを使用してUNITS_CUBE
を作成します。
EXECUTE DBMS_CUBE.BUILD('GLOBAL.UNITS_CUBE');
次の例では、UNITS_CUBE
を作成し、TIME
およびCHANNEL
という2つのディメンションを明示的に作成します。
BEGIN DBMS_CUBE.BUILD( 'GLOBAL.TIME USING (LOAD NO SYNCH, COMPILE), GLOBAL.CHANNEL, GLOBAL.UNITS_CUBE USING (CLEAR LEAVES, LOAD, SOLVE, ANALYZE) ', '?', -- solve false, -- refresh after errors 2, -- parallelism false, -- atomic refresh true, -- automatic order false, -- add dimensions 'Units Cube' -- identify job ); END; /
このプロシージャは、XMLテンプレートからアナリティック・ワークスペースを作成します。
構文
DBMS_CUBE.IMPORT_XML (DIRNAME IN VARCHAR2, FILENAME IN VARCHAR2; DBMS_CUBE.IMPORT_XML (IN_XML IN CLOB; DBMS_CUBE.IMPORT_XML (IN_XML IN CLOB, OUT_XML IN/OUT CLOB );
パラメータ
表36-4 IMPORT_XMLプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
データベース・ディレクトリの名前(大/小文字区別)。 |
|
XMLテンプレートを含むファイルの名前。 |
|
XMLテンプレートを含むCLOBの名前。 |
|
|
使用上の注意
XMLでは、アナリティック・ワークスペース全体、単一のキューブまたは単一のディメンションを定義できます。キューブまたはディメンションを再作成する場合は、既存のアナリティック・ワークスペースのコンテキストを指定する必要があります。
例
この例では、データベース・ディレクトリXML_DIR
にあるGLOBAL.XML
という名前のファイルから、XMLテンプレートをロードします。
SQL> EXECUTE dbms_cube.import_xml('XML_DIR', 'GLOBAL.XML');
次の例は、CLOB
に格納されているXMLテンプレートからGLOBAL
アナリティック・ワークスペースを作成するSQLスクリプトを示しています。 このファイルは、データベース・ディレクトリXML_DIR
にあるGLOBAL.XML
という名前のファイルです。 前の例のほうが、より直接的にXMLファイルを使用する方法を示しています。
DEFINE xml_file = 'GLOBAL.XML'; SET ECHO ON; SET SERVEROUT ON; DECLARE xml_file BFILE := bfilename('XML_DIR', '&xml_file'); in_xml CLOB; out_xml CLOB := NULL; dest_offset INTEGER := 1; src_offset INTEGER := 1; lang_context INTEGER := 0; warning INTEGER; BEGIN -- Setup the clob from a file DBMS_LOB.CREATETEMPORARY(in_xml, TRUE); DBMS_LOB.OPEN(in_xml, DBMS_LOB.LOB_READWRITE); DBMS_LOB.OPEN(xml_file, DBMS_LOB.FILE_READONLY); DBMS_LOB.LOADCLOBFROMFILE(in_xml, xml_file, DBMS_LOB.LOBMAXSIZE, dest_offset, src_offset, 0, lang_context, warning); -- Import the xml DBMS_CUBE.IMPORT_XML(in_xml); END; /
このプロシージャは、結果をデータベースにコミットすることなく、XMLが有効かどうかをチェックします。アナリティック・ワークスペースは作成されません。
構文
DBMS_CUBE.VALIDATE_XML (IN_XML IN CLOB );
パラメータ
使用上の注意
XMLテンプレートはCLOBにロードする必要があります(例を参照)。
テンプレートは、常に、テンプレートの生成に使用されたものと同じバージョンおよびリリースのOracle Databaseにロードする必要があります。異なるリリースのソフトウェアで生成された場合、XMLが無効になる可能性があります。
例
この例では、XMLテンプレートを一時CLOBにロードして検証します。 このスクリプトは、データベース・ディレクトリXML_DIR
にあるGLOBAL.XML
という名前のスクリプトです。
DEFINE xml_file = 'GLOBAL.XML'; SET ECHO ON; SET SERVEROUT ON; DECLARE xml_file BFILE := bfilename('XML_DIR', '&xml_file'); in_xml CLOB; out_xml CLOB := NULL; dest_offset INTEGER := 1; src_offset INTEGER := 1; lang_context INTEGER := 0; warning INTEGER; BEGIN -- Setup the clob from a file DBMS_LOB.CREATETEMPORARY(in_xml, TRUE); DBMS_LOB.OPEN(in_xml, DBMS_LOB.LOB_READWRITE); DBMS_LOB.OPEN(xml_file, DBMS_LOB.FILE_READONLY); DBMS_LOB.LOADCLOBFROMFILE(in_xml, xml_file, DBMS_LOB.LOBMAXSIZE, dest_offset, src_offset, 0, lang_context, warning); -- Validate the xml DBMS_CUBE.VALIDATE_XML(in_xml); END; /