40 DBMS_CUBE

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

参照:

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

この章のトピックは、次のとおりです:

40.1 DBMS_CUBEの使用方法

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

キューブおよびディメンションを自動リフレッシュし、クエリー・リライトを実行するために、キューブをキューブ・マテリアライズド・ビューとして使用できます。複数のDBMS_CUBEサブプログラムで、リレーショナル・マテリアライズド・ビューのかわりとしてのキューブ・マテリアライズド・ビューの作成およびメンテナンスがサポートされています。これらのサブプログラムの詳細は、「SQL集計管理の使用方法」を参照してください。

キューブおよびディメンションのメタデータはテンプレートと呼ばれるXML文書に定義されていて、CREATE_CUBEファンクションまたはDERIVE_FROM_MVIEWファンクションを使用してリレーショナル・マテリアライズド・ビューから導出できます。Analytic Workspace Managerというグラフィック・ツールを使用して、アナリティック・コンテンツでキューブを拡張したり、新しいキューブおよびキューブ・ディメンションに対してメタデータを最初から作成できます。

その他のいくつかのDBMS_CUBEサブプログラムでは、XMLテンプレートからアナリティック・ワークスペースを作成し、キューブとディメンションに格納されたデータをリフレッシュする場合にAnalytic Workspace ManagerのかわりとなるSQLを提供しています。IMPORT_XMLプロシージャは、キューブおよびキューブ・ディメンションを含むアナリティック・ワークスペースをXMLテンプレートから作成します。BUILDプロシージャは、データ・ソースからキューブおよびディメンションにデータをロードし、問合せ用のデータを準備するために必要な処理手順を実行します。

40.1.1 DBMS_CUBEのセキュリティ・モデル

DBMS_CUBEパッケージを使用するには、特定のロールおよびシステム権限が必要です。

ユーザー独自のスキーマ内にディメンション・オブジェクトを作成する場合:

  • OLAP_USERロール

  • CREATE SESSION権限

異なるスキーマ内にディメンション・オブジェクトを作成する場合:

  • OLAP_DBAロール

  • CREATE SESSION権限

ユーザー独自のスキーマ内にキューブ・マテリアライズド・ビューを作成する場合:

  • CREATE MATERIALIZED VIEW権限

  • CREATE DIMENSION権限

  • ADVISOR権限

異なるスキーマ内にキューブ・マテリアライズド・ビューを作成する場合:

  • CREATE ANY MATERIALIZED VIEW権限

  • CREATE ANY DIMENSION権限

  • ADVISOR権限

ソース・テーブルが異なるスキーマ内にある場合、ディメンション・オブジェクトの所有者には、それらのテーブルに対するSELECTオブジェクト権限が必要です。

40.2 SQL集計管理の使用方法

SQL集計管理はDBMS_CUBEのPL/SQLサブプログラムのグループで、既存のリレーショナル・マテリアライズド・ビューからのキューブ・マテリアライズド・ビューの迅速なデプロイをサポートしています。

キューブ・マテリアライズド・ビューは、Oracle Databaseの自動リフレッシュ機能およびクエリー・リライト機能のために拡張されたキューブです。単一のキューブ・マテリアライズド・ビューでは、ファクト表上にあるサマリーの多数のリレーショナル・マテリアライズド・ビューを置き換えることができるため、すべてのサマリー・データへのレスポンス時間を均一にできます。

キューブ・マテリアライズド・ビューによって、詳細なリレーショナル表のサマリーを問い合せるアプリケーションで、OLAPオプションの高速更新機能および高速問合せ機能を使用できるようになります。サマリー・データが生成されてキューブに格納され、クエリー・リライトによって、問合せが自動的にキューブ・マテリアライズド・ビューにリダイレクトされます。アプリケーションの問合せのパフォーマンスが向上します。

キューブ・マテリアライズド・ビューの作成プロセスでは、DBMS_CUBEによって、キューブおよびキューブ・ディメンションを含むすべての機能を備えたアナリティック・ワークスペースも作成されます。キューブには、リレーショナル・マテリアライズド・ビューのデータが格納される表のかわりに、キューブ・マテリアライズド・ビューのデータが格納されます。また、キューブでは、情報が豊富なコンテンツでデータベースを拡張するための様々な分析関数もサポートされています。

キューブ・マテリアライズド・ビューは、他のマテリアライズド・ビューとともに、データ・ディクショナリに登録されます。キューブ・マテリアライズド・ビューは、CB$接頭辞によって識別されます。

DBMS_CUBEサブプログラムでは、キューブ・マテリアライズド・ビューのライフサイクル管理もサポートされています。

参照:

キューブ・マテリアライズド・ビューおよび拡張OLAP分析の詳細は、『Oracle OLAPユーザーズ・ガイド』キューブへのマテリアライズド・ビュー機能の追加に関する項を参照してください。

40.2.1 SQL集計管理のサブプログラム

SQL集計管理には、4つのサブプログラムが含まれています。

40.2.2 リレーショナル・マテリアライズド・ビューの要件

SQL集計管理では、既存のリレーショナル・マテリアライズド・ビューを使用して、キューブ・マテリアライズド・ビューの生成に必要なすべての情報を導出します。リレーショナル・マテリアライズド・ビューは、キューブ・マテリアライズド・ビューに格納されたデータの詳細レベルを決定します。関連付けられたリレーショナル・ディメンション・オブジェクトは、マテリアライズド・ビュー副問合せのGROUP BY句で指定される最下位レベルからディメンション階層の最上位レベルまで、集計の範囲を決定します。

リレーショナル・マテリアライズド・ビューは、次の要件を満たしている必要があります。

  • 1つ以上の列に対する明示的なGROUP BY句。

  • 選択リストまたはGROUP BY句に式がないこと。

  • SUMMINMAXAVG数値集計メソッドの1つ以上。

  • 外部結合がないこと。

  • リレーショナル・ディメンションに関連付けられた1つ以上の単純列を持つサマリー・キー。

    または

    1つ以上の単純列を持ち、階層またはレベルを持たないサマリー・キー。

  • ファクト列に対する任意の数値データ・タイプ。すべてのファクトはNUMBERに変換されます。

  • リライトが可能であること。REWRITE_CAPABILITYGENERALにする必要があり、NONEにはできません。『Oracle Databaseリファレンス』ALL_MVIEWSエントリを参照してください。

  • 定義問合せの集計関数では、DISTINCTまたはUNIQUEキーワードは使用できません。たとえば、AVG(DISTINCT units)は、STRICTモードではエラーの原因になり、LOOSEモードでは無視されます。

キューブ・マテリアライズド・ビューを表示する場合は、LOOSEおよびSTRICTの2つのモードから選択できます。STRICTモードでは、要件から逸脱すると例外が発生し、マテリアライズド・ビューが作成されません。LOOSEモード(デフォルト)では、一部の逸脱は許容されますが、マテリアライズド・ビューの内容に影響があります。リレーショナル・マテリアライズド・ビューにこれらの要素があると、次の警告メッセージが生成されます。

  • 定義問合せの複雑な式は無視され、キューブ・マテリアライズド・ビューには表示されません。

  • AVGファンクションはSUMおよびCOUNTに変更されます。

  • SUMMINMAXまたはAVGファンクションを伴わないCOUNTファンクションは無視されます。

  • STDDEVおよびVARIANCEファンクションは無視されます。

WHERE句での条件のフィルタ処理方法を選択することもできます。フィルタ処理がオフの場合、条件は無視されます。オンの場合、有効な条件はキューブ・マテリアライズド・ビューで表示されますが、ディメンション・レベル間で条件が非対称な場合は例外が発生します。

40.2.3 キューブ・マテリアライズド・ビューの管理および問合せに対する権限

キューブ・マテリアライズド・ビューを管理および問合せするには、特定の権限が必要です。

キューブ・マテリアライズド・ビューを作成するには、次の権限が必要です。

  • CREATE [ANY] MATERIALIZED VIEW権限

  • CREATE [ANY] DIMENSION権限

  • ADVISOR権限

クエリー・リライトを使用して別のスキーマからキューブ・マテリアライズド・ビューにアクセスするには、次の権限が必要です。

  • GLOBAL QUERY REWRITE権限

  • リレーショナル・ソース表に対するSELECTまたはREAD権限

  • キューブ・マテリアライズド・ビューがサポートされているアナリティック・ワークスペース(AW$name)に対するSELECTまたはREAD権限

  • キューブに対するSELECTまたはREAD権限

  • キューブのディメンションに対するSELECTまたはREAD権限

キューブ・マテリアライズド・ビューに対してではなく、キューブ・マテリアライズド・ビューをサポートしているデータベース・オブジェクトに対するSELECTまたはREAD権限が必要なことに注意してください。

40.2.4 SQL集計管理の例

SQL集計管理の6つの例が用意されています。これらすべての例で、サンプルの販売履歴スキーマが使用されます。このスキーマはCAL_MONTH_SALES_MVおよびFWEEK_PSCAT_SALES_MVの2つのリレーショナル・マテリアライズド・ビューとともにOracle Databaseにインストールされます。

  • CAL_MONTH_SALES_MV リレーショナル・マテリアライズド・ビューについて

  • キューブ・マテリアライズド・ビューの作成

  • リレーショナル・マテリアライズド・ビューの無効化

  • キューブ・マテリアライズド・ビューの実行計画の作成

  • キューブ・マテリアライズド・ビューのメンテナンス

  • 新しいデータベース・オブジェクト

CAL_MONTH_SALES_MV リレーショナル・マテリアライズド・ビューについて

次の例では、キューブ・マテリアライズド・ビューの作成の基本として、CAL_MONTH_SALES_MVを使用しています。CAL_MONTH_SALES_MVの作成には、次の問合せが使われました。CAL_MONTH_SALES_MVは、SALES表に格納されている日次販売データを月ごとに要約します。

SELECT query FROM user_mviews 
     WHERE mview_name='CAL_MONTH_SALES_MV';
 
QUERY
--------------------------------------------
SELECT   t.calendar_month_desc
  ,        sum(s.amount_sold) AS dollars
  FROM     sales s
  ,        times t
  WHERE    s.time_id = t.time_id
  GROUP BY t.calendar_month_desc

DBMS_CUBEは、リレーショナル・ディメンションを使用して、キューブ・マテリアライズド・ビューのレベルおよび階層を導出します。次の問合せは、スキーマ内のほとんどのディメンション表に対してリレーショナル・ディメンションを持つSHスキーマを示しています。

SELECT dimension_name FROM user_dimensions;
 
DIMENSION_NAME
-------------------------------------
CUSTOMERS_DIM
PRODUCTS_DIM
TIMES_DIM
CHANNELS_DIM
PROMOTIONS_DIM

キューブ・マテリアライズド・ビューの作成

次のPL/SQLスクリプトでは、CREATE_MVIEWファンクションを使用して、CAL_MONTH_SALES_MVからキューブ・マテリアライズド・ビューを作成します。CREATE_MVIEWによって、キューブ・マテリアライズド・ビューをすぐにリフレッシュするためのオプションのBUILDパラメータが設定されます。

SET serverout ON format wrapped
 
DECLARE
     salesaw  varchar2(30);
          
BEGIN
     salesaw := dbms_cube.create_mview('SH', 'CAL_MONTH_SALES_MV',
                'build=immediate');
END;
/

次のメッセージは、スクリプトがCB$CAL_MONTH_SALESを正常に作成し、リフレッシュしたことを示します。

Completed refresh of cube mview "SH"."CB$CAL_MONTH_SALES" at 20130212 08:42:58.0
03.
Created cube organized materialized view "CB$CAL_MONTH_SALES" for rewrite at 200
130212 08:42:58.004.

次の問合せを実行すると、SHスキーマ内のマテリアライズド・ビューが表示されます。

SELECT mview_name FROM user_mviews;

MVIEW_NAME
------------------------------
CB$CAL_MONTH_SALES
CB$TIMES_DIM_D1_CAL_ROLLUP
CAL_MONTH_SALES_MV
FWEEK_PSCAT_SALES_MV

次の2つの新しいマテリアライズド・ビューが、データ・ディクショナリに登録されます。

  • CB$CAL_MONTH_SALES: キューブ・マテリアライズド・ビュー

  • CB$TIMES_DIM_D1_CAL_ROLLUP: TIME_DIMカレンダ・ロールアップ階層のキューブ・ディメンション・マテリアライズド・ビュー

キューブ・ディメンション・マテリアライズド・ビューでは、キューブ・マテリアライズド・ビューのリフレッシュがサポートされています。ディメンション・マテリアライズド・ビューを直接管理しないでください。

リレーショナル・マテリアライズド・ビューの無効化

キューブ・マテリアライズド・ビューの作成後、キューブ・マテリアライズド・ビューでサポートされるようになったファクトに対するすべてのリレーショナル・マテリアライズド・ビューでのクエリー・リライトを無効にします。リレーショナル・マテリアライズド・ビューは、最適なパラメータでキューブ・マテリアライズド・ビューが作成されたことを確認できたら削除できます。

ALTER MATERIALIZED VIEW cal_month_sales_mv DISABLE QUERY REWRITE;
 
Materialized view altered.

CREATE_MVIEWファンクションではDISABLEQRWパラメータを使用することもできます。このパラメータによってソース・マテリアライズド・ビューでのクエリー・リライトが無効になります(表40-7を参照)。

キューブ・マテリアライズド・ビューの実行計画の作成

キューブ・マテリアライズド・ビューに対する実行計画は、リレーショナル・マテリアライズド・ビューと同じ方法で作成できます。次のコマンドは、日レベルのデータを含むSALES表への問合せに対する実行計画を生成します。回答セットでは、四半期ごとに要約されたデータが必要です。リレーショナル・マテリアライズド・ビューのデータは月ごとに要約されているため、クエリー・リライトでは、この問合せに元のリレーショナル・マテリアライズド・ビューは使用されません。ただし、クエリー・リライトでは、月、四半期、年およびすべての年についてのサマリー・データに対して、新しいキューブ・マテリアライズド・ビューを使用できます。

EXPLAIN PLAN FOR SELECT
           t.calendar_quarter_desc,
           sum(s.amount_sold) AS dollars
  FROM     sales s,
           times t
  WHERE    s.time_id = t.time_id
  AND      t.calendar_quarter_desc LIKE '2001%'
  GROUP BY t.calendar_quarter_desc
  ORDER BY t.calendar_quarter_desc;

この問合せは次の結果を戻します

CALENDAR_QUARTER_DESC    DOLLARS
--------------------- ----------
2001-01               6547097.44
2001-02               6922468.39
2001-03               7195998.63
2001-04               7470897.52

次の実行計画は、クエリー・リライトがSALES表から再計算するかわりに、キューブ・マテリアライズド・ビューからサマリー・データCB$CAL_MONTH_SALESを戻すことを示しています。

SELECT plan_table_output FROM TABLE(dbms_xplan.display());

PLAN_TABLE_OUTPUT
---------------------------------------------------------------------------------------------------------------
Plan hash value: 2999729407

-----------------------------------------------------------------------------------------------------
| Id  | Operation                      | Name               | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT               |                    |     1 |    30 |     3  (34)| 00:00:01 |
|   1 |  SORT GROUP BY                 |                    |     1 |    30 |     3  (34)| 00:00:01 |
|*  2 |   MAT_VIEW REWRITE CUBE ACCESS | CB$CAL_MONTH_SALES |     1 |    30 |     2   (0)| 00:00:01 |
-----------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - filter("CB$CAL_MONTH_SALES"."D1_CALENDAR_QUARTER_DESC" LIKE '2001%' AND
              "CB$CAL_MONTH_SALES"."SYS_GID"=63)

15 rows selected.

キューブ・マテリアライズド・ビューのメンテナンス

自動的にリフレッシュするキューブ・マテリアライズド・ビューを作成できます。ただし、リフレッシュは、随時REFRESH_MVIEWプロシージャを使用して強制実行できます。

BEGIN
     dbms_cube.refresh_mview('SH', 'CB$CAL_MONTH_SALES');
END;
/ 

Completed refresh of cube mview "SH"."CB$CAL_MONTH_SALES" at 20130212
14:30:59.534.

キューブ・マテリアライズド・ビューを削除する必要がある場合は、すべてのサポート・データベース・オブジェクト(アナリティック・ワークスペース、キューブ、キューブ・ディメンションなど)も削除するためにDROP_MVIEWプロシージャを使用します。

BEGIN
     dbms_cube.drop_mview('SH', 'CB$CAL_MONTH_SALES');
END;
/ 

Dropped cube organized materialized view "SH"."CAL_MONTH_SALES" including
container analytic workspace "SH"."CAL_MONTH_SALES_AW" at 20130212 13:38:47.878.

新しいデータベース・オブジェクト

CREATE_MVIEWファンクションは、キューブ・マテリアライズド・ビューに加えていくつかの優れたデータベース・オブジェクトを作成します。これらのオブジェクトは、ALL_CUBESALL_CUBE_DIMENSIONSなどのビューを問い合せてデータ・ディクショナリで検索できます。

この例では、次のサポート・オブジェクトが作成されています。

  • アナリティック・ワークスペースCAL_MONTH_SALES_AW(AW$CAL_MONTH_SALES_AW表)

  • キューブCAL_MONTH_SALES

  • キューブ・ディメンションTIMES_DIM_D1

  • ディメンション階層CAL_ROLLUP

  • ディメンション・レベルALL_TIMES_DIMYEARQUARTERおよびMONTH

  • CAL_ROLLUP階層内のレベルに対する数値属性

40.3 10gアナリティック・ワークスペースのアップグレード

OLAP 10gアナリティック・ワークスペースをOLAP 12cにアップグレードするには、OLAP 10gオブジェクトをXMLテンプレートとして保存し、そのXMLを別のスキーマにインポートします。元のアナリティック・ワークスペースにはそのままアクセス可能で、アップグレード・プロセスによって変更されません。

Oracle OLAPメタデータはOLAP 11gとOLAP 12cで同じなので、OLAP 11gアナリティック・ワークスペースをOLAP 12cにアップグレードする必要はありません。このトピックでは、Oracle OLAP 10gアナリティック・ワークスペースをOLAP 12cにアップグレードする方法を説明します。

ヒント:

アップグレードの実行には、Analytic Workspace Managerを使用することをお薦めします。『Oracle OLAPユーザーズ・ガイド』OLAP 10gからのメタデータのアップグレードに関する項を参照してください。

DBMS_CUBEにあるこれらのサブプログラムは、アップグレード・プロセスをサポートします。

前提条件:

  • OLAP 10gアナリティック・ワークスペースでは、OLAP標準形式のメタデータを使用できます。

  • OLAP 10gアナリティック・ワークスペースでのカスタマイズはXMLテンプレートにエクスポートされない場合があります。OLAP 12cでこれらを再作成する必要があります。

  • 元のリレーショナル・ソース・データは、新しいアナリティック・ワークスペースにロードするために使用できる必要があります。データが別のスキーマにある場合、または表の名前が異なる場合は、アップグレード後にディメンション・オブジェクトを新しいリレーショナル・ソースに再マップする必要があります。

  • OLAP 12cアナリティック・ワークスペースは、OLAP 10gアナリティック・ワークスペースと同じスキーマに作成できます。ただし、別のスキーマに作成する必要がある場合は、次の権限を持つ新しいユーザーを作成します。

    • OLAP 10gアナリティック・ワークスペース(GRANT SELECT ON schema.AW$analytic_workspace)に対するSELECTまたはREAD権限。

    • OLAP 10gアナリティック・ワークスペースのソース・データを含むすべてのデータベース表とビューに対するSELECTまたはREAD権限。

    • OLAP管理者の適切な権限。

    • Oracle 10gユーザーと同じデフォルトの表領域。

    『Oracle OLAPユーザーズ・ガイド』を参照してください。

名前の競合の修正

OLAP 10gとOLAP 12cではネームスペースが異なります。正常にアップグレードするには、12cのネーミング規則で複数回使用されている10gのオブジェクト名を特定し、それらに一意の名前を指定する必要があります。

Oracle 12cのOLAPオブジェクト名の一意性は、次のネームスペースによって制御されます。

  • スキーマ: キューブ、ディメンションおよびメジャー・フォルダの名前はスキーマ内で一意である必要があります。これらは、表、ビュー、索引、リレーショナル・ディメンションまたはその他の優れたオブジェクトの名前とは競合できません。ただし、これらのOLAP 12cオブジェクト名と10gオブジェクト名は、異なるネームスペースに存在するため、区別する必要はありません。

  • キューブ: メジャーの名前はキューブ内で一意である必要があります。

  • ディメンション: 階層、レベルおよび属性の名前はディメンション内で一意である必要があります。たとえば、ディメンション内に、Customersという階層とCustomersというレベルが存在することはできません。

初期化表および名前変更表を使用して、アップグレードした12cアナリティック・ワークスペース内のオブジェクトの名前を変更できます。

初期化表

INITIALIZE_CUBE_UPGRADEプロシージャは、OLAP 12cネーミング規則での曖昧な名前を識別します。たとえば、10gディメンションには同じ名前の階層とレベルが含まれている場合があります。12cでは、同じ12cネームスペースに階層とレベルが存在するために名前が一意ではなくなり、12cクライアントは、階層とレベルを名前で区別することはできません。

INITIALIZE_CUBE_UPGRADEは、CUBE_UPGRADE_INFOという表を作成してこれらのレベル、階層および属性に一意の名前を移入します。12cクライアントは、表に移入された一意の名前を使用して、OLAP 12cのメタデータを参照できます。10gのメタデータに曖昧な名前が含まれていると、OLAP 12cクライアントをアナリティック・ワークスペースに連結したり、CUBE_UPGRADE_INFO表なしでアップグレードを実行したりすることはできません。

CUBE_UPGRADE_INFOを編集して、デフォルトの一意の名前を選択した名前に変更できます。また、行を追加して他のオブジェクトの名前を変更することもできます。12cクライアントの使用時に、新しいオブジェクト名が表示されます。10gクライアントの使用時には、元の名前が表示されます。ただし、この表はINITIALIZE_CUBE_UPGRADEプロシージャによって上書きされるため、カスタマイズした内容を名前変更表に入力する必要がある場合があります。

OLAP 10gからのアップグレード時には、CUBE_UPGRADE_INFO内の一意のオブジェクト名が新しいアナリティック・ワークスペース内の12cオブジェクトの名前として使用されます。ただし、INITIALIZE_CUBE_UPGRADEは、キューブ、ディメンションおよびメジャー・フォルダに一意の名前を自動的には指定しません。アップグレードを完了するには、12cネームスペース内でこれらのオブジェクトの名前が一意であることを確認する必要があります。CUBE_UPGRADE_INFO表または名前変更表でこれらのオブジェクトに新しい名前を指定できます。

OLAP 12cクライアントは、OLAP 10gアナリティック・ワークスペースと同じスキーマに存在する場合、自動的にCUBE_UPGRADE_INFOを使用します。

名前変更表

OLAP 12cアナリティック・ワークスペース用の新しいオブジェクト名を含む名前変更表を作成できます。その後、名前変更表をCREATE_IMPORT_OPTIONSおよびUPGRADE_AWプロシージャで使用できます。

同じスキーマ内でアップグレードする場合は、12cアナリティック・ワークスペース用に一意の名前を指定する必要があります。UPGRADE_AWプロシージャによってこのためのパラメータが提供されますが、提供されない場合は、名前変更表に新しい名前を指定する必要があります。12cキューブは10gキューブとは異なるネームスペースに作成されるため、キューブ名の複製によって曖昧さが生じることはありません。

名前変更表に指定されている名前は、アップグレード時にのみ使用され、CUBE_UPGRADE_INFO表に入力されている名前に上書きされます。

名前変更表を作成するには、次の手順を実行します。

  1. SQL*Plusまたは別のSQLクライアントを開き、Oracle Databaseに10gアナリティック・ワークスペースの所有者として接続します。

  2. 次のようなコマンドを発行します。

    CREATE TABLE table_name (
              source_id    VARCHAR2(300),
              new_name     VARCHAR2(30),
              object_type  VARCHAR2(30));
     
  3. 次のように名前変更表に適切な値を移入します。

table_nameは、名前変更表の名前です。

source_idは、IMPORT_XMLに提供されるXML文書に記述されているオブジェクトの識別子です。この識別子は、次の形式である必要があります。

schema_name.object_name[.subobject_name]

new_nameは、source_idで指定されたオブジェクトへのインポート時に指定されるオブジェクト名です。

object_typeは、XMLで記述されるStandardDimension、DerivedMeasureなどのオブジェクト・タイプです。

たとえば、次のSQL文によって、アナリティック・ワークスペース、1つのキューブおよび4つのディメンションの新しい名前が表に移入されます。

INSERT INTO my_object_map VALUES('GLOBAL_AW.GLOBAL10.AW', 'GLOBAL12', 'AW');
INSERT INTO my_object_map VALUES('GLOBAL_AW.UNITS_CUBE', 'UNIT_SALES_CUBE', 'Cube');
INSERT INTO my_object_map VALUES('GLOBAL_AW.CUSTOMER', 'CUSTOMERS', 'StandardDimension');
INSERT INTO my_object_map VALUES('GLOBAL_AW.CHANNEL', 'CHANNELS', 'StandardDimension');
INSERT INTO my_object_map VALUES('GLOBAL_AW.PRODUCT', 'PRODUCTS', 'StandardDimension');
INSERT INTO my_object_map VALUES('GLOBAL_AW.TIME', 'TIME_PERIODS', 'TimeDimension');

シンプル・アップグレード

シンプル・アップグレードでは、OLAP 10gアナリティック・ワークスペースからOLAP 12cアナリティック・ワークスペースが作成されます。

Oracle OLAP 10gアナリティック・ワークスペースのシンプル・アップグレードを実行するには、次の手順を実行します。

  1. SQL*Plusまたは同様のSQLコマンドライン・インタフェースを開き、OLAP 12cアナリティック・ワークスペースのスキーマ所有者としてOracle Database 12cに接続します。

  2. 12cアナリティック・ワークスペース内のオブジェクトの名前を変更するために、「名前変更表」の項の説明に従って名前変更表を作成します。(オプション)

  3. 「UPGRADE_AWプロシージャ」の説明に従ってアップグレードを実行します。

  4. DBMS_CUBE.BUILDプロシージャを使用してデータをキューブにロードします。

例40-1 GLOBALアナリティック・ワークスペースへのシンプル・アップグレードの実行

この例では、GLOBAL10というOLAP 10gアナリティック・ワークスペースからGLOBAL12というOLAP 12cアナリティック・ワークスペースを作成します。GLOBAL10には同じスキーマ内のキューブ、ディメンション、メジャー・フォルダまたは表の名前の競合は存在しないため、この例では名前変更表は必要ありません。

BEGIN 
 
  -- Upgrade the analytic workspace
  dbms_cube.upgrade_aw(sourceaw =>'GLOBAL10', destaw => 'GLOBAL12');
  
  -- Load and aggregate the data
  dbms_cube.build(script => 'UNITS_CUBE, PRICE_AND_COST_CUBE');
   
END;
/

カスタム・アップグレード

カスタム・アップグレードでは、エクスポートおよびインポートのオプションを設定できます。

Oracle OLAP 10gアナリティック・ワークスペースのカスタム・アップグレードを実行するには、次の手順を実行します。

  1. SQL*Plusまたは同様のSQLコマンドライン・インタフェースを開き、OLAP 12cアナリティック・ワークスペースのスキーマ所有者としてOracle Database 12cに接続します。

  2. 「初期化表」の項の説明に従って、初期化表を生成します。新しいデフォルトのオブジェクト名を確認し、必要に応じて変更します。

  3. 「名前変更表」の項の説明に従って、名前変更表を作成します。同じスキーマ内でアップグレードする場合は、名前変更表を使用して、12cアナリティック・ワークスペース用に一意の名前を指定する必要があります。そうでない場合、名前変更表は、アナリティック・ワークスペースのキューブ、ディメンション、メジャー・フォルダ間またはそれらの名前と宛先スキーマの既存のキューブ、ディメンション、メジャー・フォルダ、表間で名前が複製されたときにのみ必要となります。

  4. 次を行うSQLスクリプトを作成します。

    1. 「CREATE_EXPORT_OPTIONSプロシージャ」の説明に従って、エクスポート・オプション用のXML文書を作成します。アップグレードを実行するには、SUPPRESS_NAMESPACEオプションをTRUEに設定する必要があります。

    2. 「CREATE_IMPORT_OPTIONSプロシージャ」の説明に従って、インポート・オプション用のXML文書を作成します。

    3. 「EXPORT_XMLプロシージャ」の説明に従って、OLAP 12c形式でXMLテンプレートを作成します。

    4. 「IMPORT_XMLプロシージャ」の説明に従って、XMLテンプレートからOLAP 12cアナリティック・ワークスペースを作成します。

  5. 「BUILDプロシージャ」の説明に従って、新しいアナリティック・ワークスペースのデータをロードして集計します。

例40-2 GLOBALアナリティック・ワークスペースへのカスタム・アップグレードの実行

この例では、GLOBAL10アナリティック・ワークスペースのOLAP 10gメタデータをGLOBAL_AWスキーマ内のOLAP 12cメタデータにアップグレードします。

名前変更表によってアナリティック・ワークスペースの新しい名前が提供されます。名前変更表は、次のコマンドで定義されます。

CREATE TABLE my_object_map(
       source_id    VARCHAR2(300),
       new_name     VARCHAR2(30),
       object_type  VARCHAR2(30));
 
INSERT INTO my_object_map VALUES('GLOBAL_AW.GLOBAL10.AW',  'GLOBAL12', 'AW');
COMMIT;

次に、アップグレードを実行するためのスクリプトを示します。

set serverout on
 
DECLARE
  importClob    clob;
  exportClob    clob;
  exportOptClob clob;
  importOptClob clob;
  
BEGIN
 
  -- Create table of reconciled names
  dbms_cube.initialize_cube_upgrade;
  
  -- Create a CLOB containing the export options
  dbms_lob.createtemporary(exportOptClob, TRUE);
  dbms_cube.create_export_options(out_options_xml=>exportOptClob, suppress_namespace=>TRUE, preserve_table_owners=>TRUE);
  
  -- Create a CLOB containing the import options
  dbms_lob.createtemporary(importOptClob, TRUE);
  dbms_cube.create_import_options(out_options_xml=>importOptClob, rename_table => 'MY_OBJECT_MAP');
   
   -- Create CLOBs for the metadata
  dbms_lob.createtemporary(importClob, TRUE);
  dbms_lob.createtemporary(exportClob, TRUE);
  
  -- Export metadata from a 10g analytic workspace to a CLOB
  dbms_cube.export_xml(object_ids=>'GLOBAL_AW', options_xml=>exportOptClob, out_xml=>exportClob); 
  
  -- Import metadata from the CLOB
  dbms_cube.import_xml(in_xml => exportClob, options_xml=>importOptClob, out_xml=>importClob);
   
  -- Load and aggregate the data
  dbms_cube.build('UNITS_CUBE, PRICE_AND_COST_CUBE');
 
END;
/

40.4 DBMS_CUBEサブプログラムの要約

この表は、DBMS_CUBEプロシージャのサブプログラムについて説明しています。

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

サブプログラム 説明

BUILDプロシージャ

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

CREATE_EXPORT_OPTIONSプロシージャ

EXPORT_XMLプロシージャの処理オプションについての入力XML文書を作成します。

CREATE_IMPORT_OPTIONSプロシージャ

IMPORT_XMLプロシージャの処理オプションについての入力XML文書を作成します。

CREATE_MVIEWファンクション

リレーショナル・マテリアライズド・ビューの定義から、キューブ・マテリアライズド・ビューを作成します。

DERIVE_FROM_MVIEWファンクション

リレーショナル・マテリアライズド・ビューの定義から、キューブ・マテリアライズド・ビューのXMLテンプレートを作成します。

DROP_MVIEWプロシージャ

キューブ・マテリアライズド・ビューを削除します。

EXPORT_XMLプロシージャ

アナリティック・ワークスペースのXMLをCLOBにエクスポートします。

EXPORT_XML_TO_FILEプロシージャ

アナリティック・ワークスペースのXMLをファイルにエクスポートします。

IMPORT_XMLプロシージャ

XMLテンプレートを使用してアナリティック・ワークスペースを作成、変更または削除します。

INITIALIZE_CUBE_UPGRADEプロシージャ

名前が競合しているOracle OLAP 10gオブジェクトを処理して、Oracle 12cクライアントがそれらにアクセスできるようにします。

REFRESH_MVIEWプロシージャ

キューブ・マテリアライズド・ビューをリフレッシュします。

UPGRADE_AWプロシージャ

アナリティック・ワークスペースをOracle OLAP 10gから12cにアップグレードします。

VALIDATE_XMLプロシージャ

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

40.4.1 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,
       master_build_id       IN  BINARY_INTEGER  DEFAULT 0,
       nested                IN  BOOLEAN         DEFAULT FALSE);
       job_class             IN  VARCHAR2        DEFAULT 'DEFAULT_JOB_CLASS'

パラメータ

表40-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

ログ表に表示される、ジョブのテキスト識別子。文字列が一意である必要はありません。

master_build_id

作成に対する一意の名前。

nested

TRUEに設定すると、指定したキューブ・マテリアライズド・ビューのセットに対してネストしたリフレッシュ操作が実行されます。ネストしたリフレッシュ操作では、指定したマテリアライズド・ビューのセットと、すべての依存マテリアライズド・ビューが依存順序に基づいてリフレッシュされ、ネストしたマテリアライズド・ビューが元の実表の観点から完全に更新されます。

すべてのオブジェクトが1つのアナリティック・ワークスペースに存在する必要があります。

job_class

このジョブに関連付けるクラス。

SCRIPTパラメータ

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

[VALIDATE | NO COMMIT] objects [ USING ( commands ) ][,...]

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

VALIDATEは、すべての作成手順を確認し、計画された手順を実行せずにCUBE_BUILD_LOGに送信します。生成されたすべてのSQLをログ表のOUTPUT列で確認できます。

NO COMMITは、現行の連結モード(またはアナリティック・ワークスペースが連結されていない場合は読取り専用)でオブジェクトを作成し、変更をコミットしません。このオプションでは、一時的にデータ値を変更できるため、what-if分析がサポートされます。詳細は、「SCRIPTパラメータ: USING句: SETコマンド」を参照してください。

objectsは、[aw_name.]object形式のカンマで区切られた1つ以上のキューブまたはディメンションの修飾名(UNITS_CUBEGLOBAL.UNITS_CUBEなど)を示します。

SCRIPTパラメータ: USING句

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

注意:

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

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

  • AGGREGATE USING [MEASURE]

    「SCRIPTパラメータ: USING句: AGGREGATEコマンド」に記載されている構文を使用して、集計値を生成します。

  • ANALYZE

    DBMS_AW_STATS.ANALYZEを実行して、キューブおよびディメンションのオプティマイザ統計を生成し格納します。

  • CLEAR [VALUES | LEAVES | AGGREGATES] [SERIAL | PARALLEL]

    データ・リフレッシュ用にキューブを準備します。ディメンションに対して使用することもできますが、CLEARでは、すべてのディメンション・キーが削除されるため、ディメンションを使用するキューブのデータ値がすべて削除されます。

    次のオプションの引数で、リフレッシュ・メソッドを制御します。引数を省略した場合、CLEARの動作はリフレッシュ・メソッドによって異なります。「C」(完全)リフレッシュ・メソッドではCLEAR VALUESが実行され、他のすべてのリフレッシュ・メソッドではCLEAR LEAVESが実行されます。

    • VALUES: キューブ内のデータをすべて消去します。すべてのファクトを再ロードし、すべての集計を再計算する必要があります。このオプションでは、COMPLETEリフレッシュ・メソッドがサポートされています。(CおよびFメソッドのデフォルト)

    • LEAVES: 詳細データを消去し、集計を保持します。すべてのファクトを再ロードし、すべての新しいファクトまたは変更されたファクトの集計を再計算する必要があります。このオプションでは、FASTリフレッシュ・メソッドがサポートされています。(?メソッドのデフォルト)

    • AGGREGATES: 詳細データを保持し、集計を消去します。すべての集計を再計算する必要があります。

    次のオプションの引数でロード・メソッドを制御しますが、これらのオプションはリフレッシュ・オプションと組み合せることができます。

    • PARALLEL: 各パーティションが個別に消去されます。(デフォルト)

    • SERIAL: すべてのパーティションがまとめて消去されます。

    CLEARコマンドを省略した場合、DBMS_CUBEは新しいファクトおよび更新されたファクトをロードしますが、古い詳細データは削除しません。これは、ディメンションに対するLOAD NO SYNCと同様です

  • COMPILE [SORT | NO SORT | SORT ONLY]

    ディメンションでサポートされる構造を作成します。(ディメンションのみ)

    次のオプションで、ソート順序属性の使用を制御します。

    • SORT: ユーザー定義のソート順序属性によって、埋込み(ET)ビューのソート列に移入されます。(デフォルト)

    • NO SORT: すべてのソート順序属性が無視されます。このオプションは、ソートに消費されるリソースが多くなりすぎる場合がある非常に大きいディメンション用です。

    • SORT ONLY: コンパイル手順でのみソートが実行されます。

  • EXECUTE PLSQL文字列

    データベースでPL/SQLコマンドまたはスクリプトを実行します。

  • EXECUTE OLAP DML string [PARALLEL | SERIAL]

    アナリティック・ワークスペースでOLAP DMLコマンドまたはプログラムを実行します。次のオプションで、コマンドまたはプログラムの実行を制御します。

    • PARALLEL: 各パーティションに対してコマンドまたはプログラムを1回実行します。このオプションを使用して、予測やモデルなどの複雑なDML操作のパフォーマンスを向上させることができます。

    • SERIAL: キューブ全体に対してコマンドまたはプログラムを1回実行します。(デフォルト)

  • [INSERT | MERGE] INTO [ALL HIERARCHIES | HIERARCHIES (dimension.hierarchy)] VALUES (dim_key, parent, level_name)

    1つ以上の階層に1つのディメンション・メンバーを追加します。INSERTはメンバーがすでに存在する場合にエラーをスローしますが、MERGEはスローしません。詳細は、「ディメンションのメンテナンス例」を参照してください。

    dimension.hierarchy: 新しいメンバーが属する階層の名前。"PRODUCT"."PRIMARY"などのように名前の各部分を二重引用符で囲みます。

    dim_key: ディメンション・メンバーのDIM_KEY値。

    parent: ディメンション・キーの親。

    level_name: ディメンション・キーのレベル。

  • UPDATE [ALL HIERARCHIES | HIERARCHIES (dimension.hierarchy)] SET PARENT = parent, LEVEL=level_name WHERE MEMBER = dim_key

    既存のディメンション・メンバーのレベルまたは親を変更します。オプションについては、「INSERT」を参照してください。また、「ディメンションのメンテナンス例」も参照してください。

  • DELETE FROM DIMENSION WHERE MEMBER=dim_key

    ディメンション・メンバーを削除します。詳細は、「ディメンションのメンテナンス例」を参照してください。

    dim_key: 削除するディメンション・メンバーのDIM_KEY値。

  • SET dimension.attribute[qdr] = CAST('attribute_value' AS VARCHAR2))

    ディメンション・メンバーの属性の値を設定します。詳細は、「ディメンションのメンテナンス例」を参照してください。

    dimension.attribute: 属性の名前。"PRODUCT"."LONG_DESCRIPTION"などのように名前の各部分を二重引用符で囲みます。

    qdr: "PRODUCT"='OPT MOUSE'などの修飾データ参照の形式で属性値が指定されたディメンション・メンバー。

    attribute_value: 'Optical Mouse'などの属性の値。

  • FOR dimension_clause measure_clause BUILD (commands)

    次の引数を使用して、特定のメジャーおよびディメンション値に作成を制限します。詳細は、「FOR句の例」を参照してください。

    • dimension_clause:

      dimension ALL | NONE | WHERE condition | LEVELS (level [, level...])

      dimensionは、キューブのディメンション・メンバーの名前です。

      ALLは、一連のコマンドを実行する前にすべてのメンバーにディメンション・ステータスを設定します。

      NONEは、ディメンション・メンバーの値をロードしません。

      WHEREは、条件に一致するディメンション・メンバーの値をロードします。

      LEVELSは、指定されたレベルのディメンション・メンバーの値をロードします。

      levelは、指定されたディメンション・メンバーのレベルです。

    • measure_clause:

      MEASURES (measure [, measure...])

      measureは、キューブのメジャーの名前です。

    • commands: 他のUSINGコマンドのいずれか。

  • LOAD [SYNCH | NO SYNCH | RETAIN] [PRUNE | PARALLEL | SERIAL] [WHERE condition]

    データをディメンションまたはキューブにロードします。

    • WHEREは、conditionに一致する、マップされたリレーショナル表内の値にロードを制限します。

    • conditionは、マップされた表の列に基づく有効な述語です。「例」を参照してください。

    次のオプションの引数は、ディメンションのみに適用されます。

    • SYNCHは、ディメンション・キーをリレーショナル・データ・ソースと一致させます。(デフォルト)

    • NO SYNCHは、新規ディメンション・キーをロードしますが、古いキーは削除しません。

      ディメンション・キーの親がリレーショナル・データ・ソースで変更された場合、このオプションにより、アナリティック・ワークスペースの親子関係を変更するロードを実行できます。

    • RETAINは、新規ディメンション・キーをロードしますが、古いキーは削除しません。

      このオプションでは、ディメンション・キーの親を変更できません。親が変更された場合、そのレコードがロードで拒否されます。ログが有効な場合は、拒否レコード・ログにエラーが生成されます。

    次のオプションの引数は、キューブのみに適用されます。

    • PRUNE: ファクト表で全表スキャンを実行して、ロードするパーティションを判別します。たとえば、キューブが月ごとにパーティション化され、ファクト表に過去2か月のみの値が含まれている場合は、過去2か月のパーティションをロードするジョブのみが開始されます。

    • PARALLEL: 各パーティションが個別にロードされます。(デフォルト)

    • SERIAL: すべてのパーティションが1つのSELECT文でロードされます。

  • MODEL model_name [PARALLEL | SERIAL]

    事前にキューブ用に作成されたモデルを実行します。次の引数を指定できます。

    • PARALLEL: 各パーティションでモデルが個別に実行されます。

    • SERIAL: すべてのキューブでモデルが同時に実行されます。(デフォルト)

  • SET

    「SCRIPTパラメータ: USING句: SETコマンド」に記載されている構文を使用してキューブへのライトバックをサポートします。(キューブのみ)

  • SOLVE [PARALLEL | SERIAL]

    キューブ用に定義したルール(集計演算子、事前計算の仕様など)を使用して、キューブを集計します。(キューブのみ)

    次の引数を指定できます。

    • PARALLEL: 各パーティションが個別に解決されます。(デフォルト)

    • SERIAL: すべてのパーティションが同時に解決されます。

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は、集計前に各データ値に式の値を追加します。

表40-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

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

NO AGGREGATION

オプションなし

1つまたは複数のディメンションの値を集計しないでください。すべての集計値をNAとして残します。

SUM

SCALEBY | WEIGHTBY

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

処理オプション

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

  • (ALLOW | DISALLOW) OVERFLOW

    小数部オーバーフローを許可するかどうかを指定します。小数部オーバーフローは、計算の結果が大きすぎて、数値の指数部分で表現できない場合に発生します。

    • ALLOW: オーバーフローが発生する計算がエラーなしで実行され、結果はNULLとなります。(デフォルト)

    • DISALLOW: オーバーフローを含む計算の実行が停止され、エラー・メッセージが生成されます。

  • (ALLOW | DISALLOW) DIVISION BY ZERO

    ゼロによる除算を許可するかどうかを指定します。

    • ALLOW: 0 (ゼロ)の割り算を含む計算はエラーなしで実行されますが、NULL値が戻されます。(デフォルト)

    • DISALLOW: 0(ゼロ)の割り算を含む計算の実行が停止され、エラー・メッセージが生成されます。

  • (CONSIDER | IGNORE) NULLS

    NULLが計算に含まれるかどうかを指定します。

    • CONSIDER: NULLが計算に含まれます。NULL値が含まれる計算では、NULL値が戻されます。

    • IGNORE: 実際のデータ値のみが計算に使用されます。NULLは存在しないものとして処理されます。(デフォルト)

  • MAINTAIN COUNT

    平均の計算に使用するために、ディメンション・メンバーの最新数を保存します。オンザフライでメンバーをカウントするには、このオプションを省略します。

SCRIPTパラメータ: USING句: SETコマンド

スクリプト内のSETコマンドは、格納されているメジャー内の1つ以上のセルに値を割り当てます。構文は次のとおりです。

SET target = expression

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

targetは、メジャーまたは修飾データ参照です。

expressionは、targetに適したデータ・タイプの値を戻します。

修飾データ参照

修飾データ参照(QDR)は、問合せの継続中ディメンション・オブジェクトを1つ以上のディメンション内の1つのメンバーに制限します。

QDRの構文は、次のとおりです。

expression [ { dimension = member }[ , { dimension = member } ...] ]

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

expressionは、ディメンション式(通常はメジャーの名前)です。

dimensionは、式の一次ディメンションです。

memberは、ディメンションの値です。

太字で示されている外側の大カッコはリテラル構文要素であり、オプションの引数は示していません。通常のテキストで示されている内側の大カッコはオプションの引数の境界を示しており、構文要素ではありません。

次の例では、2007年の売上値が戻されます。

global.sales[global.time = 'CY2007'
]

次の例では、2007年の米国のみでの売上値が戻されます。

sales[customer = 'US', time = 'CY2007'
]

詳細は、SETコマンドの修飾データ参照の例を参照してください。

使用上の注意

作成メソッド

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

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

並列度

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

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

  • 作成中のキューブの数および各キューブのパーティションの数。

  • BUILDプロシージャのPARALLELISM引数の設定。

  • JOB_QUEUE_PROCESSESデータベース初期化パラメータの設定。

UNITS_CUBEにパーティションが12個あり、PARALLELISMを10に設定し、JOB_QUEUE_PROCESSESを4に設定するとします。OLAPでは、スレーブ・プロセスとして作成ログに表示される4つのプロセスが使用されます。

PARALLEL_DEGREE_POLICYデータベース初期化パラメータがAUTOまたはLIMITEDに設定されていると、SQLエンジンによって追加プロセスが割り当てられる場合があります。たとえば、OLAPが4つのプロセスを割り当てる場合、SQLエンジンがこれらのプロセスのうち2つは4つのプロセス、合計6つのプロセスで実行する必要があると判断する可能性があります。

作成ログ

OLAPは、作成に関する診断情報を提供する3つのログを生成します。

  • キューブ作成ログ

  • 拒否レコード・ログ

  • キューブ・ディメンション・コンパイル・ログ

Analytic Workspace Managerは、アナリティック・ワークスペースと同じスキーマにある表として、これらのログを自動的に作成します。Analytic Workspace Managerを使用しない場合は、DBMS_CUBE_LOGパッケージを使用して、PL/SQLにログを作成して管理できます。

また、$ORACLE_HOME/olap/admin/utlolaplog.sqlを実行してキューブ・ログ・ファイルを作成することもできます。このスクリプトは、さらに次の3つのビューを作成します。

  • CUBE_BUILD_LATEST: 最後の作成からのみ行を戻します。

  • CUBE_BUILD_REPORT: 経過時間とともに、コマンドごとに1行を戻します。

  • CUBE_BUILD_REPORT_LATEST: 最後の作成からのみCUBE_BUILD_REPORTなどのレポートを戻します。

次のレポートは、4つのディメンションと2つのキューブがあるGLOBALアナリティック・ワークスペースのオブジェクトの作成が正常に完了したことを示しています。

SELECT command, status, build_object, build_object_type type 
     FROM cube_build_report_latest;
 
COMMAND                   STATUS     BUILD_OBJECT                   TYPE
------------------------- ---------- ------------------------------ ----------
BUILD                     COMPLETED                                 BUILD
FREEZE                    COMPLETED                                 BUILD
LOAD NO SYNCH             COMPLETED  CHANNEL                        DIMENSION
COMPILE                   COMPLETED  CHANNEL                        DIMENSION
UPDATE/COMMIT             COMPLETED  CHANNEL                        DIMENSION
LOAD NO SYNCH             COMPLETED  CUSTOMER                       DIMENSION
COMPILE                   COMPLETED  CUSTOMER                       DIMENSION
UPDATE/COMMIT             COMPLETED  CUSTOMER                       DIMENSION
LOAD NO SYNCH             COMPLETED  PRODUCT                        DIMENSION
COMPILE                   COMPLETED  PRODUCT                        DIMENSION
UPDATE/COMMIT             COMPLETED  PRODUCT                        DIMENSION
LOAD NO SYNCH             COMPLETED  TIME                           DIMENSION
COMPILE                   COMPLETED  TIME                           DIMENSION
UPDATE/COMMIT             COMPLETED  TIME                           DIMENSION
COMPILE AGGMAP            COMPLETED  PRICE_CUBE                     CUBE
UPDATE/COMMIT             COMPLETED  PRICE_CUBE                     CUBE
COMPILE AGGMAP            COMPLETED  UNITS_CUBE                     CUBE
UPDATE/COMMIT             COMPLETED  UNITS_CUBE                     CUBE
DBMS_SCHEDULER.CREATE_JOB COMPLETED  PRICE_CUBE                     CUBE
DBMS_SCHEDULER.CREATE_JOB COMPLETED  UNITS_CUBE                     CUBE
BUILD                     COMPLETED                                 BUILD
LOAD                      COMPLETED  PRICE_CUBE                     CUBE
SOLVE                     COMPLETED  PRICE_CUBE                     CUBE
UPDATE/COMMIT             COMPLETED  PRICE_CUBE                     CUBE
BUILD                     COMPLETED                                 BUILD
LOAD                      COMPLETED  UNITS_CUBE                     CUBE
SOLVE                     COMPLETED  UNITS_CUBE                     CUBE
UPDATE/COMMIT             COMPLETED  UNITS_CUBE                     CUBE
ANALYZE                   COMPLETED  PRICE_CUBE                     CUBE
ANALYZE                   COMPLETED  UNITS_CUBE                     CUBE
THAW                      COMPLETED                                 BUILD
 
31 rows selected.

この例では、デフォルト・パラメータを使用してUNITS_CUBEを作成します。

EXECUTE DBMS_CUBE.BUILD('GLOBAL.UNITS_CUBE');

次の例では、UNITS_CUBEを作成し、TIMEおよびCHANNELという2つのディメンションを明示的に作成します。ディメンションでは完全(C)メソッドが使用され、キューブでは高速リフレッシュ(S)・メソッドが使用されます。

BEGIN
  DBMS_CUBE.BUILD(
    script=>'GLOBAL."TIME", GLOBAL.CHANNEL, GLOBAL.UNITS_CUBE',
    method=>'CCS',
    parallelism=>2);
END;
/

次の例では、WHERE句で識別して選択したデータのみをロードします。

BEGIN
  DBMS_CUBE.BUILD(q'!
  GLOBAL."TIME", 
  GLOBAL.CHANNEL, 
  GLOBAL.CUSTOMER, 
  GLOBAL.PRODUCT, 
  GLOBAL.UNITS_CUBE USING (LOAD NO SYNCH 
     WHERE UNITS_FACT.MONTH_ID LIKE '2006%' 
     AND UNITS_FACT.SALES > 5000)!');
END;
/

FOR句の例

この例では、時間ディメンションが暦年ごとにパーティション化され、CY2006で識別されたパーティションのみがDBMS_CUBEによって作成されます。HIER_ANCESTORは、OLAP式の構文の分析機能です。

BEGIN
   dbms_cube.build(q'!
   UNITS_CUBE USING
   (
   FOR "TIME" 
     WHERE HIER_ANCESTOR(WITHIN "TIME".CALENDAR LEVEL "TIME".CALENDAR_YEAR) = 'CY2006'
     BUILD (LOAD, SOLVE)
   )!', 
   parallelism=>1);
END;
/

次の例では、FOR句を使用して作成を2006年のSALESメジャーに制限します。すべてのオブジェクトが完全(C)メソッドを使用して作成されます。

BEGIN
  DBMS_CUBE.BUILD(
  script => '
  GLOBAL."TIME", 
  GLOBAL.CHANNEL, 
  GLOBAL.CUSTOMER, 
  GLOBAL.PRODUCT, 
  GLOBAL.UNITS_CUBE USING 
  (
    FOR MEASURES(GLOBAL.UNITS_CUBE.SALES)
      BUILD(LOAD NO SYNCH WHERE GLOBAL.UNITS_FACT.MONTH_ID LIKE ''2006%'')
   )',
  method => 'C',
  parallelism => 2);
END;
/

ライトバックの例

次に、USING句でのSETコマンドの様々な使用例を示します。

次の例では、Sales TargetをSalesの5%増に設定します。

DBMS_CUBE.BUILD('UNITS_CUBE USING(
   SET UNITS_CUBE.SALES_TARGET = UNITS_CUBE.SALES * 1.05, SOLVE)');
 

次の例では、2007年5月のDeluxe Mouseの価格を$29.99に設定します。

DBMS_CUBE.BUILD('PRICE_CUBE USING(
  SET PRICE_CUBE.UNIT_PRICE["TIME"=''2007.05'', "PRODUCT"=''DLX MOUSE''] 
  = 29.99, SOLVE)');

次の例には2つのSETコマンドが含まれていますが、キューブは再集計されません。

DBMS_CUBE.BUILD('PRICE_CUBE USING(
   SET PRICE_CUBE.UNIT_PRICE["TIME"=''2006.12'', "PRODUCT"=''DLX MOUSE'']
   = 29.49, 
   SET PRICE_CUBE.UNIT_PRICE["TIME"=''2007.05'', "PRODUCT"=''DLX MOUSE'']
   = 29.99)'); 

ディメンションのメンテナンス例

次のスクリプトは、ディメンションのメンテナンスを示しています。OPT MOUSEという新しいディメンション・メンバーをすべての階層に追加し、一次階層でのその位置を変更し、長い説明を割り当ててから、ディメンションから削除しています。

BEGIN
dbms_output.put_line('Add optical mouse');
dbms_cube.build(q'!
   "PRODUCT" using (MERGE INTO ALL HIERARCHIES 
   VALUES ('ITEM_OPT MOUSE', 'CLASS_SFT', "PRODUCT"."FAMILY"))
!');
 
dbms_output.put_line('Alter optical mouse');
dbms_cube.build(q'!
   "PRODUCT" using (UPDATE HIERARCHIES ("PRODUCT"."PRIMARY") 
   SET PARENT = 'FAMILY_ACC', LEVEL = "PRODUCT"."ITEM"
   WHERE MEMBER = 'ITEM_OPT MOUSE')
!');
 
dbms_output.put_line('Provide attributes to optical mouse');
dbms_cube.build(q'!
   "PRODUCT" USING (SET "PRODUCT"."LONG_DESCRIPTION"["PRODUCT" = 'ITEM_OPT MOUSE']
    = CAST('Optical Mouse' AS VARCHAR2))
!');

dbms_output.put_line('Delete optical mouse');
dbms_cube.build(q'!
   "PRODUCT" USING (DELETE FROM DIMENSION WHERE MEMBER='ITEM_OPT MOUSE')
!');
 
END;
/

OLAP DMLの例

次の例では、OLAP DMLを使用してキューブ作成ログにコメントを追加します。

BEGIN 
 DBMS_CUBE.BUILD(q'!
  global.units_cube USING (
   EXECUTE OLAP DML 'SHOW STATLEN(units_cube_prt_list)' PARALLEL,
   EXECUTE OLAP DML 'SHOW LIMIT(units_cube_prt_list KEEP ALL)' PARALLEL,
   EXECUTE OLAP DML 'SHOW STATLEN(time)' parallel,
   EXECUTE OLAP DML 'SHOW LIMIT(time KEEP time_levelrel ''CALENDAR_YEAR'')' parallel)!', 
  parallelism=>2, 
  add_dimensions=>false);
END;
/

次の問合せで、キューブ作成ログのコメントを表示します。

SELECT partition, slave_number, TO_CHAR(output) output
   FROM cube_build_log
   WHERE command = 'OLAP DML'
   AND status = 'COMPLETED'
   ORDER BY slave_number, time;

PARTITION    SLAVE_NUMBER OUTPUT
------------ ------------ -------------------------------------------------------
P10:CY2007              1 <OLAPDMLExpression
                            Expression="TO_CHAR(statlen(units_cube_prt_list))"
                            Value="1"/>
 
P10:CY2007              1 <OLAPDMLExpression
                            Expression="TO_CHAR(limit(units_cube_prt_list keep al
                          l))"
                            Value="P10"/>
 
P10:CY2007              1 <OLAPDMLExpression
                            Expression="TO_CHAR(statlen(time))"
                            Value="17"/>
 
P10:CY2007              1 <OLAPDMLExpression
                            Expression="TO_CHAR(limit(time keep time_levelrel &ap
                          os;CALENDAR_YEAR&apos;))"
                            Value="CALENDAR_YEAR_CY2007"/>
 
P9:CY2006               2 <OLAPDMLExpression
                            Expression="TO_CHAR(statlen(units_cube_prt_list))"
                            Value="1"/>
 
P9:CY2006               2 <OLAPDMLExpression
                            Expression="TO_CHAR(limit(units_cube_prt_list keep al
                          l))"
                            Value="P9"/>
 
P9:CY2006               2 <OLAPDMLExpression
                            Expression="TO_CHAR(statlen(time))"
                            Value="17"/>
               .
               .
               .

40.4.2 CREATE_EXPORT_OPTIONSプロシージャ

このプロシージャは、EXPORT_XMLプロシージャおよびEXPORT_XML_TO_FILEプロシージャの処理オプションについて記述する入力XML文書を作成します。

構文

DBMS_CUBE.CREATE_EXPORT_OPTIONS (
          out_options_xml        IN/OUT  CLOB,
          target_version         IN      VARCHAR2  DEFAULT NULL,
          suppress_owner         IN      BOOLEAN   DEFAULT FALSE,
          suppress_namespace     IN      BOOLEAN   DEFAULT FALSE,
          preserve_table_owners  IN      BOOLEAN   DEFAULT FALSE,
          metadata_changes       IN      CLOB      DEFAULT NULL);

パラメータ

表40-4 CREATE_EXPORT_OPTIONSプロシージャのパラメータ

パラメータ 説明

out_options_xml

EXPORT_XMLプロシージャoptions_xmlパラメータに渡すことができる、生成されたXML文書を含んでいます。

target_version

EXPORT_XMLまたはEXPORT_XML_TO_FILEによって生成されたXML文書がインポートされるOracle Databaseのバージョンを指定します。12.1、12.1.0.1.0などの2桁から5桁の数字を指定できます。このパラメータは、デフォルトでは現行のデータベース・バージョンになるため、通常は省略できます。

suppress_owner

XML要素での所有者属性およびオブジェクト名での所有者修飾子の使用を制御します。XMLから所有者を削除するにはTrueを入力し、保持するにはFalseを入力します。エクスポートしたメタデータを別のスキーマにインポートする予定の場合は、Trueを入力します。

suppress_namespace

XML要素でのネームスペース属性およびオブジェクト名でのネームスペース修飾子の使用を制御します。XMLからネームスペースを削除するにはTrueを入力し、保持する(デフォルト)にはFalseを入力します。Oracle OLAP 12cメタデータにアップグレードするときには、Trueを入力します。

ネームスペースによって、Oracle 10gで作成されたオブジェクトをOracle 12cで作成されたオブジェクトと共存させることができます。ネームスペースの設定または変更はできません。

preserve_table_owners

UNITS_HISTORY_FACTのかわりにGLOBAL.UNITS_HISTORY_FACTなど、マッピング要素で表の名前を修飾するときに所有者の使用を制御します。表の所有者を保持するにはTrueを入力し、表のマッピングで現在のスキーマをデフォルトにするにはFalseを入力します。エクスポートされたメタデータを別のスキーマにインポートする予定の場合は、宛先スキーマに表およびビューの独自のコピーがある場合を除き、このオプションをTrueに設定して元のスキーマの表およびビューからデータをロードする必要があります。

metadata_changes

エクスポートされたオブジェクトの記述を上書きする、オブジェクトの12c XML記述を含んでいます。XML文書には、変更された要素を一意に識別するために必要な属性を含むそれらの要素のすべての親XML要素が含まれている必要があります。Name属性が存在する場合はそれを使用します。詳細は、「例」を参照してください。

次の例では、エクスポート・オプションのXML文書を生成します。

DECLARE
   optionsClob  CLOB;
 
BEGIN
   dbms_lob.createtemporary(optionsClob, false, dbms_lob.CALL); 
   dbms_cube.create_export_options(out_options_xml=>optionsClob, suppress_namespace=>TRUE);
   dbms_output.put_line(optionsClob);
END;
/

DBMS_OUTPUT.PUT_LINEプロシージャによって次のXML文書が表示されます(読みやすさを考慮して書式設定されています)。

<?xml version="1.0"?>
<Export TargetVersion="12.1.0.1">
  <ExportOptions>
    <Option Name="SuppressOwner" Value="FALSE"/>
    <Option Name="SuppressNamespace" Value="TRUE"/>
    <Option Name="PreserveTableOwners" Value="FALSE"/>
  </ExportOptions>
</Export>

次の例では、CHANNELディメンションの米語での長い記述属性のマッピングに対するメタデータの変更を含むXML文書を生成します。

DECLARE
  importClob         clob;
  exportClob         clob;
  overClob           clob;
  exportOptClob      clob;
  importOptClob      clob;
 
BEGIN
  dbms_lob.createtemporary(overClob, TRUE);
  dbms_lob.open(overClob, DBMS_LOB.LOB_READWRITE);
  dbms_lob.writeappend(overClob,58, '<Metadata Version="1.3" MinimumDatabaseVersion="12.1.0.1">');
  dbms_lob.writeappend(overClob,34, '<StandardDimension Name="CHANNEL">');
  dbms_lob.writeappend(overClob,75, '<Description Type="Description" Language="AMERICAN" Value="Sales Channel"/>');
  dbms_lob.writeappend(overClob,20, '</StandardDimension>');
  dbms_lob.writeappend(overClob,11, '</Metadata>');
  dbms_lob.close(overClob); 
 
  -- Enable Oracle Database 12c Release 1 (12.1) clients to access 10g metadata
  dbms_cube.initialize_cube_upgrade;
  
  -- Create a CLOB containing the export options
  dbms_lob.createtemporary(exportOptClob, TRUE);
  dbms_cube.create_export_options(out_options_xml=>exportOptClob, suppress_namespace=>TRUE, metadata_changes=>overClob);
  
  -- Create a CLOB containing the import options
  dbms_lob.createtemporary(importOptClob, TRUE);
  dbms_cube.create_import_options(out_options_xml=>importOptClob, rename_table => 'MY_OBJECT_MAP');
   
   -- Create CLOBs for the metadata
  dbms_lob.createtemporary(importClob, TRUE);
  dbms_lob.createtemporary(exportClob, TRUE);
 
  -- Export metadata from a 10g analytic workspace to a CLOB
  dbms_cube.export_xml(object_ids=>'GLOBAL_AW', options_xml=>exportOptClob, out_xml=>exportClob); 
  
  -- Import metadata from the CLOB
  dbms_cube.import_xml(in_xml => exportClob, options_xml=>importOptClob, out_xml=>importClob);
 
  -- Load and aggregate the data
  dbms_cube.build(script=>'UNITS_CUBE, PRICE_AND_COST_CUBE');
 
END;
/
 

次に、exportClobのコンテンツを示します(読みやすさを考慮して書式設定が追加されています)。このXML文書によってChannelについての記述がSales Channelに変更されます。

<Metadata Version="1.3" MinimumDatabaseVersion="12.1.0.1">
  <StandardDimension Name="CHANNEL">
    <Description Type="Description" Language="AMERICAN" Value="Sales Channel"/>
  </StandardDimension>
</Metadata>

40.4.3 CREATE_IMPORT_OPTIONSプロシージャ

このプロシージャは、IMPORT_XMLプロシージャの処理オプションについて記述する入力XML文書を作成します。

構文

DBMS_CUBE.CREATE_IMPORT_OPTIONS (
          out_options_xml  IN/OUT  CLOB,
          validate_only    IN      BOOLEAN   DEFAULT FALSE,
          rename_table     IN      VARCHAR2  DEFAULT NULL);

パラメータ

表40-5 CREATE_IMPORT_OPTIONSプロシージャのパラメータ

パラメータ 説明

out_options_xml

IMPORT_XMLプロシージャoptions_xmlパラメータに渡すことができる、生成されたXML文書を含んでいます。

validate_only

TRUEに設定すると、IMPORT_XMLプロシージャは、入力ファイルまたはin_xmlパラメータに記述されているメタデータへの変更を、コミットせずに検証します。

rename_table

インポートしたオブジェクトの新しい名前を識別する、[schema_name.]table_name形式の表の名前。IMPORT_XMLプロシージャは、XML文書に指定された名前ではなく、この表に指定された名前を使用してオブジェクトを作成します。名前変更表の形式については、「使用上の注意」を参照してください。

使用上の注意

名前変更表の使用方法については、「DBMS_CUBE - 10gアナリティック・ワークスペースのアップグレード」を参照してください。

この例では、検証のみおよび名前変更表を指定します。インポートで使用されるインポートCLOBの例については、「IMPORT_XMLプロシージャ」を参照してください。

DECLARE
importClob  clob;
 
BEGIN
  dbms_lob.createtemporary(importClob, TRUE);
 
  dbms_cube.create_import_options(out_options_xml => importClob, rename_table => 'MY_OBJECT_MAP', validate_only => TRUE);
  
  dbms_output.put_line(importClob);
END;
/

次のXML文書が生成されます。

<?xml version="1.0"?>
<Import>
  <ImportOptions>
    <Option Name="ValidateOnly" Value="TRUE"/>
    <Option Name="RenameTable" Value="MY_OBJECT_MAP"/>
  </ImportOptions>
</Import>

40.4.4 CREATE_MVIEWファンクション

このファンクションは、リレーショナル・マテリアライズド・ビューの定義から、キューブ・マテリアライズド・ビューを作成します。

構文

DBMS_CUBE.CREATE_MVIEW (
          mvowner        IN  VARCHAR2,
          mvname         IN  VARCHAR2,
          sam_parameters IN  CLOB  DEFAULT NULL)
     RETURN VARCHAR2;

パラメータ

表40-6 CREATE_MVIEWファンクションのパラメータ

パラメータ 説明

mvowner

リレーショナル・マテリアライズド・ビューの所有者。

mvname

リレーショナル・マテリアライズド・ビューの名前。制約については、「リレーショナル・マテリアライズド・ビューの要件」を参照してください。

表内の多くのリレーショナル・マテリアライズド・ビューを単一のキューブ・マテリアライズド・ビューに置き換えることができます。キューブ・マテリアライズド・ビューで表示されるディメンション階層のレベルが最下位のマテリアライズド・ビューを選択してください。

sam_parameters

'parameter1=value1, parameter2=value2,...'形式のパラメータ。「SQL集計管理パラメータ」を参照してください。

SQL集計管理パラメータ

CREATE_MVIEWおよびDERIVE_FROM_MVIEWファンクションでは、表40-7に示すSQL集計管理(SAM)パラメータが使用されます。一部のパラメータでは、高度な分析を行うキューブの開発がサポートされています。他のパラメータでは、Javaアプリケーションの開発がサポートされています。デフォルト設定は、リレーショナル・マテリアライズド・ビューにかわって置き換えられたキューブ・マテリアライズド・ビューに適した設定になっています。

表40-7 SQL集計管理パラメータ

パラメータ 説明

ADDTOPS

キューブ内のすべてのディメンション階層に、再上位レベルおよびレベル・メンバーを追加します。関連付けられたリレーショナル・ディメンションに階層がない場合は、ディメンション階層が作成されます。

TRUE: レベル・メンバーAll_dimensionでレベル名ALL_dimensionを作成します。(デフォルト)

FALSE: リレーショナル・ディメンションで識別される階層およびレベルのみを作成します。

ADDUNIQUEKEYPREFIX

ディメンション・キーの作成を制御します。

TRUE: レベル名とリレーショナル・ディメンション・キーを連結して、キューブ・ディメンション・キーを作成します。これによって、すべてのレベル間でディメンション・キー(CITY_NEW_YORKSTATE_NEW_YORKなど)が一意となります。(デフォルト)

FALSE: リレーショナル・ディメンション・キーをキューブ・ディメンションとして使用します。

ATRMAPTYPE

属性を階層レベル、ディメンション・レベルまたはその両方のいずれにマップするかを指定します。

HIER_LEVEL: 属性を特定のディメンション階層のレベルにマップします。(デフォルト)

DIM_LEVEL: 階層に関係なく、属性をディメンションのレベルにマップします。

BOTH: 属性をディメンション・レベルおよび階層レベルの両方にマップします。

AUTO: スター・スキーマの場合はディメンションのレベルに、スノーフレーク・スキーマの場合は特定のディメンション階層のレベルに属性をマップします。

AWNAME

キューブを所有するアナリティック・ワークスペースの名前を指定します。1から30バイトの長さの単純なデータベース・オブジェクト名を選択します。デフォルト名はfact_tablename_AWnです。

BUILD

キューブ・マテリアライズド・ビューの作成後、すぐにデータ・リフレッシュを実行するかどうかを指定します。

IMMEDIATE: すぐにリフレッシュします。

DEFERRED: データ・リフレッシュを実行しません。(デフォルト)

注意: このパラメータはCREATE_MVIEWファンクションでのみ使用されます。

CUBEMVOPTION

キューブ・マテリアライズド・ビューの検証および作成を制御します。ファンクションは、この設定に関係なく、キューブとそれに関連するキューブ・ディメンションを含むアナリティック・ワークスペースを作成します。

COMPLETE_REFRESH: 完全リフレッシュ・キューブ・マテリアライズド・ビューを作成します(完全更新)。

FAST_REFRESH: 高速リフレッシュ・マテリアライズド・ビューを作成します(増分更新)。

REWRITE_READY: リライト・キューブ・マテリアライズド・ビューの検証チェックは実行しますが、作成は実行しません。

REWRITE: リライト・キューブ・マテリアライズド・ビューを作成します。

REWRITE_WITH_ATTRIBUTES: ディメンション属性を持つ列を含むリライト・キューブ・マテリアライズド・ビューを作成し、問合せの応答時間を短縮します。(デフォルト)

注意: 次の設定では、キューブ・マテリアライズド・ビューが作成されません。キューブ・マテリアライズド・ビューがないアナリティック・ワークスペースを削除するには、Analytic Workspace Managerを使用してください。DROP_MVIEWプロシージャを使用してアナリティック・ワークスペースを削除できるのは、アナリティック・ワークスペースでキューブ・マテリアライズド・ビューがサポートされている場合のみです。

NONE: キューブ・マテリアライズド・ビューを作成しません。

COMPLETE_REFRESH_READY: 完全リフレッシュ・キューブ・マテリアライズド・ビューの検証チェックは実行しますが、作成は実行しません。

FAST_REFRESH_READY: 高速リフレッシュの検証チェックは実行しますが、キューブ・マテリアライズド・ビューは作成しません。

CUBENAME

リレーショナル・マテリアライズド・ビューから導出されるキューブの名前を指定します。1から30バイトの長さの単純なデータベース・オブジェクト名を選択します。デフォルト名はfact_tablename_Cnです。

DIMJAVABINDVARS

JavaプログラムによるXML文書へのアクセスをサポートします。

TRUE: ディメンション名にJavaのバインド変数表記を使用するXML文書を生成します。XMLの検証は実行しません。このテンプレートを使用してキューブを作成するために、IMPORT_XMLプロシージャを使用することはできません。

FALSE: Javaのバインド変数をサポートしないXMLテンプレートを生成します。(デフォルト)

DISABLEQRW

ソース・リレーショナル・マテリアライズド・ビューのクエリー・リライトの無効化を制御します。

TRUE: ALTER MATERIALIZED VIEW mview_name DISABLE QUERY REWRITEコマンドを発行します。

FALSE: アクションは実行されません。

注意: このパラメータはBUILD=IMMEDIATEが指定されたCREATE_MVIEWファンクションでのみ使用されます。

EXPORTXML

dir/filenameとして指定したファイルに、ディメンション・オブジェクトを定義するXMLをエクスポートします。ディレクトリ名およびファイル名では、大/小文字が区別されます。

dir: データベース・ディレクトリの名前。

filename: ファイルの名前。通常、拡張子はXMLファイル名拡張子です。

FILTERPARTITIONANCESTORLEVELS

パーティション化されたキューブのパーティション・レベルより上位の集計値の生成を制御します。

TRUE: パーティション・レベルより上位のレベルをキューブから削除します。パーティション・レベルより上位のサマリー値に対する要求は、SQLによって解決されます。

FALSE: すべてのレベルがキューブに保持されます。サマリー値に対する要求は、OLAPによって解決されます。(デフォルト)

LOGDEST

ログ・メッセージを送信して格納します。デフォルトでは、メッセージは使用できません。

SERVEROUT: メッセージをサーバー出力(通常は画面)に送信します。サーバー出力は、SQL*Plus、SQL Developerなどでの対話形式の作業に適しています。

TRACEFILE: メッセージをセッション・トレース・ファイルに送信します。

PARTITIONOPTION

キューブのパーティション化を制御します。

NONE: パーティション化しません。

DEFAULT: スパーシティ・アドバイザで、パーティション化が必要かどうか、およびキューブをどのようにパーティション化するかを決定できます。(デフォルト)

FORCE: スパーシティ・アドバイザで推奨されない場合でも、キューブをパーティション化します。スパーシティ・アドバイザはパーティション化に使用するのに最適なディメンション、階層およびレベルを指定します。

dimension.hierarchy.level: 指定されたディメンション、階層およびレベルを使用して、キューブをパーティション化します。

POPULATELINEAGE

キューブ・マテリアライズド・ビュー内の属性の外観を制御します。

TRUE: キューブ・マテリアライズド・ビュー内にすべてのディメンション属性を含めます。(デフォルト)

FALSE: キューブ・マテリアライズド・ビューからすべてのディメンション属性を省略します。

PRECOMPUTE

集計および格納されるデータの割合を指定します。残りの値は、セッション中に問合せからの要求に応じて計算されます。

precompute_percentage[:precompute_top_percentage]

パーティション・キューブの最上位パーティションの割合を指定します。デフォルト値は35:0で、この値では、最下位パーティションの35%および最上位パーティションの0%を事前計算するように指定されます。キューブがパーティション化されていない場合、2番目の数値は無視されます。

REMAPCOMPOSITEKEYS

複数列キーがキューブで表示される方法を制御します。

TRUE: 一意のキー属性を作成し、その値は列値の間のアンダースコアで連結された文字列式です。たとえば、値BOSTON_MA_USAは、CITYSTATEおよびCOUNTRY列で構成される複数列キーから生成された式である可能性があります。また、リレーショナル・キーを格納するために個別の列それぞれに属性が作成されます。(デフォルト)

FALSE: 各列に一意のキー属性を作成します。

RENDERINGMODE

リレーショナル・マテリアライズド・ビューとキューブ・マテリアライズド・ビューの間の忠実度の損失を、警告メッセージとするか例外とするかを制御します。「リレーショナル・マテリアライズド・ビューの要件」を参照してください。

LOOSE: 損失はCREATE_MVIEWファンクションおよびDERIVE_FROM_MVIEWファンクションによって生成されるオプションのログに書き込まれます。例外は発生しません。(デフォルト)

STRICT: 忠実度のすべての損失で例外が発生するため、XMLテンプレートは作成されません。

SEEFILTERS

リレーショナル・マテリアライズド・ビューの定義問合せのWHERE句の条件を保持するか、無視するかを制御します。

TRUE: XMLテンプレート内の有効な条件を表示します。(デフォルト)

FALSE: すべての条件を無視します。

UNIQUENAMES

最上位ディメンション・オブジェクトの名前を一意にするかどうかを制御します。ディメンション・オブジェクトはリレーショナル・オブジェクトとは異なるネームスペースを持つため、ネームスペース間で競合が発生する可能性があります。

TRUE: キューブで表示されるときにすべてのリレーション名を変更します(デフォルト)。

FALSE: 名前の競合が検出されないかぎり、キューブにリレーション名を複製します。この場合は、一意名が作成されます。

UNKNOWNKEYASDIM

リレーショナル・マテリアライズド・ビューの定義問合せのGROUP BY句内にレベルまたは階層がない単純列の処理を制御します。

TRUE: リレーショナル・ディメンションのない単純列を、レベルまたは階層のないキューブ・ディメンションとして表示します。

FALSE: 列のリレーショナル・ディメンションが見つからない場合に例外を発生させます。(デフォルト)

VALIDATEXML

生成されたXML文書を検証するかどうかを制御します。

TRUE: VALIDATE_XMLプロシージャを使用してテンプレートを検証します。(デフォルト)

FALSE: 検証を実行しません。

戻り値

このファンクションで作成されたキューブ・マテリアライズド・ビューの名前。

使用上の注意

「SQL集計管理の使用方法」を参照してください。

SQL集計管理サブプログラムのすべての例で、サンプルの販売履歴スキーマが使用されます。このスキーマはCAL_MONTH_SALES_MVおよびFWEEK_PSCAT_SALES_MVの2つのリレーショナル・マテリアライズド・ビューとともにOracle Databaseにインストールされます。

次のスクリプトは、CAL_MONTH_SALES_MVをリレーショナル・マテリアライズド・ビューとして使用してキューブ・マテリアライズド・ビューを作成します。すべてデフォルト・オプションを使用しています。

SET serverout ON format wrapped
 
DECLARE
     salesaw  varchar2(30);

BEGIN
     salesaw := dbms_cube.create_mview('SH', 'CAL_MONTH_SALES_MV');
END;
/

次の例では、FWEEK_PSCAT_SALES_MVからキューブ・マテリアライズド・ビューを作成するために、いくつかのパラメータを設定しています。これらのパラメータによってキューブ・マテリアライズド・ビューを変更する方法は、次のとおりです。

  • ADDTOPS: 単一の値で構成される最上位レベルを階層に追加します。販売履歴のすべてのディメンションには、すでに最上位レベルがあります。

  • PRECOMPUTE: マテリアライズされた集計の割合を35:0から40:10に変更します。

  • EXPORTXML: XML文書のテキスト・ファイルを作成します。

  • BUILD: データ・リフレッシュを実行します。

DECLARE
     salescubemv   varchar2(30);
     sam_param     clob := 'ADDTOPS=FALSE,
                            PRECOMPUTE=40:10,
                            EXPORTXML=WORK_DIR/sales.xml,
                            BUILD=IMMEDIATE';
  
BEGIN
     salescubemv := dbms_cube.create_mview('SH', 'FWEEK_PSCAT_SALES_MV', 
                    sam_param);
END;
/

40.4.5 DERIVE_FROM_MVIEWファンクション

このファンクションは、既存のリレーショナル・マテリアライズド・ビューから導出した情報を使用して、マテリアライズド・ビューの機能を持つキューブを定義するXMLテンプレートを生成します。

構文

DBMS_CUBE.DERIVE_FROM_MVIEW (
          mvowner        IN  VARCHAR2,
          mvname         IN  VARCHAR2,
          sam_parameters IN  CLOB  DEFAULT NULL)
     RETURN CLOB;

パラメータ

表40-8 DERIVE_FROM_MVIEWファンクションのパラメータ

パラメータ 説明

mvowner

リレーショナル・マテリアライズド・ビューの所有者。

mvname

リレーショナル・マテリアライズド・ビューの名前。制約については、「リレーショナル・マテリアライズド・ビューの要件」を参照してください。

表内の多くのリレーショナル・マテリアライズド・ビューを単一のキューブ・マテリアライズド・ビューに置き換えることができます。キューブ・マテリアライズド・ビューで表示されるディメンション階層のレベルが最下位のマテリアライズド・ビューを選択してください。

sam_parameters

'parameter1=value1, parameter2=value2,...'形式のパラメータのオプションのリスト。「SQL集計管理パラメータ」を参照してください。

戻り値

マテリアライズド・ビューとして有効になっているキューブを含むアナリティック・ワークスペースを定義するXMLテンプレート。

使用上の注意

XMLテンプレートからキューブ・マテリアライズド・ビューを作成する場合は、IMPORT_XMLプロシージャを使用してください。その後、REFRESH_MVIEWプロシージャを使用して、キューブ・マテリアライズド・ビューのデータをリフレッシュします。

「SQL集計管理の使用方法」を参照してください。

次の例では、SHスキーマ内のCAL_MONTH_SALES_MVリレーショナル・マテリアライズド・ビューからsales_cube.xmlという名前のXMLテンプレートを生成しています。

DECLARE
     salescubexml  clob := null;
     sam_param     clob := 'exportXML=WORK_DIR/sales_cube.xml';
     
BEGIN
     salescubexml := dbms_cube.derive_from_mview('SH', 'CAL_MONTH_SALES_MV',
     sam_param);
END;
/

40.4.6 DROP_MVIEWプロシージャ

このプロシージャは、データベースからキューブ・マテリアライズド・ビューおよびすべての関連するオブジェクトを削除します。これらのオブジェクトには、ディメンション・マテリアライズド・ビュー、キューブ、キューブ・ディメンション、レベル、階層およびアナリティック・ワークスペースが含まれます。

構文

DBMS_CUBE.DROP_MVIEW (
          mvowner        IN  VARCHAR2,
          mvname         IN  VARCHAR2,
          sam_parameters IN  CLOB  DEFAULT NULL);

パラメータ

表40-9 DROP_MVIEWプロシージャのパラメータ

パラメータ 説明

mvowner

キューブ・マテリアライズド・ビューの所有者。

mvname

キューブ・マテリアライズド・ビューの名前。

sam_parameters

EXPORTXML: dir/filenameとして指定したファイルに、ディメンション・オブジェクトを削除するXMLをエクスポートします。ディレクトリ名およびファイル名では、大/小文字が区別されます。

dir: データベース・ディレクトリの名前。

filename: ファイルの名前。通常、拡張子はXMLファイル名拡張子です。

使用上の注意

このプロシージャは、CREATE_MVIEWおよびDERIVE_FROM_MVIEWファンクションを使用して作成したキューブ・マテリアライズド・ビューを削除する場合に使用してください。キューブまたはディメンションを変更した場合、DROP_MVIEWではキューブ・マテリアライズド・ビューを削除できない可能性があります。

CREATE_MVIEWおよびDERIVE_FROM_MVIEWファンクションで使用される一部のCUBEMVOPTIONパラメータは、マテリアライズド・ビューを作成しません。アナリティック・ワークスペース、キューブおよびキューブ・ディメンションを削除するには、Analytic Workspace Managerを使用してください。

EXPORTXMLパラメータを使用すると、キューブ・マテリアライズド・ビューを再作成した後に、XML文書を使用してそのキューブ・マテリアライズド・ビューを削除できます。IMPORT_XMLプロシージャを使用してください。

「SQL集計管理の使用方法」を参照してください。

現行のスキーマに4つのマテリアライズド・ビューがあります。CB$CAL_MONTH_SALESSALES表のキューブ・マテリアライズド・ビューです。CB$TIMES_DIM_D1_CAL_ROLLUPTIMESディメンション表のTIMES_DIMディメンションのキューブ・ディメンション・マテリアライズド・ビューです。他はリレーショナル・マテリアライズド・ビューです。

SELECT mview_name FROM user_mviews;
 
MVIEW_NAME
------------------------------
CB$CAL_MONTH_SALES
CB$TIMES_DIM_D1_CAL_ROLLUP
CAL_MONTH_SALES_MV
FWEEK_PSCAT_SALES_MV
 

次のコマンドは、CB$CAL_MONTH_SALESおよびCB$TIMES_DIM_D1_CAL_ROLLUPの両方を削除します。

EXECUTE dbms_cube.drop_mview('SH', 'CB$CAL_MONTH_SALES');

Dropped cube organized materialized view "SH"."CAL_MONTH_SALES" 
including container analytic workspace "SH"."CAL_MONTH_SALES_AW" 
at 20130213 16:31:40.056.

データ・ディクショナリに対する次の問合せで、マテリアライズド・ビューが削除されたことを確認します。

SELECT mview_name FROM user_mviews;
 
MVIEW_NAME
------------------------------
CAL_MONTH_SALES_MV
FWEEK_PSCAT_SALES_MV

40.4.7 EXPORT_XMLプロシージャ

このプロシージャは、OLAPメタデータをCLOBに書き込みます。

構文

DBMS_CUBE.EXPORT_XML
       (object_ids            IN      VARCHAR2,
        out_xml               IN/OUT  CLOB;

DBMS_CUBE.EXPORT_XML
       (object_ids            IN      VARCHAR2,
        options_xml           IN      CLOB,
        out_xml               IN/OUT  CLOB;

DBMS_CUBE.EXPORT_XML
       (object_ids            IN      VARCHAR2,
        options_dirname       IN      VARCHAR2,
        options_filename      IN      VARCHAR2,
        out_xml               IN/OUT  CLOB;

パラメータ

表40-10 EXPORT_XMLプロシージャのパラメータ

パラメータ 説明

object_ids

次のいずれかの識別子です。

  • GLOBALなど、スキーマの名前。

  • GLOBAL.GLOBAL.AWなど、owner.aw_name.AWという形式のアナリティック・ワークスペースの完全修飾名。

  • キューブ

  • ディメンション

  • 指定された作成プロセス

  • メジャー・フォルダ

名前をカンマで区切って複数のオブジェクトを指定できます。

注意: 個々のオブジェクトをエクスポートする場合は、それを再作成するために必要なすべてのオブジェクトをエクスポートしてください。たとえば、キューブをエクスポートする場合は、キューブのディメンションもエクスポートする必要があります。

options_dirname

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

options_filename

エクスポート・オプションのXML文書を含むファイル。

options_xml

エクスポート・オプションのXML文書を含むCLOB変数。この文書を生成するには、CREATE_EXPORT_OPTIONSプロシージャを使用します。

out_xml

object_idsにリストされるオブジェクトのOLAPメタデータのXML文書を格納するCLOB変数。

エクスポート・オプション

エクスポート・オプションのデフォルト設定は多くの場合適切であるため、options_xmlまたはoptions_dirnameおよびoptions_filenameパラメータを省略できます。ただし、Oracle OLAP 10gメタデータをOLAP 12cにアップグレードするときは、デフォルト設定を変更するXML文書を指定する必要があります。次の例では、すべてのパラメータをFalseからTrueに変更し、スキーマに対して適切に設定します。

<?xml version="1.0"?>
<Export>
  <ExportOptions>
    <Option Name="SuppressNamespace" Value="True"/> 
    <Option Name="SuppressOwner" Value="True"/> 
    <Option Name="PreserveTableOwners" Value="True"/> 
  </ExportOptions>
</Export> 

このXML文書は、手動で作成するか、またはCREATE_EXPORT_OPTIONSプロシージャを使用して作成できます。

同じスキーマへのアップグレードでのEXPORT_XMLの使用例については、「DBMS_CUBE - 10gアナリティック・ワークスペースのアップグレード」を参照してください。

次のPL/SQLスクリプトは、GLOBAL12というOLAP 12cアナリティック・ワークスペースをGLOBAL_AWスキーマからGLOBALスキーマにコピーします。アップグレードは実行されません。

別のスキーマにアップグレードするには、例を次のように変更します。

  • INITIALIZE_CUBE_UPGRADEプロシージャをコールします。

  • パラメータ設定SUPPRESS_NAMESPACE=>TRUEを追加してCREATE_EXPORT_OPTIONSプロシージャをコールします。

PL/SQLクライアントは、GLOBALとしてデータベースに接続する必要があります。GLOBALユーザーは、GLOBAL_AW.AW$GLOBALおよびすべてのリレーショナル・データ・ソースでSELECT権限を持つ必要があります。

BEGIN
  -- Create a CLOB for the export options
  dbms_lob.createtemporary(optionsClob, TRUE);
  dbms_cube.create_export_options(out_options_xml=>optionsClob, suppress_owner=>TRUE, preserve_table_owners=>TRUE);
 
  -- Create a CLOB for the XML template
  dbms_lob.createtemporary(exportClob, TRUE);
  
  -- Export metadata from an analytic workspace to a CLOB
  dbms_cube.export_xml(object_ids=>'GLOBAL_AW.GLOBAL12.AW', options_xml=>optionsClob, out_xml=>exportClob); 
 
  -- Import metadata from the CLOB
  dbms_cube.import_xml(in_xml=>exportClob);
 
  -- Load and aggregate the data
  dbms_cube.build(script=>'GLOBAL.UNITS_CUBE, GLOBAL.PRICE_AND_COST_CUBE');
 
END;
/

40.4.8 EXPORT_XML_TO_FILEプロシージャ

このプロシージャは、OLAPメタデータをファイルにエクスポートします。このファイルは、IMPORT_XMLプロシージャを使用して、新しいまたは既存のアナリティック・ワークスペースにインポートできます。このようにして、別のスキーマまたはデータベースにアナリティック・ワークスペースのコピーを作成できます。

このプロシージャは、Oracle OLAP 10gアナリティック・ワークスペースに含まれるOLAP標準形式メタデータをOLAP 12c形式にアップグレードするプロセスの一部としても使用できます。

構文

DBMS_CUBE.EXPORT_XML_TO_FILE
       (object_ids            IN      VARCHAR2,
        output_dirname        IN      VARCHAR2,
        output_filename       IN      VARCHAR2;

DBMS_CUBE.EXPORT_XML_TO_FILE
       (object_ids            IN      VARCHAR2,
        options_dirname       IN      VARCHAR2,
        options_filename      IN      VARCHAR2,
        output_dirname        IN      VARCHAR2,
        output_filename       IN      VARCHAR2;

パラメータ

表40-11 EXPORT_XML_TO_FILEプロシージャのパラメータ

パラメータ 説明

object_ids

次のいずれかの識別子です。

  • GLOBALなど、スキーマの名前。

  • GLOBAL.GLOBAL.AWなど、owner.aw_name.AWという形式のアナリティック・ワークスペースの完全修飾名。

  • キューブ

  • ディメンション

  • 指定された作成プロセス

  • メジャー・フォルダ

名前をカンマで区切って複数のオブジェクトを指定できます。

注意: 個々のオブジェクトをエクスポートする場合は、それを再作成するために必要なすべてのオブジェクトをエクスポートしてください。たとえば、キューブをエクスポートする場合は、キューブのディメンションもエクスポートする必要があります。

options_dirname

options_filenameを含むデータベース・ディレクトリの名前(大/小文字区別)。「エクスポート・オプション」を参照してください。

options_filename

エクスポート・オプションのXML文書を含むファイルの名前。エクスポート・オプションを参照してください。

output_dirname

output_filenameが作成されるデータベース・ディレクトリの名前(大/小文字区別)。

output_filename

このプロシージャによって作成されるテンプレート・ファイルの名前。

エクスポート・オプション

エクスポート・オプションのデフォルト設定はほとんどの場合に適切であり、options_dirnameおよびoptions_filenameパラメータを省略できます。ただし、Oracle OLAP 10gメタデータをOLAP 12cにアップグレードするときは、デフォルト設定を変更するXML文書を次のように指定する必要があります。

<?xml version="2.0"?>
<Export>
  <ExportOptions>
    <Option Name="SuppressNamespace" Value="True"/> 
    <Option Name="SuppressOwner" Value="True"/> 
    <Option Name="PreserveTableOwners" Value="True"/> 
  </ExportOptions>
</Export> 

このXML文書は、手動で作成するか、またはCREATE_EXPORT_OPTIONSプロシージャを使用して作成できます。

次の例は、デフォルトのエクスポート設定を使用して、global.xmlという名前のXMLファイルをOLAP 12c形式で生成します。メタデータは、すべてのアナリティック・ワークスペースおよびGLOBAL_AWのCWMメタデータから導出されます。出力ファイルは、WORK_DIRデータベース・ディレクトリで生成されます。

execute dbms_cube.export_xml_to_file('GLOBAL_AW', 'WORK_DIR', 'global.xml');

次の例でも、options.xmlに設定されたエクスポート・オプションを使用して、global.xmlという名前のXMLファイルをOLAP 12c形式で生成します。メタデータは、GLOBAL_AWスキーマのGLOBALアナリティック・ワークスペースから導出されます。オプション・ファイルと出力ファイルは、どちらもWORK_DIRデータベース・ディレクトリにあります。

execute dbms_cube.export_xml_to_file('GLOBAL_AW.GLOBAL.AW', 'WORK_DIR', 'options.xml', 'WORK_DIR', 'global.xml');

40.4.9 IMPORT_XMLプロシージャ

このプロシージャは、XMLテンプレートを使用してアナリティック・ワークスペースを作成、変更または削除します。

構文

DBMS_CUBE.IMPORT_XML
       (dirname               IN      VARCHAR2,
        filename              IN      VARCHAR2 );

DBMS_CUBE.IMPORT_XML
       (dirname               IN      VARCHAR2,
        filename              IN      VARCHAR2,
        out_xml               IN/OUT  CLOB );

DBMS_CUBE.IMPORT_XML
       (input_dirname         IN      VARCHAR2,
        input_filename        IN      VARCHAR2 
        options_dirname       IN      VARCHAR2,
        options_filename      IN      VARCHAR2,
        out_xml               IN/OUT  CLOB );

DBMS_CUBE.IMPORT_XML
       (in_xml                IN      CLOB );

DBMS_CUBE.IMPORT_XML
       (in_xml                IN      CLOB,
        out_xml               IN/OUT  CLOB );

DBMS_CUBE.IMPORT_XML

       (in_xml                IN      CLOB,
        options_xml           IN      CLOB,
        out_xml               IN/OUT  CLOB );

パラメータ

表40-12 IMPORT_XMLプロシージャのパラメータ

パラメータ 説明

dirname

アナリティック・ワークスペースについて記述しているXML文書を含むデータベース・ディレクトリの名前(大/小文字区別)。

filename

アナリティック・ワークスペースについて記述しているXML文書を含むファイル。

in_xml

アナリティック・ワークスペースについて記述しているXML文書を含むCLOB。

input_dirname

アナリティック・ワークスペースについて記述しているXML文書を含むデータベース・ディレクトリの名前(大/小文字区別)。

input_filename

アナリティック・ワークスペースについて記述しているXML文書を含むファイル。

options_dirname

インポート・オプションのファイルを含むデータベース・ディレクトリの名前(大/小文字区別)。

options_filename

インポート・オプションのファイル。

options_xml

インポート・オプションについて記述しているXML文書。この文書を生成するには、CREATE_IMPORT_OPTIONSプロシージャを使用します。

out_xml

アナリティック・ワークスペースについて記述しているXML文書、またはエラーについて記述しているXML文書(検証専用)。DBMS_CUBEによってインポート済XMLに行われた変更(デフォルト値の設定、XMLへの小規模な修正など)を含む場合があります。

使用上の注意

XMLで、アナリティック・ワークスペース全体または1つ以上のキューブまたはディメンションの定義、変更または削除を行うことができます。キューブまたはディメンションのみを定義する場合は、既存のアナリティック・ワークスペース内で行う必要があります。

EXPORTXMLパラメータを指定したDROP_MVIEWプロシージャで生成されたXML文書を使用して、IMPORT_XMLによってアナリティック・ワークスペースを削除することもできます。

「DBMS_CUBE - 10gアナリティック・ワークスペースのアップグレード」を参照してください。

この例では、データベース・ディレクトリXML_DIRにあるGLOBAL.XMLという名前のファイルから、XMLテンプレートをロードします。

EXECUTE dbms_cube.import_xml('XML_DIR', 'GLOBAL.XML');

次の例では、OLAP 10gテンプレートをエクスポートし、12cにアップグレードする前にIMPORT_XMLを使用してそれを検証します。

DECLARE
 
  exportOptClob clob;
  importOptClob clob;
  importClob    clob;
  exportClob    clob;
  
BEGIN
 
  -- Create a CLOB for the export options
  dbms_lob.createtemporary(exportOptClob, TRUE);
  dbms_cube.create_export_options(out_options_xml=>exportOptClob, suppress_namespace=>TRUE, preserve_table_owners=>TRUE);
 
  -- Create a CLOB for the XML template
  dbms_lob.createtemporary(exportClob, TRUE);
 
  -- Create a CLOB for import options
  dbms_lob.createtemporary(importOptClob, TRUE);
  dbms_cube.create_import_options(out_options_xml=>importOptClob, validate_only=>TRUE);
   
  -- Create a CLOB for the change log
  dbms_lob.createtemporary(importClob, TRUE);
  
  -- Enable Oracle Database 12c Release 1 (12.1) clients to access 10g metadata
  dbms_cube.initialize_cube_upgrade;
 
  -- Export metadata from an analytic workspace to a CLOB
  dbms_cube.export_xml(object_ids=>'GLOBAL_AW', options_xml=>exportOptClob, out_xml=>exportClob); 
 
  /* Import metadata from the CLOB. No objects are committed to the database
     because the validate_only parameter of CREATE_IMPORT_OPTIONS is set to
     TRUE.
  */
 
  dbms_cube.import_xml(in_xml=>exportClob, options_xml=>importOptClob, out_xml=>importClob);
 
   -- Output the metadata changes
  dbms_output.put_line('This is the validation log:');
  dbms_output.put_line(importClob);
  
END;
/

importClobのコンテンツにXMLが有効であることが表示されます。そうでない場合、<RootCommitResult>要素にエラー・メッセージが表示されます。

This is the validation log:
<?xml version="1.0" encoding="UTF-16"?>
<RootCommitResult>
 
</RootCommitResult>

10gから12cのメタデータにアップグレードするコンテキストでのIMPORT_XMLの例については、「DBMS_CUBE - 10gアナリティック・ワークスペースのアップグレード」の「カスタム・アップグレード」の項を参照してください。

40.4.10 INITIALIZE_CUBE_UPGRADEプロシージャ

このプロシージャは、Oracle OLAP 10gで作成されたアナリティック・ワークスペースをOracle OLAP 12cクライアントで使用できるように処理します。現行のスキーマ内のすべてのアナリティック・ワークスペースを処理します。10gアナリティック・ワークスペースが存在する各スキーマに対してこのプロシージャを1回実行します。

この処理手順を実行しない場合、12cクライアントは、同じ名前のディメンションまたはキューブのサブオブジェクトが存在する10gアナリティック・ワークスペースを含むデータベースには接続できません。また、一部のDBMS_CUBEプロシージャおよびファンクション(EXPORT_XMLEXPORT_XML_TO_FILEなど)は10gメタデータに対しては機能しません。

処理後、OLAP 12cクライアントは、競合するサブオブジェクト用にINITIALIZE_CUBE_UPGRADEによって提供された代替名を使用して接続します。OLAP 10gクライアントは、継続して元の名前を使用します。

INITIALIZE_CUBE_UPGRADEは、OLAP 10gオブジェクトをOLAP 12c形式にアップグレードしません。

「DBMS_CUBE - 10gアナリティック・ワークスペースのアップグレード」を参照してください。

構文

DBMS_CUBE.INITIALIZE_CUBE_UPGRADE;

使用上の注意

このプロシージャは、CUBE_UPGRADE_INFOという名前の表を作成し、データを移入します。その表がすでに存在している場合は切り捨てられ、切り捨てられた表にデータが再移入されます。

10gネームスペースでは同じディメンションまたはキューブ内に同じ名前のサブオブジェクトが存在できましたが、12cネームスペースではできません。INITIALIZE_CUBE_UPGRADEが、レベル、階層およびディメンション属性などのサブオブジェクトで、名前の競合を検出すると、CUBE_UPGRADE_INFOに行を作成して、個々に新しい一意の名前を付けます。行は、名前の変更が必要ないオブジェクトにも作成される場合があり、これらの行はCONFLICT列の0またはNULL値で区別されます。ディメンションやキューブなど最上位のオブジェクトはリストされません。

OLAP 12cクライアントでOLAP 10gオブジェクトの名前をカスタマイズする場合は、SQL INSERTおよびUPDATEを使用して表を編集できます。

UPGRADE_AWEXPORT_XMLおよびEXPORT_XML_TO_FILEプロシージャは、元の名前ではなく、表のNEW_NAME列で指定された名前を使用して、CWMまたはOLAP標準形式(AWXML)アナリティック・ワークスペースでオブジェクトを特定します。

次の表に、CUBE_UPGRADE_INFOの列を示します。

データ・タイプ NULL 説明

OWNER

VARCHAR2

NOT NULL

アナリティック・ワークスペースの所有者。

AW

VARCHAR2

NOT NULL

アナリティック・ワークスペースの名前。

AWXML_ID

VARCHAR2

NOT NULL

simple_name.[subtype_name].object_typeの形式で指定した、変更が必要なオブジェクトの完全論理名。たとえば、TIME.DIMENSIONおよびPRODUCT.COLOR.ATTRIBUTEとなります。

NEW_NAME

VARCHAR2

NOT NULL

アップグレード後にオブジェクトがOracle 12cで持つ名前。

OBJECT_CLASS

VARCHAR2

--

計算済のメジャーではDerivedMeasure、その他すべてのオブジェクト・タイプでは空。

CONFLICT

NUMBER

--

CUBE_UPGRADE_INFOに行が追加された理由を示します。

  • 0: オブジェクトには名前の競合はありませんが、別の理由で表に表示されています。

  • 1: 2つのオブジェクトが同じ名前を持ち、OLAP 12cネームスペースで競合が発生します。オブジェクト・タイプ(レベルや階層など)が名前に追加されます。

次のコマンドは、CUBE_UPGRADE_INFO表を作成し、データを移入します。

EXECUTE dbms_cube.initialize_cube_upgrade;

この表は、OLAP 10gアナリティック・ワークスペースにMARKET_SEGMENTという名前の階層とレベルがあることを示しており、この名前は変更されます。表には計算済のメジャーの行もありますが、これらのオブジェクトは名前を変更する必要がなく、CONFLICTの値は0です。

SELECT awxml_id, new_name, conflict FROM cube_upgrade_info;

AWXML_ID                                 NEW_NAME                    CONFLICT
---------------------------------------- ------------------------- ----------
CUSTOMER.MARKET_SEGMENT.HIERARCHY        MARKET_SEGMENT_HIERARCHY           1
CUSTOMER.MARKET_SEGMENT.LEVEL            MARKET_SEGMENT_LEVEL               1
UNITS_CUBE.EXTENDED_COST.MEASURE         EXTENDED_COST                      0
UNITS_CUBE.EXTENDED_MARGIN.MEASURE       EXTENDED_MARGIN                    0
UNITS_CUBE.CHG_SALES_PP.MEASURE          CHG_SALES_PP                       0
UNITS_CUBE.CHG_SALES_PY.MEASURE          CHG_SALES_PY                       0
UNITS_CUBE.PCTCHG_SALES_PP.MEASURE       PCTCHG_SALES_PP                    0
UNITS_CUBE.PCTCHG_SALES_PY.MEASURE       PCTCHG_SALES_PY                    0
UNITS_CUBE.PRODUCT_SHARE.MEASURE         PRODUCT_SHARE                      0
UNITS_CUBE.CHANNEL_SHARE.MEASURE         CHANNEL_SHARE                      0
UNITS_CUBE.MARKET_SHARE.MEASURE          MARKET_SHARE                       0
UNITS_CUBE.CHG_EXTMRGN_PP.MEASURE        CHG_EXTMRGN_PP                     0
UNITS_CUBE.CHG_EXTMRGN_PY.MEASURE        CHG_EXTMRGN_PY                     0
UNITS_CUBE.PCTCHG_EXTMRGN_PP.MEASURE     PCTCHG_EXTMRGN_PP                  0
UNITS_CUBE.PCTCHG_EXTMRGN_PY.MEASURE     PCTCHG_EXTMRGN_PY                  0
UNITS_CUBE.CHG_UNITS_PP.MEASURE          CHG_UNITS_PP                       0
UNITS_CUBE.EXTMRGN_PER_UNIT.MEASURE      EXTMRGN_PER_UNIT                   0
UNITS_CUBE.SALES_YTD.MEASURE             SALES_YTD                          0
UNITS_CUBE.SALES_YTD_PY.MEASURE          SALES_YTD_PY                       0
UNITS_CUBE.PCTCHG_SALES_YTD_PY.MEASURE   PCTCHG_SALES_YTD_PY                0
UNITS_CUBE.SALES_QTD.MEASURE             SALES_QTD                          0
UNITS_CUBE.CHG_UNITS_PY.MEASURE          CHG_UNITS_PY                       0

40.4.11 REFRESH_MVIEWプロシージャ

このプロシージャは、キューブ・マテリアライズド・ビューのデータをリフレッシュします。

構文

DBMS_CUBE.REFRESH_MVIEW (
          mvowner              IN  VARCHAR2,
          mvname               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,
          scheduler_job        IN  VARCHAR2       DEFAULT NULL,
          sam_parameters       IN  CLOB           DEFAULT NULL,
          nested               IN  BOOLEAN        DEFAULT FALSE );

パラメータ

表40-13 REFRESH_MVIEWプロシージャのパラメータ

パラメータ 説明

mvowner

キューブ・マテリアライズド・ビューの所有者。

mvname

キューブ・マテリアライズド・ビューの名前。

method

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

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

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

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

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

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

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

BUILDプロシージャの詳細は、「使用上の注意」を参照してください。

refresh_after_errors

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

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

parallelism

このジョブに割り当てる並列処理の数。

BUILDプロシージャの詳細は、「使用上の注意」を参照してください。

atomic_refresh

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

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

scheduler_job

ログ表に表示される、ジョブのテキスト識別子。文字列が一意である必要はありません。

sam_parameters

なし。

nested

TRUEに設定すると、指定したキューブ・マテリアライズド・ビューのセットに対してネストしたリフレッシュ操作が実行されます。ネストしたリフレッシュ操作では、指定したマテリアライズド・ビューのセットと、すべての依存マテリアライズド・ビューが依存順序に基づいてリフレッシュされ、ネストしたマテリアライズド・ビューが元の実表の観点から完全に更新されます。

すべてのオブジェクトが1つのアナリティック・ワークスペースに存在する必要があります。

使用上の注意

REFRESH_MVIEWmvnameをキューブ名に変更し、そのキューブ名およびすべてのパラメータをBUILDプロシージャに渡します。これによって、BUILDプロシージャを使用してキューブ・マテリアライズド・ビューをリフレッシュできます。これらのパラメータの詳細は、「BUILDプロシージャ」を参照してください。

次の例では、CB$FWEEK_PSCAT_SALESという名前のキューブ・マテリアライズド・ビューのリフレッシュに、デフォルトの設定を使用しています。

SET serverout ON format wrapped
 
EXECUTE dbms_cube.refresh_mview('SH', 'CB$FWEEK_PSCAT_SALES');

次の例では、可能な場合は高速リフレッシュを使用し、エラーが発生した後もリフレッシュを続行し、2つの並列処理を使用するようにリフレッシュ・メソッドを変更しています。

EXECUTE dbms_cube.refresh_mview('SH', 'CB$FWEEK_PSCAT_SALES', '?', TRUE, 2);

REFRESH_MVIEWは、キューブ・マテリアライズド・ビューを正常にリフレッシュした後、次のようなメッセージを戻します。

Completed refresh of cube mview "SH"."CB$FWEEK_PSCAT_SALES" at 20130212 15:04:46.370.

40.4.12 UPGRADE_AWプロシージャ

このプロシージャは、OLAP 10gアナリティック・ワークスペースに含まれているメタデータのコピーからOracle OLAP 12cアナリティック・ワークスペースを作成します。元のOLAP 10gアナリティック・ワークスペースは影響を受けず、OLAP 12cアナリティック・ワークスペースと同じスキーマに同時に存在できます。

CUBE_UPGRADE_INFO表が存在しない場合、UPGRADE_AWINITIALIZE_CUBE_UPGRADEを自動的に実行します。存在する場合、UPGRADE_AWはそれを上書きしないため、表に行った変更は保存されます。

「DBMS_CUBE - 10gアナリティック・ワークスペースのアップグレード」を参照してください。

構文

DBMS_CUBE.UPGRADE_AW
       (sourceaw              IN  VARCHAR2,
        destaw                IN  VARCHAR2,
        upgoptions            IN  CLOB DEFAULT NULL); 

パラメータ

表40-14 UPGRADE_AWプロシージャのパラメータ

パラメータ 説明

sourceaw

10gアナリティック・ワークスペースの名前。

destaw

生成された12cアナリティック・ワークスペースの新しい名前。sourceawと同じにはできません。

upgoptions

次のアップグレード・オプションの1つ以上('OPTION=VALUE'という形式の文字列として)。複数のオプションはカンマで区切ります。

  • PRESERVE_TABLE_OWNERS:

    YESに設定すると、元のソース表マッピングが保存されます。このオプションは、10gアナリティック・ワークスペースとは異なるスキーマにOLAP 12cアナリティック・ワークスペースを作成し、新しいオブジェクトを元のスキーマの表にマップする場合に使用します。(デフォルト)

    NOに設定すると、ソース表マッピングからスキーマ所有者が削除されます。このオプションは、10gアナリティック・ワークスペースとは異なるスキーマにOLAP 12cアナリティック・ワークスペースを作成し、新しいオブジェクトを宛先スキーマの表にマップする場合に使用します。

  • RENAME_TABLE: オブジェクトがOLAP 12c形式で作成されるときにそれらに新しい名前を指定する表の名前。これらの変更は、INITIALIZE_CUBE_UPGRADEプロシージャで指定されている変更に加えて行われます。名前変更表の詳細は、「CREATE_IMPORT_OPTIONSプロシージャ」を参照してください。

  • TARGET_VERSION: 2から5個の要素からなる番号で指定されるアップグレードのバージョン(11.2または11.2.0.2.0など)。サポートされていないバージョン番号を入力すると、その下位の最も近いバージョンが使用されます。

この例では、MY_OBJECT_MAPという名前変更表を使用してGLOBAL10というOLAP 10gアナリティック・ワークスペースをGLOBAL12というOLAP 12cアナリティック・ワークスペースにアップグレードします。

BEGIN 
 
  -- Upgrade the analytic workspace
  dbms_cube.upgrade_aw(sourceaw =>'GLOBAL10', destaw => 'GLOBAL12', upgoptions => 'RENAME_TABLE=MY_OBJECT_MAP');
  
  -- Load and aggregate the data
  dbms_cube.build(script=>'UNITS_CUBE, PRICE_AND_COST_CUBE');
   
END;
/

40.4.13 VALIDATE_XMLプロシージャ

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

構文

DBMS_CUBE.VALIDATE_XML
       (dirname               IN  VARCHAR2,
        filename              IN  VARCHAR2 ); 

DBMS_CUBE.VALIDATE_XML
       (in_xml                IN  CLOB ); 

パラメータ

表40-15 VALIDATE_XMLプロシージャのパラメータ

パラメータ 説明

dirname

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

filename

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

IN_XML

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

使用上の注意

テンプレートは、常に、テンプレートの生成に使用されたものと同じバージョンおよびリリースのOracle Databaseにロードする必要があります。異なるリリースのソフトウェアで生成された場合、XMLが無効になる可能性があります。

この例は、スキーマにある問題をレポートします。

EXECUTE dbms_cube.validate_xml('UPGRADE_DIR', 'MYGLOBAL.XML');
BEGIN dbms_cube.validate_xml('UPGRADE_DIR', 'MYGLOBAL.XML'); END;
 
*
ERROR at line 1:
ORA-37162: OLAP error
'GLOBAL.PRICE_CUBE.$AW_ORGANIZATION': XOQ-01950: The AWCubeOrganization for
cube "GLOBAL.PRICE_CUBE" contains multiple BuildSpecifications with the same
name.
'GLOBAL.UNITS_CUBE.$AW_ORGANIZATION': XOQ-01950: The AWCubeOrganization for
cube "GLOBAL.UNITS_CUBE" contains multiple BuildSpecifications with the same
name.
XOQ-01400: invalid metadata objects
ORA-06512: at "SYS.DBMS_CUBE", line 411
ORA-06512: at "SYS.DBMS_CUBE", line 441
ORA-06512: at "SYS.DBMS_CUBE", line 501
ORA-06512: at "SYS.DBMS_CUBE", line 520
ORA-06512: at line 1

問題を修正した後は、プロシージャはエラーをレポートしません。

EXECUTE dbms_cube.validate_xml('UPGRADE_DIR', 'MYGLOBAL.XML');
 
PL/SQL procedure successfully completed.

この例では、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;
/