キューブの書き戻しの使用 (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 関数を使って集計されるセルを参照する必要があり、計算されるメンバをいずれかのセルの座標として使用することはできません。
UPDATE CUBE ステートメントは、アトミック セルに対する個々のセルの一連の書き戻し操作を生成するサブルーチンのようなものと考えることができます。その後、これらすべての個々の書き戻し操作は、指定された合計にロール アップします。次の例では、UPDATE CUBE ステートメントを使用して Drink 製品ファミリの Unit Shipped メジャーを 0 に更新します。
UPDATE CUBE [Warehouse and Sales] SET ([Measures].[Units Shipped], [Product].[Product Family].[Product Family].&[Drink]) = 0 USE_NO_ALLOCATION
注意 |
---|
MicrosoftSQL ServerAnalysis Services では、任意のセルを更新できます。 |
重要 |
---|
更新されるセルが重ならない場合は、Update Isolation Level 接続文字列プロパティを使用して、UPDATE CUBE のパフォーマンスを向上させることができます。詳細については、「ConnectionString」を参照してください。 |
エラー条件
次の表は、書き戻しが失敗する原因と、エラーの結果を示しています。
エラー条件 |
結果 |
---|---|
同じディメンションにあるが、互いに対して存在しないメンバが更新に含まれる場合。 |
更新は失敗します。参照されるセルはキューブ空間に格納されません。 |
符号なしの型のメジャーに由来するメジャーが更新に含まれる場合。 |
更新は失敗します。増分変更を行うには、メジャーが負の値をとることができなければなりません。 |
合計以外の集計が行われるメジャーが更新に含まれる場合。 |
エラーが発生します。 |
サブキューブに対する更新が試行された場合。 |
エラーが発生します。 |
キューブの変更の影響
次のような変更は、書き戻しに影響を与えません。
キューブ、キューブのメジャー グループ、またはキューブのディメンションの処理。
いずれかのディメンションへの属性の追加。
新しいディメンションの追加。
書き戻しを含まないディメンションの削除。
階層の追加、変更、または削除。
新しいメジャーの追加。
次のような変更は、書き戻しデータを削除しない限り行うことはできません。
書き戻しに含まれる属性や、その属性階層の削除。これには、属性または属性階層を明示的に削除することや、属性の親ディメンションを削除することが含まれます。
書き戻しに含まれるメジャーの削除。
書き戻しに含まれるディメンションに、(All) レベルを使用せずに属性を追加すること。
書き戻しに含まれるディメンションの粒度の変更。