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 で集計されたメジャーで構成されます。
Adventure Works データベースの「販売目標」メジャー グループに対する書き戻しを有効にします。 Management Studio でメジャー グループを右クリックし、[ 書き戻しオプション] をポイントして、[ 書き戻しを有効にする] を選択します。
書き戻しフォルダーに新しい書き戻しテーブルが表示されます。 テーブル名は WriteTable_Fact Sales Quota です。
MDX クエリ ウィンドウを開きます。 次の select ステートメントを実行して、元の値を表示します。
SELECT [Measures].[Sales Amount Quota] on 0 , [Employee].[Employee Department].[Title].&[Sales Representative].children on 1 FROM [Adventure Works]各担当者の売上高クォータが表示されます。
キューブの更新ステートメントを実行して、新しい値を書き戻します。 この例では、販売額クォータを 0 に設定しています。 新しい値は 0 であるため、割り当て方法を指定しないでください。
UPDATE CUBE [Adventure Works] SET ([Measures].[Sales Amount Quota], [Employee].[Employee Department].[Department].&[Sales]) = 0SELECT ステートメントを再実行します。 これでクォータがゼロとして表示されるはずです。
書き戻し値は、現在のセッションに制限されます。 ユーザーとセッション間で値を保持するには、ライトバック テーブルを処理します。 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)レベルのない属性を追加する。書き戻しに含まれるディメンションの粒度を変更する。