The SET_INCLUDED_MODEL program adds an INCLUDE model statement to a previously-defined cube dimension's model, or deletes an INCLUDE model statement from a previously-defined cube dimension's model. The changes made when this program executes are not transactional; an automatic COMMIT is executed as part of the program.
See also:
"Cube-Aware OLAP DML Statements"Because SET_INCLUDED_MODEL is an OLAP DML program with arguments, you invoke it using the OLAP DML CALL statement.
A text expression that is the Oracle data dictionary name of the cube dimension being modified.
A text expression that is the name of the logical model that is associated with the cube dimension.
A text expression that is the OLAP DML-created model for which you want to add an INCLUDE statement.
See:
CREATE_LOGICAL_MODELTo remove an INCLUDE statement, specify NA.
Example 10-118 Creating Static and Dynamic Models for an OLAP Cube
Assume that you have created an OLAP cube dimension named my_time that dimensions an OLAP cube named my_cube. Within my_cube there are two measures: sales and moving_sales. Now you want to create static and dynamic models for my_cube.
To create a static model, execute the following PL/SQL statement that executes a user-written OLAP DML program named setup_pre_model.
exec dbms_aw.execute('call my_util_aw!setup_pre_model');
As you can see from the following definition of the setup_pre_model program, the model is actually defined using the SET_INCLUDED_MODEL program and added using the ADD_CUBE_MODEL program, both of which are provided with the 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
Load the my_time dimension and load and solve my_cube by executing the following the PL/SQL statement.
exec dbms_cube.build('MY_CUBE');
You can now report on the initial values of sales and moving sales with the static model by issuing the following statement.
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.
To create a dynamic model where L1_2 = (L2_2' * 2) execute the following PL/SQL statement that calls a user-written OLAP DML program named SETUP_POST_MODEL.
exec dbms_aw.execute('call my_util_aw!setup_post_model');
 
As you can see from the definition of the user-written setup_post_model program shown below, the model is actually defined using the SET_INCLUDED_MODEL program and added using the ADD_CUBE_MODEL program, both of which are provided with the 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
 
Execute the following statement to report on the new values of my_time, sales and 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.