DBMS_AW PL/SQLパッケージには、アナリティック・ワークスペースを操作するためのプロシージャおよびファンクションが含まれています。
この付録は、次の項目に分かれています。
各DBMS_AWサブプログラムに関するリファレンス項目
Oracle OLAPの操作を行うには、セッションにアナリティック・ワークスペースをアタッチする必要があります。DBMS_AW PL/SQLパッケージがインストールされている場合、SQL*Plusからこのタスクを実行できます。たとえば、次のコマンドを使用して、読取り専用アクセスでアナリティック・ワークスペースをアタッチすることが可能です。
EXECUTE dbms_aw.aw_attach ('awname');
各アナリティック・ワークスペースは、アナリティック・ワークスペースのリストに関連付けられています。読取り専用ワークスペースEXPRESS.AW(OLAPエンジン・コードを含む)は常に、このリストで最後にアタッチされます。ワークスペースを作成すると、デフォルトでこのリストの最初にアタッチされます。
FIRSTやLASTなどのキーワードを使用して、リスト内のアナリティック・ワークスペースの位置を変更できます。たとえば、次のコマンドは、MYAW.TEST2というアナリティック・ワークスペースをリストの2番目の位置から1番目の位置に移動する方法を示しています。
EXECUTE dbms_aw.execute ('AW LIST'); TEST1 R/O UNCHANGED GLOBAL.TEST1 TEST2 R/O UNCHANGED GLOBAL.TEST2 EXPRESS R/O UNCHANGED SYS.EXPRESS EXECUTE dbms_aw.aw_attach ('test2', FALSE, FALSE, 'FIRST'); EXECUTE dbms_aw.execute ('AW LIST'); TEST2 R/O UNCHANGED GLOBAL.TEST2 TEST1 R/O UNCHANGED GLOBAL.TEST1 EXPRESS R/O UNCHANGED SYS.EXPRESS
SQL*Plusから、ワークスペースの名前を変更したり、ワークスペースのコピーを作成したりできます。読取り/書込みアクセスでアナリティック・ワークスペースをアタッチした場合、そのワークスペースを更新して、ワークスペースが格納されている永続データベース表に変更内容を保存できます。ワークスペースの変更内容をデータベース内に保存するには、SQL COMMITを実行する必要があります。
次のコマンドでは、ワークスペースtest2のオブジェクトおよびデータのコピーをtest3という新しいワークスペースに作成し、test3を更新して、変更内容をデータベースにコミットしています。
EXECUTE dbms_aw.aw_copy('test2', 'test3'); EXECUTE dbms_aw.aw_update('test3'); COMMIT;
DBMS_AWパッケージにより、アナリティック・ワークスペース内であらゆるOLAP処理を実行できます。レガシー・ワークスペース、リレーショナル表またはフラット・ファイルから、データのインポートが可能です。OLAPオブジェクトの定義や、複雑な計算の実行もできます。
|
注意: DBMS_AWパッケージを使用してアナリティック・ワークスペースを一から作成する場合、特定の構造のアナリティック・ワークスペースを必要とするOLAPユーティリティ(Analytic Workspace ManagerやDBMS_AW集計アドバイザなど)を使用できないことがあります。 |
DBMS_AWパッケージには、非定型のOLAP DMLコマンドを実行するためのプロシージャが含まれています。EXECUTEプロシージャかINTERP_SILENTプロシージャ、またはINTERPファンクションかINTERCLOBファンクションを使用して、単一のOLAP DMLコマンドまたはセミコロンで区切られた一連のコマンドを実行できます。
使用するプロシージャは、出力の送信方法、および入力バッファと出力バッファのサイズによって異なります。たとえば、EXECUTEプロシージャは出力をプリンタ・バッファに送信し、INTERP_SILENTプロシージャは出力を抑止、INTERPファンクションはセッション・ログを返します。
また、DBMS_AWパッケージには、OLAP式を評価するためのファンクションも含まれています。EVAL_TEXTファンクションはテキスト式の結果を返し、EVAL_NUMBERは数式の結果を返します。
|
注意: DBMS_AWのEVAL_NUMBERファンクションおよびEVAL_TEXTファンクションを、SQLのOLAP_EXPRESSIONファンクションと混同しないでください。詳細は、「OLAP_EXPRESSION」を参照してください。 |
SQLプロセッサは、処理する埋込みOLAP DMLコマンドをOracle OLAPへ送信する前に、そのコマンドの全体または一部を評価します。DBMS_AWプロシージャのolap-commandsパラメータでOLAP DMLコマンドの書式を設定する際には、次のガイドラインに従ってください。
OLAP DMLコマンドで通常であれば一重引用符(')を使用する箇所は必ず、2つの一重引用符('')を使用します。SQLプロセッサにより、OLAP DMLコマンドをOracle OLAPに送信する前に、一重引用符が1つ削除されます。
OLAP DMLでは、二重引用符(")はコメントの開始を示します。
データは、稠密、スパース、非常にスパースのいずれであるかに応じて、様々な形式でアナリティック・ワークスペースに格納できます。スパース性アドバイザはDBMS_AWのサブプログラムのグループであり、これを使用して、リレーショナル・ソース・データを分析し、そのデータをアナリティック・ワークスペースに格納する際の推奨事項を取得できます。
アナリティック・ワークスペースでは、ディメンション・メンバーの組合せごとに1つのセルを割り当てる多次元形式でデータを分析および操作します。セルには、データ値またはNA(NULL)を含めることができます。セルのサイズは、その内容に関係なく、データ型によって定義されますが、たとえば、DECIMAL変数の各セルは8バイトです。
変数は、稠密(データ値を持つセルを30%以上含む)またはスパース(データ値が30%未満)のいずれかとなります。ほとんどの変数はスパースであり、その多くが非常にスパースです。
データは分析用の多次元形式で保存することもできますが、他の方法を使用してスパースな変数を格納することにより、ディスク領域を効率よく使用してパフォーマンスを向上させることが可能です。スパースなデータは、コンポジット・ディメンションで定義される変数に格納できます。コンポジットは、そのメンバーとして、データの存在するディメンション値の組合せ(タプルと呼ばれる)を持ちます。コンポジットによってディメンション化された変数にデータ値が追加されると、コンポジット・タプルが作成されます。コンポジット・ディメンションは、1つ以上のスパースなデータ変数を格納する索引で、スパースなデータを稠密に格納します。非常にスパースなデータは、圧縮コンポジットで定義された変数に格納でき、圧縮コンポジットでは、通常のコンポジットとは異なるアルゴリズムを使用してデータが格納されます。
次元データとは対照的に、リレーショナル・データは、実際のデータ値についてのみ行を持つ非常にコンパクトな形式の表に格納されます。アナリティック・ワークスペースを設計する際、ソース・データのスパース性を手動で識別して最適な格納方法を決定するのが難しい場合があります。スパース性アドバイザにより、リレーショナル表のソース・データが分析され、格納方法がお薦めされます。推奨事項には、データ変数のパーティション化およびコンポジットの定義も含まれます。
スパース性アドバイザは、次のプロシージャとファンクションから構成されます。
また、スパース性アドバイザは、分析されるファクトのディメンションに関する情報を格納するためのパブリックな表型も提供します。表型の定義には、次の3つのオブジェクトが使用されます。
DBMS_AW$_COLUMNLIST_TDBMS_AW$_DIMENSION_SOURCE_TDBMS_AW$_DIMENSION_SOURCES_T次のSQL DESCRIBE文は、オブジェクト定義を示しています。
DESCRIBE dbms_aw$_columnlist_t dbms_aw$_columnlist_t TABLE OF VARCHAR2(100) DESCRIBE dbms_aw$_dimension_source_t Name Null? Type ----------------------------------------- -------- ---------------------------- DIMNAME VARCHAR2(100) COLUMNNAME VARCHAR2(100) SOURCEVALUE VARCHAR2(32767) DIMTYPE NUMBER(3) HIERCOLS DBMS_AW$_COLUMNLIST_T PARTBY NUMBER(9) DESCRIBE dbms_aw$_dimension_sources_t dbms_aw$_dimension_sources_t TABLE OF DBMS_AW$_DIMENSION_SOURCE_T
スパース性アドバイザを使用するには、次の手順を実行します。
SPARSITY_ADVICE_TABLEをコールして、スパース性アドバイザの評価を格納する表を作成します。
1つ以上の列によって評価対象のファクト表に関連付けられた各ディメンションについて、ADD_DIMENSION_SOURCEをコールします。
これらのディメンションについて入力した情報は、DBMS_AW$_DIMENSION_SOURCES_T変数に格納されます。
ADVISE_SPARSITYをコールして、ファクト表を評価します。
その推奨事項は、SPARSITY_ADVICE_TABLEにより作成された表に格納されます。これらの推奨事項を使用して、アナリティック・ワークスペースでの変数の定義について判断を下すか、または次の手順を続行できます。
ADVISE_DIMENSIONALITYプロシージャをコールして、推奨されるコンポジット、パーティション化、変数の定義について、OLAP DMLオブジェクト定義を取得します。
または
ADVISE_DIMENSIONALITYファンクションを使用して、推奨されるコンポジットおよび特定のパーティションの変数定義に関するディメンションの順序について、OLAP DMLオブジェクト定義を取得します。
例B-1「スパース性アドバイザのGLOBAL用スクリプト」に、GLOBALスキーマでUNITS_HISTORY_FACT表のスパース性を評価するためのSQLスクリプトを示します。GLOBALアナリティック・ワークスペースでは、UNITS_HISTORY_FACTがUnitsキューブを定義し、UNITS変数のソースとなります。UNITS_HISTORY_FACTは、4つのディメンション表からの外部キーで構成される主キーを持つファクト表です。5番目の列には、売上数量のファクトが含まれています。
CHANNEL_DIM表とCUSTOMER_DIM表には、基本的なスター構成のチャネルおよび顧客ディメンションの情報がすべて含まれます。スノーフレーク構成の3つの表により、時間ディメンションのデータとしてMONTH_DIM、QUARTER_DIMおよびYEAR_DIMが提供されます。PRODUCT_CHILD_PARENT表は、親子表であり、製品ディメンションを定義します。
例B-1 スパース性アドバイザのGLOBAL用スクリプト
CONNECT global/global
SET ECHO ON
SET LINESIZE 300
SET PAGESIZE 300
SET SERVEROUT ON FORMAT WRAPPED
-- Define and initialize an advice table named AW_SPARSITY_ADVICE
BEGIN
dbms_aw.sparsity_advice_table();
EXCEPTION
WHEN OTHERS THEN NULL;
END;
/
TRUNCATE TABLE aw_sparsity_advice;
DECLARE
dimsources dbms_aw$_dimension_sources_t;
dimlist VARCHAR2(500);
sparsedim VARCHAR2(500);
defs CLOB;
BEGIN
-- Provide information about all dimensions in the cube
dbms_aw.add_dimension_source('channel', 'channel_id', dimsources,
'channel_dim', dbms_aw.hier_levels,
dbms_aw$_columnlist_t('channel_id', 'total_channel_id'));
dbms_aw.add_dimension_source('product', 'item_id', dimsources,
'product_child_parent', dbms_aw.hier_parentchild,
dbms_aw$_columnlist_t('product_id', 'parent_id'));
dbms_aw.add_dimension_source('customer', 'ship_to_id', dimsources,
'customer_dim', dbms_aw.hier_levels,
dbms_aw$_columnlist_t('ship_to_id', 'warehouse_id', 'region_id',
'total_customer_id'));
dbms_aw.add_dimension_source('time', 'month_id', dimsources,
'SELECT m.month_id, q.quarter_id, y.year_id
FROM time_month_dim m, time_quarter_dim q, time_year_dim y
WHERE m.parent=q.quarter_id AND q.parent=y.year_id',
dbms_aw.hier_levels,
dbms_aw$_columnlist_t('month_id', 'quarter_id', 'year_id'));
-- Analyze fact table and provide advice without partitioning
dbms_aw.advise_sparsity('units_history_fact', 'units_cube',
dimsources, dbms_aw.advice_default, dbms_aw.partby_none);
COMMIT;
-- Generate OLAP DML for composite and variable definitions
dimlist := dbms_aw.advise_dimensionality('units_cube', sparsedim,
'units_cube_composite');
dbms_output.put_line('Dimension list: ' || dimlist);
dbms_output.put_line('Sparse dimension: ' || sparsedim);
dbms_aw.advise_dimensionality(defs, 'units_cube');
dbms_output.put_line('Definitions: ');
dbms_aw.printlog(defs);
END;
/
例B-1「スパース性アドバイザのGLOBAL用スクリプト」のスクリプトで次の情報が生成されます。
Dimension list: <channel units_cube_composite<product customer time>> Sparse dimension: DEFINE units_cube_composite COMPOSITE <product customer time> Definitions: DEFINE units_cube.cp COMPOSITE <product customer time> DEFINE units_cube NUMBER VARIABLE <channel units_cube.cp<product customer time>> PL/SQL procedure successfully completed.
このSQL SELECT文により、推奨されるOLAP DMLオブジェクト定義の基礎である、AW_SPARSITY_ADVICE表の列の一部が表示されます。
SELECT fact, dimension, dimcolumn, membercount nmem, leafcount nleaf,
advice, density
FROM aw_sparsity_advice
WHERE cubename='units_cube';
この問合せは、次の結果セットを返します。
FACT DIMENSION DIMCOLUMN NMEM NLEAF ADVICE DENSITY -------------------- ------------ ------------ ----- ------ ------------ -------- units_history_fact channel channel_id 3 3 DENSE .46182 units_history_fact product item_id 48 36 SPARSE .94827 units_history_fact customer ship_to_id 61 61 SPARSE .97031 units_history_fact time month_id 96 79 SPARSE .97664
アナリティック・ワークスペースでの集計データの管理は、パフォーマンスに大きく影響することがあります。DBMS_AWパッケージのADVISE_RELプロシージャおよびADVISE_CUBEプロシージャを使用すると、事前集計するディメンション・メンバーの最適な組合せを決定できます。これらのプロシージャは、集計アドバイザとして知られています。
指定した割合に基づき、ADVISE_RELは事前集計するディメンション・メンバーのセットを提示します。ADVISE_CUBEは、キューブの各ディメンションについてメンバーのセットを提示します。
集計データを格納する手順は、aggmapというアナリティック・ワークスペース・オブジェクトで指定されます。OLAP DML AGGREGATEコマンドは、aggmapを使用してデータを事前計算します。事前集計されないデータは、データの問合せ時にAGGREGATEファンクションで動的に集計されます。
静的な集計と動的な集計のバランスの選択は、ディスク領域、使用可能なメモリー、データに対して実行される問合せの特性と頻度など、多くの要素によって異なります。これらの要素を検討して、事前集計するデータの割合を決定します。
事前集計するデータの割合を決定したら、集計アドバイザを使用できます。これらのプロシージャで、階層内のディメンション・メンバーの分布を分析し、事前集計するディメンション・メンバーの最適な組合せを特定します。
指定した事前計算の割合に基づいて、ADVISE_RELプロシージャは、すべての階層関係を持つディメンションを表すファミリ・リレーションを分析し、ディメンション・メンバーのリストを返します。
ADVISE_CUBEは、キューブのaggmapで各ディメンションに同様の経験則を適用します。
例B-2では、次に示す顧客ディメンションのサンプルを使用して、ADVISE_RELプロシージャを説明します。
サンプル・ディメンション: Globalアナリティック・ワークスペースの顧客
GLOBAL_AW.GLOBALの顧客ディメンションには、4つのレベルを持つSHIPMENTS_ROLLUPと3つのレベルを持つMARKET_ROLLUPの2つの階層があります。ディメンションは106のメンバーを持ちます。この数には、各レベルの全メンバーおよびすべてのレベル名が含まれています。
顧客ディメンションのメンバーは、テキスト値が詳細な説明および簡単な説明で定義された整数キーです。
次のOLAP DMLコマンドは、データベースの標準形式である顧客ディメンションの表現に関する情報を示しています。
SET serveroutput ON ---- Number of members of Customer dimension EXECUTE dbms_aw.execute('SHOW STATLEN(customer)') 106 ---- Hierarchies in Customer dimension; EXECUTE dbms_aw.execute('REPORT W 40 customer_hierlist'); CUSTOMER_HIERLIST ---------------------------------------- MARKET_ROLLUP SHIPMENTS_ROLLUP ---- Levels in Customer dimension EXECUTE dbms_aw.execute('REPORT W 40 customer_levellist'); CUSTOMER_LEVELLIST ---------------------------------------- TOTAL_CUSTOMER REGION WAREHOUSE TOTAL_MARKET MARKET_SEGMENT ACCOUNT SHIP_TO ---- Levels in each hierarchy from leaf to highest EXECUTE dbms_aw.execute('REPORT W 20 customer_hier_levels'); CUSTOMER_HIERL IST CUSTOMER_HIER_LEVELS -------------- -------------------- SHIPMENTS SHIP_TO WAREHOUSE REGION TOTAL_CUSTOMER MARKET_SEGMENT SHIP_TO ACCOUNT MARKET_SEGMENT TOTAL_MARKET ---- Parent relation showing parent-child relationships in the Customer dimension ---- Only show the last 20 members EXECUTE dbms_aw.execute('LIMIT customer TO LAST 20'); EXECUTE dbms_aw.execute('REPORT W 10 DOWN customer W 20 customer_parentrel'); -----------CUSTOMER_PARENTREL------------ ------------CUSTOMER_HIERLIST------------ CUSTOMER MARKET_ROLLUP SHIPMENTS_ROLLUP ---------- -------------------- -------------------- 103 44 21 104 45 21 105 45 21 106 45 21 7 NA NA 1 NA NA 8 NA 1 9 NA 1 10 NA 1 11 NA 8 12 NA 10 13 NA 9 14 NA 9 15 NA 8 16 NA 9 17 NA 8 18 NA 8 19 NA 9 20 NA 9 21 NA 10 ---- Show text descriptions for the same twenty dimension members EXECUTE dbms_aw.execute('REPORT W 15 DOWN customer W 35 ACROSS customer_hierlist: <customer_short_description>'); ALL_LANGUAGES: AMERICAN_AMERICA ---------------------------CUSTOMER_HIERLIST--------------------------- -----------MARKET_ROLLUP----------- ---------SHIPMENTS_ROLLUP---------- CUSTOMER CUSTOMER_SHORT_DESCRIPTION CUSTOMER_SHORT_DESCRIPTION --------------- ----------------------------------- ----------------------------------- 103 US Marine Svcs Washington US Marine Svcs Washington 104 Warren Systems New York Warren Systems New York 105 Warren Systems Philladelphia Warren Systems Philladelphia 106 Warren Systems Boston Warren Systems Boston 7 Total Market NA 1 NA All Customers 8 NA Asia Pacific 9 NA Europe 10 NA North America 11 NA Australia 12 NA Canada 13 NA France 14 NA Germany 15 NA Hong Kong 16 NA Italy 17 NA Japan 18 NA Singapore 19 NA Spain 20 NA United Kingdom 21 NA United States
例B-2 ADVISE_REL: 推奨される顧客ディメンションの事前集計
この例では、サンプル・ディメンション: Globalアナリティック・ワークスペースの顧客で説明したGLOBAL顧客ディメンションを使用しています。
次のPL/SQL文は、顧客ディメンションの25%を事前集計することを前提としています。ADVISE_RELは、値セットで推奨されるメンバーのセットを返します。
SET serveroutput ON
EXECUTE dbms_aw.execute('AW ATTACH global_aw.global');
EXECUTE dbms_aw.execute('DEFINE customer_preagg VALUESET customer');
EXECUTE dbms_aw.advise_rel('customer_parentrel', 'customer_preagg', 25);
EXECUTE dbms_aw.execute('SHOW VALUES(customer_preagg)');
31
2
4
5
6
7
1
8
9
20
21
返される顧客メンバーと、説明文、関連するレベルおよび階層は、次に示すとおりです。
| 顧客メンバー | 説明 | 階層 | レベル |
|---|---|---|---|
31 |
Kosh Enterprises |
MARKET_ROLLUP |
ACCOUNT |
2 |
Consulting |
MARKET_ROLLUP |
MARKET_SEGMENT |
4 |
Government |
MARKET_ROLLUP |
MARKET_SEGMENT |
5 |
製造業 |
MARKET_ROLLUP |
MARKET_SEGMENT |
6 |
Reseller |
MARKET_ROLLUP |
MARKET_SEGMENT |
7 |
TOTAL_MARKET |
MARKET_ROLLUP |
TOTAL_MARKET |
1 |
TOTAL_CUSTOMER |
SHIPMENTS_ROLLUP |
TOTAL_CUSTOMER |
8 |
Asia Pacific |
SHIPMENTS_ROLLUP |
REGION |
9 |
Europe |
SHIPMENTS_ROLLUP |
REGION |
20 |
United Kingdom |
SHIPMENTS_ROLLUP |
WAREHOUSE |
21 |
United States |
SHIPMENTS_ROLLUP |
WAREHOUSE |
次の表は、DBMS_AWに含まれるサブプログラムを示しています。
表B-1 DBMS_AWサブプログラム
| サブプログラム | 説明 |
|---|---|
|
|
|
|
|
指定したキューブ・データの割合に基づいて、キューブの事前集計方法を提示する。 |
|
|
推奨されるキューブのコンポジット定義およびディメンションの順序を返す。 |
|
|
推奨されるキューブのコンポジットおよびメジャーを定義するOLAP DMLコマンドを生成する。 |
|
ADVISE_PARTITIONING_DIMENSIONファンクション |
スパース性アドバイザによってパーティション化されたディメンションを識別する。 |
|
ADVISE_PARTITIONING_LEVELファンクション |
ディメンションのパーティション化を行う際にスパース性アドバイザで使用されるレベルを返す。 |
|
|
指定したディメンション・メンバーの割合に基づいて、ディメンションの事前集計方法を提示する。 |
|
|
スパース性についてファクト表を分析し、その分析結果を表に移入する。 |
|
|
アナリティック・ワークスペースをセッションにアタッチする。 |
|
|
新しいアナリティック・ワークスペースを作成し、別のアナリティック・ワークスペースのオブジェクト定義およびデータを移入する。 |
|
|
空のアナリティック・ワークスペースを新規作成する。 |
|
|
アナリティック・ワークスペースを削除する。 |
|
|
アナリティック・ワークスペースをセッションからデタッチする。 |
|
|
アナリティック・ワークスペースの名前を変更する。 |
|
|
特定のアナリティック・ワークスペースが格納される表領域の名前を返す。 |
|
|
アナリティック・ワークスペースに対する変更を保存する。 |
|
|
アナリティック・ワークスペースの格納フォーマットを9iから10gに変換する。 |
|
|
アナリティック・ワークスペースの数式の結果を返す。 |
|
|
アナリティック・ワークスペースのテキスト式の結果を返す。 |
|
|
1つ以上のOLAP DMLコマンドを実行する。入力および出力は4Kに制限されます。通常、アナリティック・ワークスペースを使用する対話型セッションで使用される。 |
|
|
最近実行した |
|
|
ファイルで指定されたOLAP DMLコマンドを実行する。 |
|
|
1つ以上のOLAP DMLコマンドを実行する。入力は4K、出力は4Gに制限される。通常、 |
|
|
1つ以上のOLAP DMLコマンドを実行する。入力および出力は4Gに制限される。通常、 |
|
|
1つ以上のOLAP DMLコマンドを実行し、出力を抑止する。入力は4K、出力は4Gに制限される。 |
|
|
OLAPオプションがデータベースにインストールされているかどうかを示すブールを返す。 |
|
|
OLAPオプションが現行のセッションで初期化されているかどうかを示すブールを返す。 |
|
|
|
|
|
1つ以上のOLAP DMLコマンドを実行する。 |
|
|
現行のOLAPセッションを停止する。 |
|
|
|
|
|
ユーザー定義のアナリティック・ワークスペースをアタッチせずにOLAPセッションを開始する。 |
ADD_DIMENSION_SOURCEプロシージャは、DBMS_AW$_DIMENSION_SOURCES_Tという表型に、キューブのディメンションに関する情報を移入します。この情報は、ADVISE_SPARSITYプロシージャによって分析されます。
|
注意: OLAPワークシート内からはこのプロシージャを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
構文
ADD_DIMENSION_SOURCE (
dimname IN VARCHAR2,
colname IN VARCHAR2,
sources IN OUT dbms_aw$_dimension_sources_t,
srcval IN VARCHAR2 DEFAULT NULL,
dimtype IN NUMBER DEFAULT NO_HIER,
hiercols IN columnlist_t DEFAULT NULL,
partby IN NUMBER DEFAULT PARTBY_DEFAULT);
パラメータ
表B-2 ADD_DIMENSION_SOURCEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ディメンションの名前。明確にするため、アナリティック・ワークスペースのディメンションの論理名を使用する。 |
|
|
dimnameのディメンション・メンバーにマップするファクト表の列の名前。 |
|
|
|
|
|
ディメンション表の名前、またはディメンションを定義する列を返すSQL文。このパラメータを省略した場合、colnameが使用される。 |
|
|
次に示す階層の型の1つ。 DBMS_AW.HIER_LEVELS: レベルベース階層DBMS_AW.HIER_PARENTCHILD: 親子階層DBMS_AW.MEASURE: メジャー・ディメンションDBMS_AW.NO_HIER: 階層なし |
|
|
階層を定義する列の名前。 レベルベース階層の場合、ベースレベルの列を最初に、最上位レベルの列を最後に指定する。ディメンションに複数の階層がある場合、予測で最も頻繁に使用する階層を選択し、この階層のレベルを定義する列のみを指定する。 親子階層の場合、子の列を最初に指定し、その後に親の列を指定する。 メジャー・ディメンションの場合、ディメンション・メンバーとなるファクト表の列を指定する。 |
|
|
パーティション化を制御するキーワード。次の値のいずれかを使用する。
|
例
次のPL/SQLプログラムの抜粋は、スパース性アドバイザで使用されるTIMEディメンションに関する情報を示しています。このディメンションのソース・データは、TIME_DIMというディメンション表に格納されています。主キーの名前はMONTH_IDであり、ファクト表の外部キー列の名前もMONTH_IDです。ディメンション階層は、MONTH_ID列、QUARTER_ID列およびYEAR_ID列で定義されるレベルベースです。
このプログラムでは、情報を格納するために、DBMS_AW$_DIMENSION_SOURCES_Tの表型を持つDIMSOURCESというPL/SQL変数が宣言されています。
DECLARE
dimsources dbms_aw$_dimension_sources_t;
BEGIN
dbms_aw.add_dimension_source('time', 'month_id', dimsources,
'time_dim', dbms_aw.hier_levels,
dbms_aw$_columnlist_t('month_id', 'quarter_id', 'year_id'));
.
.
.
END;
/
ADVISE_CUBEプロシージャは、アナリティック・ワークスペースでキューブを事前集計する方法を決定する際に役立ちます。事前集計するキューブ・データの割合を指定すると、ADVISE_CUBEにより、キューブの各ディメンションの事前集計するメンバーのセットがお薦めされます。
ADVISE_CUBEプロシージャは、入力としてaggmapと事前計算の割合をとります。aggmapは、各RELATION文にPRECOMPUTE句を含む必要があります。PRECOMPUTE句は値セットで構成されます。指定した事前計算の割合に基づき、ADVISE_CUBEは各値セットのディメンション・メンバーの組合せを返します。
|
注意: OLAPワークシート内からはこのプロシージャを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
構文
ADVISE_CUBE (
aggmap_name IN VARCHAR2,
precompute_percentage IN INTEGER DEFAULT 20,
compressed IN BOOLEAN DEFAULT FALSE);
パラメータ
表B-3 ADVISE_CUBEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
キューブに関連付けられたaggmapの名前。 aggmapの各 |
|
|
事前集計するキューブ・データの割合。デフォルトは20%。 |
|
|
通常のコンポジット( |
例
この例では、ADVISE_CUBEプロシージャと、PRODUCTおよびTIMEでディメンション化されたUNITSというキューブについて説明します。ADVISE_CUBEは、キューブ・データの40%を事前集計する場合に必要なディメンションの組合せを返します。
SET SERVEROUTPUT ON
--- View valuesets
EXECUTE dbms_aw.execute('describe prodvals');
DEFINE PRODVALS VALUESET PRODUCT
EXECUTE dbms_aw.execute('describe timevals');
DEFINE TIMEVALS VALUESET TIME
--- View aggmap
EXECUTE dbms_aw.execute ('describe units_agg');
DEFINE UNITS_AGG AGGMAP
RELATION product_parentrel PRECOMPUTE (prodvals)
RELATION time_parentrel PRECOMPUTE (timevals)
EXECUTE dbms_aw.advise_cube ('units_agg', 40);
---- The results are returned in the prodvals and timevals valuesets
ADVISE_DIMENSIONALITYファンクションは、特定のパーティションについてADVISE_SPARSITYプロシージャにより生成されたスパース性の推奨事項に基づき、キューブ内の変数のディメンション順序およびコンポジット・ディメンションのOLAP DML定義を返します。
|
注意: OLAPワークシート内からはこのファンクションを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
構文
ADVISE_DIMENSIONALITY (
cubename IN VARCHAR2,
sparsedfn OUT VARCHAR2
sparsename IN VARCHAR2 DEFAULT NULL,
partnum IN NUMBER DEFAULT 1,
advtable IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2;
パラメータ
表B-4 ADVISE_DIMENSIONALITYファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
コンポジット・ディメンションの定義が格納されるオブジェクト(PL/SQL変数など)の名前。 |
|
|
コンポジットのオブジェクト名。デフォルト値は |
|
|
パーティションの数。デフォルトでは、最初のパーティションの定義のみが表示される。 |
|
|
分析結果を格納するために |
例
次のPL/SQLプログラムの抜粋では、ADVISE_DIMENSIONALITYファンクションで返される推奨事項を格納する2つの変数を定義しています。SPARSEDIMは推奨されるコンポジットの定義を格納し、DIMLISTはキューブの推奨されるディメンションの順序を格納します。
DECLARE
sparsedim VARCHAR2(500);
dimlist VARCHAR2(500);
BEGIN
-- Calls to ADD_DIMENSION_SOURCE and ADVISE_SPARSITY omitted here
.
.
.
dimlist := dbms_aw.advise_dimensionality('units_cube', sparsedim);
dbms_output.put_line('Sparse dimension: ' || sparsedim);
dbms_output.put_line('Dimension list: ' || dimlist);
END;
/
このプログラムでは、DBMS_OUTPUT.PUT_LINEを使用して分析結果を表示します。スパース性アドバイザにより、スパースなディメンションであるPRODUCT、CUSTOMERおよびTIMEに対してコンポジット・ディメンションがお薦めされます。UNITS_CUBEの推奨されるディメンションの順序は、CHANNELの後にこのコンポジットが続きます。
Sparse dimension: DEFINE units_cube.cp COMPOSITE <product customer time> Dimension list: channel units_cube.cp<product customer time>
次の例では、スパース性アドバイザを使用して、Sales Historyというサンプル・スキーマのSALES表を評価します。WHILEループにより、すべてのパーティションの推奨事項が表示されます。
DECLARE
dimlist VARCHAR2(500);
sparsedim VARCHAR2(500);
counter NUMBER(2) := 1;
maxpart NUMBER(2);
BEGIN
-- Calls to ADD_DIMENSION_SOURCE and ADVISE_SPARSITY omitted here
.
.
.
SELECT MAX(partnum) INTO maxpart FROM sh_sparsity_advice;
WHILE counter <= maxpart LOOP
dimlist := dbms_aw.advise_dimensionality('sales_cube', sparsedim,
'sales_cube_composite', counter, 'sh_sparsity_advice');
dbms_output.put_line('Dimension list: ' || dimlist);
dbms_output.put_line('Sparse dimension: ' || sparsedim);
counter := counter+1;
END LOOP;
dbms_aw.advise_dimensionality(defs,'sales_cube', 'sales_cube_composite',
'DECIMAL', 'sh_sparsity_advice');
dbms_output.put_line('Definitions: ');
dbms_aw.printlog(defs);
END;
/
スパース性アドバイザでは11のパーティションがお薦めされ、最初の10のパーティションは同一のコンポジットを使用します。最後のパーティションは別のコンポジットを使用します。(SH_SPARSITY_ADVICE表には、TIME_IDが最後のパーティションでは稠密であるが、他のパーティションでは非常にスパースであることが示されます。)
Dimension list: sales_cube_composite<time channel product promotion customer>
Sparse dimension: DEFINE sales_cube_composite COMPOSITE COMPRESSED <time channel product promotion customer>
Dimension list: sales_cube_composite<time channel product promotion customer>
Sparse dimension: DEFINE sales_cube_composite COMPOSITE COMPRESSED <time channel product promotion customer>
.
.
.
Dimension list: time sales_cube_composite<channel product promotion customer>
Sparse dimension: DEFINE sales_cube_composite COMPOSITE COMPRESSED <channel product promotion customer>
ADVISE_DIMENSIONALITYプロシージャは、ADVISE_SPARSITYプロシージャにより提供された情報を評価し、アナリティック・ワークスペースでコンポジットおよび変数を定義するためのOLAP DMLコマンドを生成します。
|
注意: OLAPワークシート内からはこのプロシージャを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
構文
ADVISE_DIMENSIONALITY (
output OUT CLOB,
cubename IN VARCHAR2,
sparsename IN VARCHAR2 DEFAULT NULL,
dtype IN VARCHAR2 DEFAULT 'NUMBER',
advtable IN VARCHAR2 DEFAULT NULL);
例
次のPL/SQLプログラムの抜粋では、DEFSという変数を定義して、推奨される定義を格納しています。
DECLARE
defs CLOB;
BEGIN
-- Calls to ADD_DIMENSION_SOURCE and ADVISE_SPARSITY omitted here
.
.
.
dbms_aw.advise_dimensionality(defs, 'units_cube_measure_stored',
'units_cube_composite', 'DECIMAL');
dbms_output.put_line('Definitions: ');
dbms_aw.printlog(defs);
END;
/
このプログラムでは、DBMS_OUTPUT.PUT_LINEプロシージャおよびDBMS_AW.PRINTLOGプロシージャを使用して、推奨されるオブジェクト定義を表示します。
Definitions: DEFINE units_cube.cp COMPOSITE <product customer time> DEFINE units_cube NUMBER VARIABLE <channel units_cube.cp<product customer time>>
小さくて稠密なGlobalスキーマとは対照的に、Sales Historyサンプル・スキーマのSalesキューブは大きくて非常にスパースであるため、スパース性アドバイザにより11のパーティションがお薦めされます。次の抜粋では、パーティション・テンプレートを定義し、様々なパーティションにTIMEディメンション・メンバーを移動するための、追加のOLAP DML定義の一部を示しています。
Definitions:
DEFINE sales_cube_composite_p1 COMPOSITE COMPRESSED <time channel product promotion customer>
DEFINE sales_cube_composite_p2 COMPOSITE COMPRESSED <time channel product promotion customer>
DEFINE sales_cube_composite_p3 COMPOSITE COMPRESSED <time channel product promotion customer>
DEFINE sales_cube_composite_p4 COMPOSITE COMPRESSED <time channel product promotion customer>
DEFINE sales_cube_composite_p5 COMPOSITE COMPRESSED <time channel product promotion customer>
DEFINE sales_cube_composite_p6 COMPOSITE COMPRESSED <time channel product promotion customer>
DEFINE sales_cube_composite_p7 COMPOSITE COMPRESSED <time channel product promotion customer>
DEFINE sales_cube_composite_p8 COMPOSITE COMPRESSED <time channel product promotion customer>
DEFINE sales_cube_composite_p9 COMPOSITE COMPRESSED <time channel product promotion customer>
DEFINE sales_cube_composite_p10 COMPOSITE COMPRESSED <time channel product promotion customer>
DEFINE sales_cube_composite_p11 COMPOSITE <channel product promotion customer>
DEFINE sales_cube_pt PARTITION TEMPLATE <time channel product promotion customer> -
PARTITION BY LIST (time) -
(PARTITION p1 VALUES () <sales_cube_composite_p1<>> -
PARTITION p2 VALUES () <sales_cube_composite_p2<>> -
PARTITION p3 VALUES () <sales_cube_composite_p3<>> -
PARTITION p4 VALUES () <sales_cube_composite_p4<>> -
PARTITION p5 VALUES () <sales_cube_composite_p5<>> -
PARTITION p6 VALUES () <sales_cube_composite_p6<>> -
PARTITION p7 VALUES () <sales_cube_composite_p7<>> -
PARTITION p8 VALUES () <sales_cube_composite_p8<>> -
PARTITION p9 VALUES () <sales_cube_composite_p9<>> -
PARTITION p10 VALUES () <sales_cube_composite_p10<>> -
PARTITION p11 VALUES () <time sales_cube_composite_p11<>>)
MAINTAIN sales_cube_pt MOVE TO PARTITION p1 -
'06-JAN-98', '07-JAN-98', '14-JAN-98', '21-JAN-98', -
'24-JAN-98', '28-JAN-98', '06-FEB-98', '07-FEB-98', -
'08-FEB-98', '16-FEB-98', '21-FEB-98', '08-MAR-98', -
'20-MAR-98', '03-JAN-98', '26-JAN-98', '27-JAN-98'
MAINTAIN sales_cube_pt MOVE TO PARTITION p1 -
'31-JAN-98', '11-FEB-98', '12-FEB-98', '13-FEB-98', -
'15-FEB-98', '17-FEB-98', '14-MAR-98', '18-MAR-98', -
'26-MAR-98', '30-MAR-98', '05-JAN-98', '08-JAN-98', -
'10-JAN-98', '16-JAN-98', '23-JAN-98', '01-FEB-98'
MAINTAIN sales_cube_pt MOVE TO PARTITION p1 -
'14-FEB-98', '28-FEB-98', '05-MAR-98', '07-MAR-98', -
'15-MAR-98', '19-MAR-98', '17-JAN-98', '18-JAN-98', -
'22-JAN-98', '25-JAN-98', '03-FEB-98', '10-FEB-98', -
'19-FEB-98', '22-FEB-98', '23-FEB-98', '26-FEB-98'
.
.
.
ADVISE_PARTITIONING_DIMENSIONファンクションは、スパース性アドバイザによってパーティション化されたディメンションがある場合は、それを識別します。スパース性アドバイザによってキューブがパーティション化されていない場合はNULLを返します。
|
注意: OLAPワークシート内からはこのファンクションを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
構文
ADVISE_PARTITIONING_DIMENSION (
cubename IN VARCHAR2,
sources IN dbms_aw$_dimension_sources_t,
advtable IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2;
例
次のプログラムの抜粋は、スパース性アドバイザの使用後に結果を問い合せる際に使用するADVISE_PARTITIONING_DIMENSIONファンクションを示しています。
DECLARE
dimsources dbms_aw$_dimension_sources_t;
BEGIN
-- Calls to ADD_DIMENSION_SOURCE and ADVISE_SPARSITY omitted here
.
.
.
dbms_output.put_line('Partitioning Dimension: ' ||
dbms_aw.advise_partitioning_dimension('units_cube', dimsources,
'aw_sparsity_advice'));
END;
/
このプログラムでは、DBMS_OUTPUTを使用して、パーティション化ディメンション(この場合はTIMEディメンション)を表示します。
Partitioning Dimension: time
ADVISE_PARTITIONING_LEVELファンクションは、ディメンションのパーティション化を行う際にスパース性アドバイザで使用されたレベルを返します。スパース性アドバイザによってキューブがディメンション化されていない場合はNULLを返し、ディメンション階層がレベルベースでない場合は例外が発生します。
|
注意: OLAPワークシート内からはこのファンクションを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
構文
ADVISE_PARTITIONING_LEVEL (
cubename IN VARCHAR2,
sources IN dbms_aw$_dimension_sources_t,
advtable IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2;
例
次のプログラムの抜粋は、スパース性アドバイザの使用後に結果を問い合せる際に使用するADVISE_PARTITIONING_LEVELファンクションを示しています。
DECLARE
dimsources dbms_aw$_dimension_sources_t;
BEGIN
-- Calls to ADD_DIMENSION_SOURCE and ADVISE_SPARSITY omitted here
.
.
.
dbms_output.put_line('Partitioning Level: ' ||
dbms_aw.advise_partitioning_level('units_cube', dimsources,
'aw_sparsity_advice'));
END;
/
このプログラムでは、DBMS_OUTPUTを使用して、パーティション化レベル(この場合はYEAR)を表示します。
Partitioning Level: year
ADVISE_RELプロシージャは、アナリティック・ワークスペースでディメンションを事前集計する方法を決定する際に役立ちます。事前集計するディメンションの割合を指定すると、ADVISE_RELによりディメンション・メンバーのセットがお薦めされます。
ADVISE_RELプロシージャは、入力として、ファミリ・リレーション、値セット、事前計算の割合をとります。ファミリ・リレーションは、ディメンションのメンバー間の階層関係を指定するオブジェクトです。値セットは、分析されるディメンションから定義する必要があります。指定した事前計算の割合に基づき、ADVISE_RELは値セットのディメンション・メンバーの組合せを返します。
|
注意: OLAPワークシート内からはこのプロシージャを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
構文
ADVISE_REL (
family_relation_name IN VARCHAR2,
valueset_name IN VARCHAR2,
precompute_percentage IN INTEGER DEFAULT 20,
compressed IN BOOLEAN DEFAULT FALSE);
パラメータ
表B-8 ADVISE_RELプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ディメンション、およびディメンション・メンバー間の階層関係を指定する、ファミリ・リレーションの名前。 |
|
|
プロシージャの結果を格納する値セットの名前。値セットは、ファミリ・リレーションのディメンションから定義する必要がある。値セットが空でない場合、 |
|
|
事前集計するディメンションの割合。デフォルトは20%。 |
|
|
通常のコンポジット( |
ADVISE_SPARSITYプロシージャは、ADD_DIMENSION_SOURCEプロシージャで提供されるディメンションに関する情報を使用し、スパース性についてファクト表を分析します。SPARSITY_ADVICE_TABLEプロシージャで作成される表に、分析結果を移入します。
|
注意: OLAPワークシート内からはこのプロシージャを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
出力の説明
表B-9で、ADVISE_SPARSITYによって生成される情報を説明します。
表B-9 出力列の説明
| 列 | データ型 | NULL | 説明 |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
キューブのディメンションの論理名。 |
|
|
|
ディメンション表に関連するファクト(ソース・ファクト表)のディメンション列の名前。 |
|
|
|
|
ディメンション表の名前。 |
|
|
|
|
全レベルのディメンション・メンバーの総数。 |
|
|
|
|
リーフ(または最小集計)レベルのディメンション・メンバーの数。 |
|
|
|
|
|
ディメンションのスパース性の評価( |
|
|
|
|
ディメンションの推奨される順序。 |
|
|
|
他のディメンションと比較したスパース性を示す数。この数が大きくなるほど、ディメンションはスパースになる。 |
|
|
|
|
|
|
|
|
|
このパーティションに格納する必要のある全ディメンション・メンバーのリスト。このリストは、 |
|
|
|
|
このパーティションにおける最上位レベルのディメンション・メンバーのリスト。 |
構文
ADVISE_SPARSITY (
fact IN VARCHAR2,
cubename IN VARCHAR2,
dimsources IN dbms_aw$_dimension_sources_t,
advmode IN BINARY_INTEGER DEFAULT ADVICE_DEFAULT,
partby IN BINARY_INTEGER DEFAULT PARTBY_DEFAULT,
advtable IN VARCHAR2 DEFAULT NULL);
パラメータ
表B-10 ADVISE_SPARSITYプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ソースのファクト表の名前。 |
|
|
アナリティック・ワークスペースの論理キューブの名前など、分析されるファクトの名前。 |
|
|
|
|
|
表示したいアドバイスのレベル。次の値のいずれかを選択する。 DBMS_AW.ADVICE_DEFAULTDBMS_AW.ADVICE_FASTDBMS_AW.ADVICE_FULL |
|
|
パーティション化を制御するキーワード。次の値のいずれかを使用する。
|
|
|
分析結果を格納するためにプロシージャで作成される表の名前。 |
例
次のPL/SQLプログラムの抜粋では、UNITS_HISTORY_FACT表のスパース性を分析しています。
DECLARE
dimsources dbms_aw$_dimension_sources_t;
BEGIN
-- Calls to ADD_DIMENSION_SOURCE for each dimension in the cube
.
.
.
dbms_aw.advise_sparsity('units_history_fact', 'units_cube', dimsources,
dbms_aw.advice_default);
END;
/
次のSELECTコマンドは、分析結果を表示します。ここでは、1つの稠密なディメンション(CHANNEL)と3つの比較的スパースなディメンション(PRODUCT、CUSTOMER、TIME)があることが示されています。
SELECT fact, dimension, dimcolumn, membercount nmem, leafcount nleaf, advice, density
FROM aw_sparsity_advice
WHERE cubename='units_cube';
FACT DIMENSION DIMCOLUMN NMEM NLEAF ADVICE DENSITY
-------------------- ------------ ------------ ----- ------ ------------ ----------
units_history_fact channel channel_id 3 3 DENSE .86545382
units_history_fact product item_id 36 36 SPARSE .98706809
units_history_fact customer ship_to_id 61 62 SPARSE .99257713
units_history_fact time month_id 96 80 SPARSE .99415964
AW_ATTACHプロシージャは、アナリティック・ワークスペースをSQLセッションにアタッチして、コンテンツにアクセスできるようにします。アタッチされたアナリティック・ワークスペースは、明示的にデタッチするかセッションを終了するまで、アタッチされたままとなります。
AW_ATTACHを使用してアナリティック・ワークスペースを作成することもできますが、アナリティック・ワークスペースの作成には専用のプロシージャAW_CREATEがあります。
|
注意: OLAPワークシート内からはこのプロシージャを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
構文
AW_ATTACH (
awname IN VARCHAR2,
forwrite IN BOOLEAN DEFAULT FALSE,
createaw IN BOOLEAN DEFAULT FALSE,
attargs IN VARCHAR2 DEFAULT NULL,
tablespace IN VARCHAR2 DEFAULT NULL);
AW_ATTACH (
schema IN VARCHAR2,
awname IN VARCHAR2,
forwrite IN BOOLEAN DEFAULT FALSE,
createaw IN BOOLEAN DEFAULT FALSE,
attargs IN VARCHAR2 DEFAULT NULL,
tablespace IN VARCHAR2 DEFAULT NULL);
パラメータ
表B-11 AW_ATTACHプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
awnameを所有するスキーマ。 |
|
|
createawが |
|
|
|
|
|
|
|
|
|
AW_COPYプロシージャは、あるアナリティック・ワークスペースのオブジェクト定義およびデータを新しいアナリティック・ワークスペースにコピーします。
AW_COPYにより、元のワークスペースがデタッチされ、新しいワークスペースが最初に読取り/書込みアクセス権でアタッチされます。
|
注意: OLAPワークシート内からはこのプロシージャを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
構文
AW_COPY (
oldname IN VARCHAR2,
newname IN VARCHAR2,
tablespace IN VARCHAR2 DEFAULT NULL,
partnum IN NUMBER DEFAULT 8);
AW_CREATEプロシージャは、空のアナリティック・ワークスペースを新規作成し、セッションにおける現行のワークスペースにします。
現行のワークスペースは、アタッチされたワークスペースのリストの最初に表示されます。
|
注意: OLAPワークシート内からはこのプロシージャを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
構文
AW_CREATE (
awname IN VARCHAR2 ,
tablespace IN VARCHAR2 DEFAULT NULL ,
partnum IN NUMBER DEFAULT 8 );
AW_CREATE (
schema IN VARCHAR2 ,
awname IN VARCHAR2 ,
tablespace IN VARCHAR2 DEFAULT NULL);
パラメータ
表B-13 AW_CREATEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
awnameを所有するスキーマ。 |
|
|
新しいアナリティック・ワークスペースの名前。この名前は、Oracle Databaseの表に関するネーミング要件に準拠する必要がある。このプロシージャは、アナリティック・ワークスペースを格納するAW$awnameという表を作成する。 |
|
|
アナリティック・ワークスペースが作成される表領域。このパラメータを省略した場合、アナリティック・ワークスペースはデフォルトの表領域に作成される。 |
|
|
|
例
次のコマンドにより、GLOBAL_FINANCEという空のアナリティック・ワークスペースを新規作成します。新しいアナリティック・ワークスペースは、ユーザーのデフォルトの表領域で8つのパーティションを持つAW$GLOBAL_FINANCEという表に格納されます。
EXECUTE dbms_aw.aw_create('global_finance');
次のコマンドにより、GLOBALスキーマにDEMOというアナリティック・ワークスペースが作成されます。AW$DEMOは、2つのパーティションを持ち、GLOBAL表領域に格納されます。
EXECUTE dbms_aw.aw_create('global.demo', 'global', 2);
AW_DETACHプロシージャは、セッションからアナリティック・ワークスペースをデタッチし、その内容にアクセスできないようにします。前回の更新以降に行った変更はすべて破棄されます。アナリティック・ワークスペースに対する変更の保存については、「AW_UPDATEプロシージャ」を参照してください。
AW_RENAMEプロシージャは、アナリティック・ワークスペースの名前を変更します。
|
注意: OLAPワークシート内からはこのプロシージャを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
AW_TABLESPACEファンクションは、特定のアナリティック・ワークスペースが格納される表領域の名前を返します。
|
注意: OLAPワークシート内からはこのファンクションを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
AW_TABLESPACE (
schema IN VARCHAR2,
awname IN VARCHAR2)
RETURN VARCHAR2;
AW_UPDATEプロシージャは、永続データベース表のアナリティック・ワークスペースに対する変更を保存します。データベースに保存されるこの表の更新バージョンについては、セッションを終了する前にSQL COMMIT文を発行する必要があります。
更新対象のアナリティック・ワークスペースを指定しない場合、AW_UPDATEは、読取り/書込みアクセス権で現在アタッチされているユーザー定義のワークスペースをすべて更新します。
|
注意: OLAPワークシート内からはこのプロシージャを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
構文
AW_UPDATE (
awname IN VARCHAR2 DEFAULT NULL);
AW_UPDATE (
schema IN VARCHAR2 DEFAULT NULL,
awname IN VARCHAR2 DEFAULT NULL);
CONVERTプロシージャは、アナリティック・ワークスペースの格納フォーマットを9iから10gに変換します。OLAP Worksheet内からはこのプロシージャを実行できないため、SQL*PlusなどのSQLツール内で実行してください。
|
注意: dbms_aw.convertプロシージャの発行は、Oracle 9iのアナリティック・ワークスペースをOracle 10gのワークスペースにアップグレードする際の小さな手順の1つにすぎません。Oracle 9iのアナリティック・ワークスペースをアップグレードする手順の詳細は、『Oracle OLAPアプリケーション開発者ガイド 10gリリース2(10.2)』を参照してください。 |
|
関連項目: アナリスティック・ワークスペースをOracle 11gの格納フォーマットに変換する方法の詳細は、『Oracle OLAPユーザーズ・ガイド』を参照してください。 |
構文
CONVERT (
original_aw IN VARCHAR2);
CONVERT (
original_aw IN VARCHAR2,
converted_aw IN VARCHAR2,
tablespace IN NUMBER DEFAULT);
例
この例では、アナリティック・ワークスペースを変換のソースとターゲットの両方に使用し、1ステップで変換を実行しています。
EXECUTE dbms_aw.convert('global');
次の例では、複数のステップで変換を実行しています。ワークスペース内の完全修飾されたオブジェクト名にはワークスペース名が含まれるため、変換したワークスペースの名前は、元のワークスペースと同一である必要があります。
EXECUTE dbms_aw.rename('global', 'global_temp');
EXECUTE dbms_aw.convert('global_temp', 'global');
EXECUTE dbms_aw.delete('global_temp');
EVAL_NUMBERファンクションは、アナリティック・ワークスペースの数式を評価し、結果の数を返します。
EVAL_NUMBERファンクションをSELECT from DUAL文に指定して、アナリティック・ワークスペースで定義される数値定数を返すことができます。詳細は、『Oracle Database SQL言語リファレンス』のDUAL表からの選択についての説明を参照してください。
|
注意: OLAPワークシート内からはこのファンクションを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
パラメータ
表B-20 EVAL_NUMBERファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
数値として評価されるOLAP DML式。第2章「OLAP DML式」を参照。 |
EVAL_TEXTファンクションは、アナリティック・ワークスペースのテキスト式を評価し、結果の文字列を返します。
EVAL_TEXTファンクションをSELECT from DUAL文に指定して、アナリティック・ワークスペースで定義される文字定数を返すことができます。詳細は、『Oracle Database SQL言語リファレンス』のDUAL表からの選択についての説明を参照してください。
|
注意: OLAPワークシート内からはこのファンクションを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
EXECUTEプロシージャは、1つ以上のOLAP DMLコマンドを実行し、出力をプリンタ・バッファへ送信します。通常は、対話型のSQLセッションでアナリティック・ワークスペースのデータを操作する際に使用します。RUNプロシージャとは対照的に、EXECUTEはエラー発生後もコマンドの処理を続行します。
SQL*Plusを使用している場合、次のコマンドを発行することにより、プリンタ・バッファを画面に表示できます。
SET SERVEROUT ON
他のプログラムを使用している場合、同様の設定についてはマニュアルを参照してください。
入力および出力は4Kに制限されます。さらに大きい値については、このパッケージのINTERPファンクションおよびINTERPCLOBファンクションを参照してください。
OLAP DML OUTFILEコマンドを使用して出力をリダイレクトした場合、このプロシージャではDMLコマンドの出力は印刷されません。
|
注意: OLAPワークシート内からはこのプロシージャを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
パラメータ
表B-22 EXECUTEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
セミコロンで区切られた1つ以上のOLAP DMLコマンド。「OLAP DMLコマンドで引用符を使用する場合のガイドライン」を参照。 |
|
|
OLAPコマンドに対するOLAPエンジンからの出力。 |
例
次の例では、GLOBALアナリティック・ワークスペースをアタッチしてTIMEのオブジェクト定義を示しています。
EXECUTE dbms_aw.aw_attach('global'); EXECUTE dbms_aw.execute('DESCRIBE time'); DEFINE TIME DIMENSION TEXT
次の例では、エラー発生後にEXECUTEがコマンドの処理を続行する方法を示しています。
EXECUTE dbms_aw.execute('SHOW DECIMALS'); 2 EXECUTE dbms_aw.execute('CALL nothing; DECIMALS=0'); BEGIN dbms_aw.execute('CALL nothing; DECIMALS=0'); END; * ERROR at line 1: ORA-34492: Analytic workspace object NOTHING does not exist. ORA-06512: at "SYS.DBMS_AW", line 93 ORA-06512: at "SYS.DBMS_AW", line 122 ORA-06512: at line 1 EXECUTE dbms_aw.execute('SHOW DECIMALS'); 0
次の例では、エラー発生後にEXECUTEがコマンドの処理を続行する方法を示しています。
SQL> execute dbms_aw.execute('call nothing; colwidth=20');
BEGIN dbms_aw.execute('call nothing; colwidth=20'); END;
*
ERROR at line 1:
ORA-34492: Analytic workspace object NOTHING does not exist.
ORA-06512: at "SYS.DBMS_AW", line 90
ORA-06512: at "SYS.DBMS_AW", line 119
ORA-06512: at line 1
SQL> execute dbms_aw.execute('show colwidth');
20
PL/SQL procedure successfully completed.
このファンクションは、最近実行したこのパッケージのINTERPファンクションまたはINTERPCLOBファンクションからセッション・ログを返します。
このファンクションで返されるセッション・ログを印刷するには、DBMS_AW.PRINTLOGプロシージャを使用します。
|
注意: OLAPワークシート内からはこのファンクションを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
例
次の例では、INTERPへのコールによって返されるセッション・ログ、およびGETLOGによって返される同一のセッション・ログを示しています。
EXECUTE dbms_aw.printlog(dbms_aw.interp('AW ATTACH global; REPORT units_cube')); UNITS_CUBE -------------- TIME CUSTOMER PRODUCT CHANNEL EXECUTE dbms_aw.printlog(dbms_aw.getlog()); UNITS_CUBE -------------- TIME CUSTOMER PRODUCT CHANNEL
INFILEプロシージャは、指定したファイルのOLAP DMLコマンドを評価し、そのコマンドを現行のアナリティック・ワークスペースで実行します。
|
注意: OLAPワークシート内からはこのプロシージャを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
INTERPファンクションは、1つ以上のOLAP DMLコマンドを実行し、コマンドが実行されたセッションのログを返します。通常、EXECUTEプロシージャの出力制限4Kを超える出力が必要になりうる場合に、アプリケーションで使用されます。
INTERPファンクションへの入力は4Kに制限されます。さらに大きい入力値については、このパッケージのINTERPCLOBファンクションを参照してください。
OLAP DML OUTFILEコマンドを使用して出力をリダイレクトした場合、このファンクションではDMLコマンドの出力は返されません。
このパッケージのPRINTLOGプロシージャに対する引数としてINTERPファンクションを使用して、セッション・ログを表示できます。例を参照してください。
|
注意: OLAPワークシート内からはこのファンクションを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
パラメータ
表B-24 INTERPファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
セミコロンで区切られた1つ以上のOLAP DMLコマンド。「OLAP DMLコマンドで引用符を使用する場合のガイドライン」を参照。 |
INTERPCLOBファンクションは、1つ以上のOLAP DMLコマンドを実行し、コマンドが実行されたセッションのログを返します。通常、INTERPファンクションの入力制限4Kを超える入力が必要になりうる場合に、アプリケーションで使用されます。
OLAP DML OUTFILEコマンドを使用して出力をリダイレクトした場合、このファンクションではOLAP DMLコマンドの出力は返されません。
このパッケージのPRINTLOGプロシージャに対する引数としてINTERPCLOBファンクションを使用して、セッション・ログを表示できます。例を参照してください。
パラメータ
表B-25 INTERPCLOBファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
セミコロンで区切られた1つ以上のOLAP DMLコマンド。「OLAP DMLコマンドで引用符を使用する場合のガイドライン」を参照。 |
例
次のSQL*Plusセッションのサンプルでは、ELECTRONICSというアナリティック・ワークスペースを作成し、その内容をdbsディレクトリ・オブジェクトに格納されたEIFファイルからインポートして、アナリティック・ワークスペースの内容を表示します。
SET serverout ON size 1000000 EXECUTE dbms_aw.printlog(dbms_aw.interpclob('AW ATTACH global; DESCRIBE')); DEFINE GEN_OBJ_ROLES DIMENSION TEXT DEFINE GEN_AW_OBJS VARIABLE TEXT <GEN_OBJ_ROLES> DEFINE ALL_DIMENSIONS DIMENSION TEXT DEFINE DIM_OBJ_LIST DIMENSION TEXT DEFINE DIM_AW_OBJS VARIABLE TEXT <ALL_DIMENSIONS DIM_OBJ_LIST> . . .
INTERP_SILENTプロシージャは、1つ以上のOLAP DMLコマンドを実行し、コマンドからの出力をすべて抑止します。OLAPコマンド・インタプリタからのエラー・メッセージは抑止しません。
INTERP_SILENTファンクションへの入力は4Kに制限されます。OLAP DMLコマンドの出力を表示するには、EXECUTEプロシージャか、INTERPファンクションまたはINTERPCLOBファンクションを使用します。
|
注意: OLAPワークシート内からはこのプロシージャを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
パラメータ
表B-26 INTERP_SILENTファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
セミコロンで区切られた1つ以上のOLAP DMLコマンド。「OLAP DMLコマンドで引用符を使用する場合のガイドライン」を参照。 |
例
次のコマンドにより、EXECUTEとINTERP_SILENTのメッセージ処理の違いを示します。いずれのコマンドも、読取り専用モードでGLOBALアナリティック・ワークスペースをアタッチします。ただし、EXECUTEは警告メッセージを表示しますが、INTERP_SILENTは表示しません。
EXECUTE dbms_aw.execute('AW ATTACH global'); IMPORTANT: Analytic workspace GLOBAL is read-only. Therefore, you will not be able to use the UPDATE command to save changes to it. EXECUTE dbms_aw.interp_silent('AW ATTACH global');
OLAP_ONファンクションは、OLAPオプションがデータベースにインストールされているかどうかを示すブールを返します。
|
注意: OLAPワークシート内からはこのファンクションを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
OLAP_RUNNINGファンクションは、OLAPオプションが現行のセッションで初期化されているかどうかを示すブールを返します。初期化が行われるのは、OLAP DMLコマンドを(直接、またはOLAP PL/SQLかJavaパッケージを使用して)実行したり、アナリティック・ワークスペースを問い合せたり、STARTUPプロシージャを実行する場合です。
|
注意: OLAPワークシート内からはこのファンクションを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
例
次のPL/SQLスクリプトでは、OLAP環境が初期化されているかどうかをテストし、されていない場合は初期化を開始します。
BEGIN
IF dbms_aw.olap_running() THEN
dbms_output.put_line('OLAP is already running');
ELSE
dbms_aw.startup;
IF dbms_aw.olap_running() THEN
dbms_output.put_line('OLAP started successfully');
ELSE
dbms_output.put_line('OLAP did not start. Is it installed?');
END IF;
END IF;
END;
/
OLAP started successfully
このプロシージャは、このパッケージのINTERPファンクション、INTERPCLOBファンクションまたはGETLOGファンクションで返されたセッション・ログを、PL/SQLのDBMS_OUTPUTパッケージを使用してプリンタ・バッファに送信します。
SQL*Plusを使用している場合、次のコマンドを発行することにより、プリンタ・バッファを画面に表示できます。
SET SERVEROUT ON SIZE 1000000
SIZE句により、デフォルト・サイズの4Kからバッファを増やします。
他のプログラムを使用している場合、同様の設定についてはマニュアルを参照してください。
|
注意: OLAPワークシート内からはこのプロシージャを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
RUNプロシージャは、1つ以上のOLAP DMLコマンドを実行し、出力をプリンタ・バッファへ送信します。通常は、対話型のSQLセッションでアナリティック・ワークスペースのデータを操作する際に使用します。EXECUTEプロシージャとは対照的に、RUNはエラーが発生した場合にはコマンドの処理を停止します。
SQL*Plusを使用している場合、次のコマンドを発行することにより、プリンタ・バッファを画面に表示できます。
SET SERVEROUT ON
他のプログラムを使用している場合、同様の設定についてはマニュアルを参照してください。
OLAP DML OUTFILEコマンドを使用して出力をリダイレクトした場合、このプロシージャではDMLコマンドの出力は印刷されません。
|
注意: OLAPワークシート内からはこのプロシージャを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
構文
RUN (
olap_commands IN STRING,
silent IN BOOLEAN DEFAULT FALSE);
RUN (
olap_commands IN CLOB,
silent IN BOOLEAN DEFAULT FALSE);
RUN (
olap_commands IN STRING,
output OUT STRING);
RUN (
olap_commands IN STRING,
output IN OUT CLOB);
RUN (
olap_commands IN CLOB,
output OUT STRING);
RUN (
olap_commands IN CLOB,
output IN OUT CLOB);
パラメータ
表B-28 EXECUTEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
セミコロンで区切られた1つ以上のOLAP DMLコマンド。「OLAP DMLコマンドで引用符を使用する場合のガイドライン」を参照。 |
|
|
OLAP DMLコマンドからの出力を抑止する必要があるかどうかを通知するブール値。(OLAPエンジンからのエラー・メッセージは、この設定に関係なく、抑止されない。) |
|
|
OLAPコマンドに対するOLAPエンジンからの出力。 |
例
次のSQL*Plusセッションのサンプルでは、XADEMOというアナリティック・ワークスペースをアタッチし、XADEMOにCOST_PPという計算式を作成して、新しい計算式の定義を表示しています。
EXECUTE dbms_aw.run('DESCRIBE time');
DEFINE TIME DIMENSION TEXT
次の例では、エラー発生後にRUNがコマンドの実行を停止する方法を示しています。
EXECUTE dbms_aw.run('SHOW DECIMALS'); 0 EXECUTE dbms_aw.run('CALL nothing; DECIMALS=4'); BEGIN dbms_aw.run('CALL nothing; DECIMALS=4'); END; * ERROR at line 1: ORA-34492: Analytic workspace object NOTHING does not exist. ORA-06512: at "SYS.DBMS_AW", line 58 ORA-06512: at "SYS.DBMS_AW", line 134 ORA-06512: at line 1 EXECUTE dbms_aw.run('SHOW DECIMALS'); 0
SHUTDOWNプロシージャは、現行のOLAPセッションを終了します。
デフォルトでは、SHUTDOWNプロシージャは、アタッチされた読取り/書込み可能なワークスペースのいずれに対しても変更が途中でない場合にのみセッションを終了します。ワークスペースを更新せずにセッションを終了するには、forceパラメータを指定します。
|
注意: OLAPワークシート内からはこのプロシージャを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
SPARSITY_ADVICE_TABLEプロシージャは、ADVISE_SPARSITYプロシージャによって生成されたアドバイスを格納する表を作成します。
|
注意: OLAPワークシート内からはこのプロシージャを実行できません。SQL*PlusなどのSQLツール内で実行してください。 |
パラメータ
表B-30 SPARSITY_ADVICE_TABLEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
表の名前。デフォルトの名前は、自身のスキーマで作成される |