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

前
 
次
 

UPDATE_DIMENSION_MEMBER

UPDATE_DIMENSION_MEMBERプログラムを実行すると、1つ以上の階層でOLAPキューブ・ディメンション・メンバーのレベルと親が設定されます。


注意:

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

構文

CALL UPDATE_DIMENSION_MEMBER(member_id, logical_dim, hier_list, level_name, -

parent-member_id [, auto_compile ])

パラメータ

CALL

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

member_id

レベルと親の情報を設定するメンバーを示すテキスト式。

logical_dim

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

hier_list

ディメンション・メンバーのレベルと親を設定する全階層のOracleデータ・ディクショナリ名で構成された複数行のテキスト式。1行ごとに1つの階層を指定します。

キューブ・ディメンションの全階層でメンバーの情報を指定する場合は、NAを指定します。

level_name

レベル階層の場合に、プログラムによってキューブ・ディメンションのメンバーが設定される階層レベルを指定するテキスト値。レベル階層の場合、level_nameに指定する値は、次の条件を満たしている必要があります。

  • parent_member_idに指定する値と互換性があること。

  • 既存のキューブ・ディメンション・メンバーと同じ階層レベルであること(キューブ・ディメンション・メンバーはすべての階層で同じレベルに追加する必要があります)。

メンバーが値階層に含まれている場合(つまりレベルが存在しない場合)は、NAを指定します。

parent_member_id

キューブ・ディメンションの階層に追加するディメンション・メンバーの親メンバーの値を指定するテキスト式。ディメンション・メンバーを最上位メンバーとして追加する場合は、NAを指定します。

auto_compile

変更をすぐに有効にするかどうかを指定するブール式。デフォルト値であるTRUEを指定すると、アナリティック・ワークスペースの変更内容のうち、キューブ・ディメンション・メンバーに追加する必要のあるものはすべて即座に更新されます。パフォーマンス上の理由から、FALSEはコンパイルの実行前に大量の変更を行う場合のみ指定してください。この場合、アナリティック・ワークスペース・オブジェクトの値が有効になる前(たとえば、属性値が下位レベルに広がる前や時間ディメンションの値セットを更新する前など)に、キューブ・ディメンションを明示的にコンパイルする必要があります(「キューブ・ディメンションの明示的なコンパイル」を参照)。

例10-170 OLAPキューブ・ディメンションの階層の変更

my_timeという階層キューブ・ディメンションがあり、その階層を変更するために値L3_2を最上位レベルからL2_2の子になるレベルに移動するとします。

  1. 次のSQL文を実行して、移動前のmy_timeキューブ・ディメンションの値についてレポートを生成します。

    select dim_key||'  '||level_name||'  '||parent
        from my_time_lvl_hier_view
        order by dim_key asc;
     
    DIM_KEY||''||LEVEL_NAME||''||PARENT
    --------------------------------------------------------------------------------
    L1_0  L1
    L1_1  L1
    L2_1  L2  L1_1
    L2_2  L2  L1_1
    L3_1  L3  L2_1
    L3_2  L3  L2_1
    L3_3  L3  L2_1
    L3_4  L3  L2_2
    L3_5  L3  L2_2
     
    9 rows selected.
     
    
  2. 次のPL/SQL文を発行し、ユーザー作成のMOVE_L3_3プログラムをコールして移動を実行します。

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

    次に示すMOVE_L3_3プログラムの定義から確認できるように、実際の移動はOLAP DMLから提供されるPDATE_DIMENSION_MEMBERプログラムをコールすることで実行されます。

    DEFINE MOVE_L3_3 PROGRAM
    PROGRAM
     
      " Change the parent of L3_2 to L2_2
      CALL UPDATE_DIMENSION_MEMBER('L3_3', 'my_time', NA, 'L3', 'L2_2')
      UPDATE
      C0MMIT
    END
    
  3. 次の文を発行して、移動後のmy_timeディメンションの値についてレポートを生成します。

    select dim_key||'  '||level_name||'  '||parent
         from my_time_lvl_hier_view
         order by dim_key asc;
     
    DIM_KEY||''||LEVEL_NAME||''||PARENT
    --------------------------------------------------------------------------------
    L1_0  L1
    L1_1  L1
    L2_1  L2  L1_1
    L2_2  L2  L1_1
    L3_1  L3  L2_1
    L3_2  L3  L2_1
    L3_3  L3  L2_2
    L3_4  L3  L2_2
    L3_5  L3  L2_2
     
    9 rows selected.
     
    
  4. 次の文を発行し、my_timeの新しい階層でmy_cubeを解決します。

    exec dbms_cube.build(script => 'MY_CUBE USING (SOLVE)', add_dimensions => false);
     
    
  5. my_timeの階層が新しくなったので、次の文を発行して、salesおよびmoving_sales(my_cubeのメジャー)の値に関するレポートを生成します。

    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
    L2_1   2   2
    L2_2  12  14
    L3_1   1   1
    L3_2   1   2
    L3_3  10  11
    L3_4   1  11
    L3_5   1   2
     
    9 rows selected.