次の方法で共有


MDX データ変更 - キューブ書き戻しの使用

適用対象: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

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 CUBE のパフォーマンスを向上させるために、 Update Isolation Level 接続文字列プロパティを使用できます。 詳細については、ConnectionStringを参照してください。

Example

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

  1. Adventure Works データベースの Sales Targets メジャー グループの書き戻しを有効にします。 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)