UPDATE CUBE ステートメント (MDX)
UPDATE CUBE ステートメントは、SUM 集計によって親に対して集計を行うキューブ内の任意のセルにデータを書き戻すために使用します。 詳細な説明と例については、ブログ投稿「Analysis Services での書き戻しアプリケーションのビルド (ブログ)」の「割り当てについて」を参照してください。
構文
UPDATE [ CUBE ] Cube_Name
SET
<update clause>
[, <update clause> ...n ]
<update clause> ::=
Tuple_Expression[.VALUE]= New_Value
[
USE_EQUAL_ALLOCATION
| USE_EQUAL_INCREMENT
| USE_WEIGHTED_ALLOCATION [ BY Weight_Expression]
| USE_WEIGHTED_INCREMENT [ BY Weight_Expression]
]
引数
Cube_Name
キューブの名前を指定する有効な文字列です。Tuple_Expression
組を返す有効な多次元式 (MDX) 式です。New_Value
有効な数値式です。Weight_Expression
0 ~ 1 の範囲の 10 進値を返す有効な多次元式 (MDX) 数値式です。
説明
キューブ内の指定されたリーフ セルまたは非リーフ セルの値を更新できます。指定された非リーフ セルの値を、それに依存するすべてのリーフ セルに割り当てることもできます。 Tuple_Expression で指定するセルには、多次元領域内の任意の有効なセルを指定できます (リーフ セルでなくてもかまいません)。 ただし、このセルは、Sum 集計関数で集計する必要があるので、セルの識別に使用する組の中に計算されるメンバーを含めることはできません。
UPDATE CUBE ステートメントは、指定されている合計にロール アップされるリーフ セルと非リーフ セルに対する個々のセルの一連の書き戻し操作を自動的に生成するサブルーチンのようなものと考えることができます。
次の表に、割り当ての方法を示します。
割り当ての方法 |
説明 |
---|---|
USE_EQUAL_ALLOCATION |
更新されるセルにかかわるすべてのリーフ セルに、次の式に基づく同じ値が割り当てられます。
|
USE_EQUAL_INCREMENT |
更新されるセルにかかわるすべてのリーフ セルが、次の式に基づいて変更されます。
|
USE_WEIGHTED_ALLOCATION |
更新されるセルにかかわるすべてのリーフ セルに、次の式に基づく同じ値が割り当てられます。
|
USE_WEIGHTED_INCREMENT |
更新されるセルにかかわるすべてのリーフ セルが、次の式に基づいて変更されます。
|
Weight_Expression を指定しなかった場合、UPDATE CUBE ステートメントでは、次の式が暗黙的に使用されます。
Weight_Expression = <leaf cell value> / <existing value>
Weight_Expression は、0 ~ 1 の範囲の 10 進値で表す必要があります。 この値には、割り当て対象となるリーフ セルに割り当てる値の比率を指定します。 クライアント アプリケーションのプログラマは、式の割り当て値とロールアップ集計値が等しくなるように式を作成する必要があります。
注意
クライアント アプリケーションでは、ロール アップ値の間違いやデータの不整合などの予期しない結果を避けるために、すべてのディメンションの割り当てを同時に検討しなければなりません。
UPDATE CUBE によるそれぞれの割り当て操作は、トランザクションとしてのアトミックな操作と見なすべきです。 つまり、数式のエラーやセキュリティ違反など、何かの理由でいずれかの割り当て操作が失敗すると、UPDATE CUBE 操作全体が失敗します。 個々の割り当て操作の計算が処理される前に、データのスナップショットが作成され、計算結果が正しいかどうかの確認が行われます。
注意
整数を含むメジャーに対して USE_WEIGHTED_ALLOCATION の方法を使用すると、増分変更に丸めが伴うので不正確な結果が返される可能性があります。
重要
更新されるセルが重ならない場合は、Update Isolation Level 接続文字列プロパティを使用して、UPDATE CUBE のパフォーマンスを向上させることができます。