MDX データ操作 - UPDATE CUBE
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) 数値式です。
解説
キューブ内の指定されたリーフ セルまたは非リーフ セルの値を更新できます。指定された非リーフ セルの値を、それに依存するすべてのリーフ セルに割り当てることもできます。 タプル式で指定されるセルには、多次元空間内の任意の有効なセルを指定できます (つまり、セルがリーフ セルである必要はありません)。 ただし、セルは 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 の間の 10 進値として表す必要があります。 この値には、割り当て対象となるリーフ セルに割り当てる値の比率を指定します。 クライアント アプリケーションのプログラマは、式の割り当て値とロールアップ集計値が等しくなるように式を作成する必要があります。
注意事項
クライアント アプリケーションでは、不適切なロールアップ値や不整合なデータなど、予期しない結果が発生しないように、すべてのディメンションの割り当てを同時に考慮する必要があります。
各 UPDATE CUBE 割り当ては、トランザクションの目的でアトミックと見なす必要があります。 つまり、数式のエラーやセキュリティ違反など、何かの理由でいずれかの割り当て操作が失敗すると、UPDATE CUBE 操作全体が失敗します。 個々の割り当て操作の計算が処理される前に、データのスナップショットが作成され、計算結果が正しいかどうかの確認が行われます。
注意事項
整数を含むメジャーで使用すると、USE_WEIGHTED_ALLOCATION メソッドは、増分丸め変更によって発生する不正確な結果を返すことができます。
重要
更新されるセルが重ならない場合は、 Update Isolation Level 接続文字列プロパティを使用して、UPDATE CUBE のパフォーマンスを向上させることができます。