ヘッダーをスキップ
Oracle® OLAP DMLリファレンス
11gリリース2 (11.2)
B61346-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

SET_INCLUDED_MODEL

SET_INCLUDED_MODEL プログラムを実行すると、事前定義されたキューブ・ディメンションのモデルへのINCLUDEモデル文の追加、または事前定義されたキューブ・ディメンションのモデルからのINCLUDEモデル文の削除が行われます。このプログラムの実行で行われる変更はトランザクショナルではなく、プログラムの一部としてCOMMITが自動的に実行されます。

構文

CALL SET_INCLUDED_MODEL(logical_dim, model_name, custom_model)

パラメータ

CALL

SET_INCLUDED_MODELは引数を持つOLAP DMLプログラムであるため、OLAP DML CALL文を使用して起動します。

logical_dim

変更するキューブ・ディメンションのOracleデータ・ディクショナリ名を示すテキスト式。

model_name

キューブ・ディメンションに関連付けられている論理モデルの名前を示すテキスト式。

custom_model

INCLUDE文を追加するOLAP DML作成のモデルを示すテキスト式。

INCLUDE文を削除するには、NAを指定します。

例10-118 OLAPキューブの静的および動的モデルの作成

my_cubeという名前のOLAPキューブをディメンション化する、my_timeという名前のOLAPキューブ・ディメンションが作成されているとします。my_cube内には、2つのメジャー(salesおよびmoving_sales)があります。次に、my_cubeの静的および動的モデルを作成します。

  1. 静的モデルを作成するには、次の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
    
  2. 次のPL/SQL文を実行して、my_timeディメンションをロードし、my_cubeをロードして解決します。

    exec dbms_cube.build('MY_CUBE');
    
  3. これで、次の文を発行することにより、静的モデルを使用した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.
     
    
  4. 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
     
    
  5. 次の文を実行して、my_timesalesおよび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.