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

前
 
次
 

UPDATE_ATTRIBUTE_VALUE

UPDATE_ATTRIBUTE_VALUEプログラムを実行すると、OLAPキューブ・ディメンション・メンバーの属性が変更されます。

このプログラムは、次のような属性を更新する場合に特に役立ちます。


注意:

キューブ・ディメンションまたはそのキューブ・ディメンションを含むキューブに対してマテリアライズド・ビューが存在する場合は、キューブ・ディメンションの変更に、このプログラムを使用できません。

構文

CALL UPDATE_ATTRIBUTE_MEMBER(dim_member_id, attribute_name, attribute_value -

[, auto_compile ])

パラメータ

CALL

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

dim_member_id

属性を変更するキューブ・ディメンション・メンバーの値を示すテキスト式。

logical_dim

dim_member_idがメンバーとなっているキューブ・ディメンションのOracleデータ・ディクショナリ名を示すテキスト式。

attribute_name

属性のOracleデータ・ディクショナリ名を示すテキスト式。

attribute_value

attribute_nameの値を指定するテキスト式。

auto_compile

関連するアナリティック・ワークスペース・オブジェクトを即時更新するかどうかを指定するブール式。

デフォルト値はTRUEです。この値を指定すると、アナリティック・ワークスペースの変更内容のうち、キューブ・ディメンション・メンバーの属性の更新に必要のあるものはすべて即座に更新されます。

パフォーマンス上の理由から、FALSEはコンパイルの実行前に大量の変更を行う場合のみ指定してください。この場合、アナリティック・ワークスペース・オブジェクトの値が有効になる前に、キューブ・ディメンションを明示的にコンパイルする必要があります(「キューブ・ディメンションの明示的なコンパイル」を参照)。


注意:

この引数に対して指定した値に関係なく、ディメンション・メンバーの属性は常に即時更新されます。これは、コンパイル中にエラーが通知された場合でも同様です。

例10-169 OLAPキューブ・ディメンションの属性の更新

この例では、OLAP DMLで提供されているUPDATE_ATTRIBUTE_VALUEプログラムを使用し、L1-2およびL1-2の子孫に対してmy_timeキューブ・ディメンションの属性を更新します。OLAP DMLで提供されているUPDATE_ATTRIBUTE_VALUEプログラムへのコールは、ユーザー作成のADD_L1_2_DATEというOLAP DMLプログラム内にあります。

  1. 次のPL/SQL文を発行して、ADD_L1_2_DATEというユーザー作成のOLAP DMLプログラムを実行し、L1_2およびその子孫のtime属性値を設定します。

    exec dbms_aw.execute('call my_util_aw!add_l1_2_dates');
    

    ユーザー作成のOLAP DMLプログラムADD_L1_2_DATEの定義を次に示します。OLAP DMLから提供されるUPDATE_ATTRIBUTE_VALUEプログラムへのコールに注意してください。

    DEFINE ADD_L1_2_DATES PROGRAM
    PROGRAM
      VARIABLE _aw_dim       text
      VARIABLE _start_date   text
      VARIABLE _timespan     text
    
      _aw_dim = OBJORG(DIM 'my_time')
      _start_date = OBJORG(ATTRIBUTE 'my_time' 'start_date')
      _timespan = OBJORG(ATTRIBUTE 'MY_TIME' 'timespan')
    
      " Updates the time attribute of L1_2, L2_3, L3_6, but does not compile
      CALL UPDATE_ATTRIBUTE_VALUE('L1_2', 'my_time', 'start_date', -
                                  &_start_date(&_aw_dim 'L1_1')+365, NO)
      CALL UPDATE_ATTRIBUTE_VALUE('L1_2', 'my_time', 'timespan', -
                                  &_timespan(&_aw_dim 'L1_1'), NO)
    
      CALL UPDATE_ATTRIBUTE_VALUE('L2_3', 'my_time', 'start_date', -
                                  &_start_date(&_aw_dim 'L1_2'), NO)
      CALL UPDATE_ATTRIBUTE_VALUE('L2_3', 'my_time', 'timespan', -
                                  &_timespan(&_aw_dim 'L2_1'), NO)
    
      CALL UPDATE_ATTRIBUTE_VALUE('L3_6', 'my_time', 'start_date', -
                                  &_start_date(&_aw_dim 'L1_2'), NO)
      CALL UPDATE_ATTRIBUTE_VALUE('L3_6', 'my_time', 'timespan', -
                                  &_timespan(&_aw_dim 'L3_1'), NO)
      UPDATE
      COMMIT
    END
    
  2. 次のSQL文を発行して、my_timeキューブ・ディメンションの属性を確認します。

    select dim_key||'  '||start_date||'  '||lpad(timespan, 3) 
        from my_time_view 
        order by dim_key asc;
    
    
    DIM_KEY||''||START_DATE||''||LPAD(TIMESPAN,3)
    ----------------------------------------------------------------------------
    L1_0  01-JAN-09  365
    L1_1  01-JAN-10  365
    L1_2  01-JAN-11  365
    L2_1  01-JAN-10   90
    L2_2  01-APR-10   61
    L2_3  01-JAN-11   90
    L3_1  01-JAN-10   31
    L3_2  01-FEB-10   28
    L3_3  01-MAR-10   31
    L3_4  01-APR-10   30
    L3_5  01-MAY-10   31
    L3_6  01-JAN-11   31
    
    12 rows selected.
    
  3. 次のSQL文を発行して、my_timeキューブ・ディメンションのコンパイルsalesおよびmoving_salesメジャーの値に関するレポートを生成します。メジャーの計算ではmy_timeキューブ・ディメンションの新しい属性が計算対象とならないことに注意します。

    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  24  27
    L1_1  14  38
    L1_2   3   3
    L2_1   2   5
    L2_2  12  14
    L2_3   3   3
    L3_1   1   4
    L3_2   1   2
    L3_3  10  11
    L3_4   1  11
    L3_5   1   2
    L3_6   3   3
    
    12 rows selected.
    
  4. 次のSQL文を発行し、my_timeキューブ・ディメンションをコンパイルします。

    exec dbms_cube.build('MY_TIME USING (COMPILE)');
    
  5. 次のSQL文を発行して、my_timeキューブ・ディメンションのコンパイルsalesおよびmoving_salesメジャーの値に関するレポートを生成します。今回のメジャーの計算ではmy_timeキューブ・ディメンションの新しい属性が計算対象となることに注意します。

    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  24  24
    L1_1  14  38
    L1_2   3  17
    L2_1   2   2
    L2_2  12  14
    L2_3   3  15
    L3_1   1   1
    L3_2   1   2
    L3_3  10  11
    L3_4   1  11
    L3_5   1   2
    L3_6   3   4
    
    12 rows selected.