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_T
DBMS_AW$_DIMENSION_SOURCE_T
DBMS_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_DEFAULT DBMS_AW.ADVICE_FAST DBMS_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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
表の名前。デフォルトの名前は、自身のスキーマで作成される |