UPDATE CUBE文は、SUM集約を使って親セルに集約されるキューブ内の任意のセルにデータを書き戻すために使われます。 詳細や例については、このブログ記事「 Understanding a Writeback Application with Analysis Services(ブログ)」をご覧ください。
Syntax
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の間の小数値を返す有効な多次元表現(MDX)数値式。
Remarks
キューブ内の指定された葉または非葉のセルの値を更新でき、必要に応じて指定された葉なしセルの値を依存する葉のセル間で割り当てることができます。 タプル式で指定されるセルは、多次元空間内の任意の有効なセルである(つまり、セルが必ずしも葉のセルである必要はありません)。 ただし、セルは Sum 集約関数で集約されなければならず、セルを識別するために使われる計算メンバーをタプルに含めてはいけません。
UPDATE CUBE文を、リーフセルと非リーフセルに自動的に一連の個別セルの書き込み処理を生成し、指定された合計にまとめるサブルーチンと考えるのが有用かもしれません。
以下は配分方法の説明です。
USE_EQUAL_ALLOCATION: 更新セルに寄与するすべての葉のセルには、以下の式に基づいて等しい値を割り当てられます。
<leaf cell value> =
<New Value> / Count(leaf cells that are contained in <tuple>)
USE_EQUAL_INCREMENT: 更新セルに寄与するすべての葉細胞は、次の式に従って変更されます。
<leaf cell value> = <leaf cell value> +
(<New Value > - <existing value>) /
Count(leaf cells contained in <tuple>)
USE_WEIGHTED_ALLOCATION: 更新セルに寄与するすべてのリーフセルには、以下の式に基づく等しい数値が割り当てられます。
<leaf cell value> = < New Value> * Weight_Expression
USE_WEIGHTED_INCREMENT: 更新セルに寄与するすべての葉細胞は、次の式に従って変更されます。
<leaf cell value> = <leaf cell value> +
(<New Value> - <existing value>) * Weight_Expression
重み式が指定されていない場合、 UPDATE CUBE 文は暗黙のうちに以下の式を使用します。
Weight_Expression = <leaf cell value> / <existing value>
重みの式は、0から1の間の小数点で表現すべきです。 この値は、割り当ての影響を受けるリーフセルに割り当てたい割合の比率を指定します。 クライアントアプリケーションプログラマーは、ロールアップの集計値が割り当てられた式の値に等しい式を作成する責任を負います。
Caution
クライアントアプリケーションは、誤ったロールアップ値や一貫性のないデータなど予期せぬ結果を避けるために、すべての次元の割り当てを同時に考慮する必要があります。
各 UPDATE CUBE の割り当ては、取引目的でアトミックとみなすべきです。 つまり、割り当て操作のいずれかが、例えば数式の誤りやセキュリティ違反などで失敗した場合、 UPDATE キューブ操作全体が失敗することを意味します。 個々の割り当て操作の計算が行われる前に、データのスナップショットを取得し、結果の計算が正しいかを確認します。
Caution
整数を含む測度に用いた場合、USE_WEIGHTED_ALLOCATION法は段階的な丸め変化によって不正確な結果を返すことがあります。
Important
更新されたセルが重複しない場合、Update Isolation Level 接続文字列プロパティを使ってCUBEのパフォーマンスを向上させることができますUPDATE。