次の方法で共有


キューブ ライトバックの活用 (MDX)

UPDATE CUBE ステートメントを使用してキューブを更新します。 このステートメントを使用すると、特定の値でタプルを更新できます。 UPDATE CUBE ステートメントを効果的に使用してキューブを更新するには、ステートメントの構文、発生する可能性があるエラー条件、およびキューブに対する更新の影響を理解する必要があります。

UPDATE CUBE ステートメントの構文

次の構文では、UPDATE CUBE ステートメントについて説明します。

UPDATE [CUBE] <Cube_Name> SET <tuple>.VALUE = <value> [,<tuple>.VALUE = <value>...]  
 [ USE_EQUAL_ALLOCATION | USE_EQUAL_INCREMENT |  
  USE_WEIGHTED_ALLOCATION [BY <weight value_expression>] |  
  USE_WEIGHTED_INCREMENT [BY <weight value_expression>] ]   

タプルに座標の完全なセットが指定されていない場合、指定されていない座標は階層の既定のメンバーを使用します。 識別されるタプルは、 Sum 関数で集計されたセルを参照する必要があり、計算されるメンバーをセルの座標の 1 つとして使用することはできません。

UPDATE CUBE ステートメントは、アトミック セルに対して一連の個別の書き戻し操作を生成するサブルーチンと考えることができます。 これらの個々の書き戻し操作はすべて、指定された合計に統合されます。

更新されたセルが重複しない場合は、 Update Isolation Level 接続文字列プロパティを使用して UPDATE CUBE のパフォーマンスを向上させることができます。 詳細については、ConnectionStringを参照してください。

Update CUBE は、Adventure Works キューブの Sales Targets メジャー グループを使用してテストできます。 このメジャー グループは、UPDATE CUBE の要件である SUM で集計されたメジャーで構成されます。

  1. Adventure Works データベースの「販売目標」メジャー グループに対する書き戻しを有効にします。 Management Studio でメジャー グループを右クリックし、[ 書き戻しオプション] をポイントして、[ 書き戻しを有効にする] を選択します。

    書き戻しフォルダーに新しい書き戻しテーブルが表示されます。 テーブル名は WriteTable_Fact Sales Quota です。

  2. MDX クエリ ウィンドウを開きます。 次の select ステートメントを実行して、元の値を表示します。

    SELECT [Measures].[Sales Amount Quota] on 0 ,  
    [Employee].[Employee Department].[Title].&[Sales Representative].children on 1  
    FROM [Adventure Works]  
    
    

    各担当者の売上高クォータが表示されます。

  3. キューブの更新ステートメントを実行して、新しい値を書き戻します。 この例では、販売額クォータを 0 に設定しています。 新しい値は 0 であるため、割り当て方法を指定しないでください。

    UPDATE CUBE [Adventure Works]   
    SET ([Measures].[Sales Amount Quota], [Employee].[Employee Department].[Department].&[Sales]) = 0  
    
    
  4. SELECT ステートメントを再実行します。 これでクォータがゼロとして表示されるはずです。

書き戻し値は、現在のセッションに制限されます。 ユーザーとセッション間で値を保持するには、ライトバック テーブルを処理します。 Management Studio で、WriteTable_Fact Sales Quota を右クリックして、プロセス を選択します。

割り当て方法を指定するには、新しい値が 0 より大きい必要があります。 この例では、Sales Amount Quota の新しい値は 200 万であり、割り当て方法によってすべての営業担当者に金額が配分されます。

UPDATE CUBE [Adventure Works]   
SET ([Measures].[Sales Amount Quota], [Employee].[Employee Department].[Department].&[Sales]) = 2000000   
USE_EQUAL_ALLOCATION  

エラー条件

次の表では、書き戻しが失敗する原因と、それらのエラーの結果の両方について説明します。

エラー条件 結果
更新には、互いに存在しない同じディメンションのメンバーが含まれます。 更新は失敗します。 キューブ空間には、参照先のセルは含まれません。
更新には、符号なし型のメジャーに基づいたメジャーが含まれます。 更新は失敗します。 増分には、尺度が負の値を取ることができる必要があります。
更新には、合計以外の集計方法を含む指標が追加されています。 エラーが発生しました。
サブキューブで更新が試みられました。 エラーが発生しました。

キューブの変更の影響

次の変更は、ライトバックには影響しません。

  • キューブの処理、キューブのメジャー グループ、またはキューブのディメンション。

  • ディメンションに属性を追加する。

  • 新しいディメンションの追加。

  • 書き戻しを含まないディメンションの削除。

  • 階層の追加、変更、または削除。

  • 新しい測定を追加する。

書き戻しデータを削除しないと、次の変更を行うことはできません。

  • 属性が書き戻しに含まれている場合は、属性またはその属性階層を削除します。 これには、属性またはその属性階層の明示的な削除、または属性の親ディメンションの削除が含まれます。

  • 書き戻しに含まれるメジャーの削除。

  • 書き戻しに含まれるディメンションに (All) レベルのない属性を追加する。

  • 書き戻しに含まれるディメンションの粒度を変更する。

こちらもご覧ください

データの変更 (MDX)