ヘッダーをスキップ
Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス
11g リリース1(11.1)
E05686-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

36 DBMS_CUBE

DBMS_CUBEには、OLAPキューブおよびディメンションを作成するサブプログラム、および問合せのためにデータをロードして処理するサブプログラムが含まれています。


関連項目:

ビジネス・インテリジェンス・アプリケーションおよび分析アプリケーションをサポートするOLAPオプションの使用の詳細は、『Oracle OLAPユーザーズ・ガイド』を参照してください。

この章では、次の項目について説明します。


DBMS_CUBEの使用方法

キューブおよびディメンションは、複数ディメンションの分析をサポートする優れたデータ・オブジェクトです。キューブおよびディメンションは、アナリティック・ワークスペースと呼ばれるコンテナに格納されています。 OLAPオプションを使用すると、Oracle Databaseで複数ディメンションのオブジェクトと分析を使用できます。

キューブおよびディメンションのメタデータは、XMLテンプレートに定義されています。XMLテンプレートは、アナリティック・ワークスペース・マネージャという名前のグラフィック・ツールを使用して、対話形式で生成できます。

IMPORT_XMLプロシージャは、キューブおよびディメンションを含むアナリティック・ワークスペースを作成します。BUILDプロシージャは、データ・ソースからキューブおよびディメンションにデータをロードし、問合せ用のデータを準備するために必要な処理手順を実行します。また、アナリティック・ワークスペース・マネージャを使用して、XMLからアナリティック・ワークスペースを作成し、データのロードを開始することもできます。この2つの方法は同じです。


DBMS_CUBEサブプログラムの要約

表36-1 DBMS_CUBEサブプログラム

サブプログラム 説明

BUILDプロシージャ


データを1つ以上のキューブおよびディメンションにロードし、問合せ用のデータを準備します。

IMPORT_XMLプロシージャ


XMLテンプレートから、アナリティック・ワークスペースを作成するか、または既存のアナリティック・ワークスペースにオブジェクトを追加します。

VALIDATE_XMLプロシージャ


結果をデータベースにコミットしないで、XMLが有効かどうかをチェックします。



BUILDプロシージャ

このプロシージャは、データを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

キューブおよびディメンションのリストと作成オプション(「SCRIPTパラメータ」を参照)。

METHOD

完全リフレッシュまたは(部分的な)高速リフレッシュ。高速リフレッシュでは、変更された行のみがキューブに挿入され、キューブ内で影響を受けた部分が再集計されます。

各キューブに順番にメソッドを指定するか、またはすべてのキューブに単一のメソッドを適用できます。指定したキューブの数がメソッドの数を上回る場合は、最後に指定したメソッドが残りのキューブに適用されます。

  • C: 完全リフレッシュでは、ロードする前にすべてのディメンション値が消去されます。(デフォルト)。

  • F: キューブ・マテリアライズド・ビューの高速リフレッシュ。ソース・テーブルの変更された行のみの増分リフレッシュおよび再集計が実行されます。

  • ?: 使用可能な場合は高速リフレッシュ、それ以外の場合は完全リフレッシュ。

  • P: キューブ・マテリアライズド・ビュー内の行のうち、ディテール表で変更されたパーティションによって影響を受ける行を再計算します。

  • S: 圧縮済のキューブの高速リフレッシュ。高速リフレッシュによって、詳細データが再ロードされ、変更された値のみが再集計されます。

詳細は、「使用上の注意」を参照してください。

メソッドはディメンションには適用されません。

REFRESH_AFTER_ERRORS

TRUEにすると、エラーを含むキューブまたはディメンションのみがロールバックされ、他のオブジェクトの作成は続行されます。

FALSEにすると、作成中のオブジェクトがすべてロールバックされます。

PARALLELISM

このジョブに割り当てられた並列処理の数(「使用上の注意」を参照)。

ATOMIC_REFRESH

TRUEにすると、ユーザーは作成中に中間結果にアクセスできなくなります。現行のセッションでデータの一貫性を保つために、作成開始時にアナリティック・ワークスペースの現行の状態がフリーズされます。作成終了時にアナリティック・ワークスペースがアンフリーズされ、新規セッションにリフレッシュしたデータへのアクセス権が付与されます。作成中にエラーが発生すると、すべてのオブジェクトがフリーズした状態にロールバックされます。

FALSEにすると、ユーザーは作成中に中間結果にアクセスできます。

AUTOMATIC_ORDER

TRUEにすると、作成順序を最適化できます。 ディメンションは、キューブより前にロードされます。

FALSEにすると、スクリプトに指定した順序でオブジェクトが作成されます。

ADD_DIMENSIONS

TRUEにすると、スクリプトに指定したかどうかに関係なく、作成時にキューブのすべてのディメンションが自動的に追加されます。特定のディメンションを含むキューブ・マテリアライズド・ビューが更新されると、そのディメンションは再ロードされません。スクリプトにキューブを指定できるのは1回です。

FALSEにすると、スクリプトに指定したディメンションのみが追加されます。

SCHEDULER_JOB

ログ表に表示される、ジョブのテキスト識別子。


SCRIPTパラメータ

SCRIPTパラメータは、作成時に追加されるオブジェクトを識別し、各作成で実行される処理のタイプを指定します。このパラメータの構文は、次のとおりです。

object [ USING ( commands ) ][,...]

各項目の意味は、次のとおりです。

objectは、aw_name.object形式のキューブまたはディメンションの完全修飾名(GLOBAL.TIMEなど)を示します。

SCRIPTパラメータ: USING句

USING句は、処理オプションを指定します。カンマで区切った1つ以上のコマンドで構成されます。


注意:

リライト・マテリアライズド・ビューを含むキューブでは、ANALYZEコマンドを除いてUSING句は使用できません。デフォルトの作成オプションが使用されます。

commandsには、次のいずれかを指定できます。

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 集計演算子

演算子 オプション 説明

AVG

WEIGHTBY

データ値を追加し、その合計を追加したデータ値の数で割ります。

FIRST

WEIGHTBY

最初の実際のデータ値。

HIER_AVG

WEIGHTBY

データ値を追加し、その合計をディメンション階層の子の数で割ります。非NAの子のみをカウントするAVERAGEとは異なり、HAVERAGEでは、各子が値を持っているかどうかに関係なく、1つの親の論理的な子がすべてカウントされます。

HIER_FIRST

WEIGHTBY

階層の最初のデータ値(値がNAの場合でも)。

HIER_LAST

WEIGHTBY

階層の最後のデータ値(値がNAの場合でも)。

LAST

WEIGHTBY

最後の実際のデータ値。

MAX

WEIGHTBY

各親の子の中で最大のデータ値。

MIN

WEIGHTBY

各親の子の中で最小のデータ値。

SUM

SCALEBY | WEIGHTBY

データ値を追加します(デフォルト)。


処理オプション

次の処理オプションを集計用に指定できます。

使用上の注意

作成メソッド

CSおよび?メソッドは常に成功し、任意のキューブで使用できます。

FおよびPメソッドでは、作成済の高速マテリアライズド・ビューまたはリライト・マテリアライズド・ビューがキューブに存在している必要があります。

並列度

パーティション化されたキューブは、並列処理でロードおよび集計できます。たとえば、5つのパーティションがあるキューブでは、最大で5つのプロセスを使用できます。ディメンションは常に、直列でロードされます。

作成で実際に使用される並列処理の数は、次の要素の最小値で制御されます。

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;
/

IMPORT_XMLプロシージャ

このプロシージャは、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プロシージャのパラメータ

パラメータ 説明

DIRNAME

データベース・ディレクトリの名前(大/小文字区別)。

FILENAME

XMLテンプレートを含むファイルの名前。

IN_XML

XMLテンプレートを含むCLOBの名前。

OUT_XML

DBMS_CUBEで生成されるXMLファイル。デフォルト値の設定、XMLへの小規模な修正など、インポート済XMLに対して行われたDBMS_CUBEによる変更が表示されます。


使用上の注意

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;
/

VALIDATE_XMLプロシージャ

このプロシージャは、結果をデータベースにコミットすることなく、XMLが有効かどうかをチェックします。アナリティック・ワークスペースは作成されません。

構文

DBMS_CUBE.VALIDATE_XML
       (IN_XML                IN  CLOB );

パラメータ

表36-5 VALIDATE_XMLプロシージャのパラメータ

パラメータ 説明

IN_XML

XMLテンプレートを含む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;
/