SET_INCLUDED_MODEL プログラムを実行すると、事前定義されたキューブ・ディメンションのモデルへのINCLUDEモデル文の追加、または事前定義されたキューブ・ディメンションのモデルからのINCLUDEモデル文の削除が行われます。このプログラムの実行で行われる変更はトランザクショナルではなく、プログラムの一部としてCOMMITが自動的に実行されます。
パラメータ
SET_INCLUDED_MODELは引数を持つOLAP DMLプログラムであるため、OLAP DML CALL文を使用して起動します。
変更するキューブ・ディメンションのOracleデータ・ディクショナリ名を示すテキスト式。
キューブ・ディメンションに関連付けられている論理モデルの名前を示すテキスト式。
INCLUDE文を追加するOLAP DML作成のモデルを示すテキスト式。
INCLUDE文を削除するには、NA
を指定します。
例
例10-118 OLAPキューブの静的および動的モデルの作成
my_cube
という名前のOLAPキューブをディメンション化する、my_time
という名前のOLAPキューブ・ディメンションが作成されているとします。my_cube
内には、2つのメジャー(salesおよびmoving_sales)があります。次に、my_cube
の静的および動的モデルを作成します。
静的モデルを作成するには、次のPL/SQL文を実行して、setup_pre_model
という名前のユーザー作成のOLAP DMLプログラムを実行します。
exec dbms_aw.execute('call my_util_aw!setup_pre_model');
次のsetup_pre_modelプログラムの定義からわかるように、モデルは実際にはSET_INCLUDED_MODELプログラムを使用して定義され、ADD_CUBE_MODELプログラムを使用して追加されます。これらのプログラムはどちらもOLAP DMLから提供されるプログラムです。
DEFINE SETUP_PRE_MODEL PROGRAM PROGRAM VARIABLE _pre_model text VARIABLE _aw_dim text _pre_model = 'my_aw!my_pre_model' _aw_dim = OBJORG(DIM 'my_time') DEFINE &_pre_model model CONSIDER &_pre_model MODEL JOINLINES(JOINCHARS('dimension ' _aw_dim) - JOINCHARS(_aw_dim '(\'L3_3\')=10') - 'end') CALL SET_INCLUDED_MODEL('my_time', 'pre_model', _pre_model) CALL ADD_CUBE_MODEL('my_cube', 'my_time', 'pre_model', YES) END
次のPL/SQL文を実行して、my_time
ディメンションをロードし、my_cube
をロードして解決します。
exec dbms_cube.build('MY_CUBE');
これで、次の文を発行することにより、静的モデルを使用したsalesおよびmoving salesの初期値についてのレポートを生成できます。
select my_time||' '||lpad(sales, 2)||' '||lpad(moving_sales, 2) from my_cube_view order by my_time asc; MY_TIME||''||LPAD(SALES,2)||''||LPAD(MOVING_SALES,2) -------------------------------------------------------------------- L1_1 14 14 L2_1 12 12 L2_2 2 14 L3_1 1 1 L3_2 1 2 L3_3 10 11 L3_4 1 11 L3_5 1 2 8 rows selected.
L1_2 = (L2_2' * 2)となる動的モデルを作成するには、次のPL/SQL文を実行して、SETUP_POST_MODELという名前のユーザー作成のOLAP DMLプログラムをコールします。
exec dbms_aw.execute('call my_util_aw!setup_post_model');
次に示すユーザー作成のsetup_post_model
プログラムの定義からわかるように、モデルは実際にはSET_INCLUDED_MODELプログラムを使用して定義され、ADD_CUBE_MODELプログラムを使用して追加されます。これらのプログラムはどちらもOLAP DMLから提供されるプログラムです。
DEFINE SETUP_POST_MODEL PROGRAM PROGRAM VARIABLE _post_model text VARIABLE _aw_dim text VARIABLE _start_date text VARIABLE _timespan text VARIABLE _member text _post_model = 'my_aw!my_post_model' _aw_dim = OBJORG(DIM 'my_time') _start_date = OBJORG(ATTRIBUTE 'my_time' 'start_date') _timespan = OBJORG(ATTRIBUTE 'my_time' 'timespan') _member = 'L1_0' DEFINE &_post_model model CONSIDER &_post_model MODEL JOINLINES( - JOINCHARS('dimension ' _aw_dim) - JOINCHARS(_aw_dim '(\'' _member '\')=' _aw_dim '(\'L2_2\')*2') - 'end') CALL SET_INCLUDED_MODEL('my_time', 'post_model', _post_model) CALL ADD_CUBE_MODEL('my_cube', 'my_time', 'post_model', NO) " Add _member to the dimension CALL ADD_DIMENSION_MEMBER(_member, 'my_time', NA, 'L1', NA, NO) CALL UPDATE_ATTRIBUTE_VALEU(_member, 'my_time', 'start_date', - &_start_date(&_aw_dim 'L1_1')-365, NO) CALL UPDATE_ATTRIBUTE_VALUE(_member, 'my_time', 'timespan', - &_timespan(&_aw_dim 'L1_1')) UPDATE COMMIT END
次の文を実行して、my_time
、sales
およびmoving_sales
の新しい値についてのレポートを生成します。
select my_time||' '||lpad(sales, 2)||' '||lpad(moving_sales, 2) from my_cube_view order by my_time asc; MY_TIME||''||LPAD(SALES,2)||''||LPAD(MOVING_SALES,2) -------------------------------------------------------------------- L1_0 4 4 L1_1 14 18 L2_1 12 12 L2_2 2 14 L3_1 1 1 L3_2 1 2 L3_3 10 11 L3_4 1 11 L3_5 1 2 9 rows selected.