MDX 資料操作 - UPDATE CUBE
UPDATE CUBE 語句是用來將資料寫回 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
提供 Cube 名稱的有效字串。
Tuple_Expression
傳回 Tuple 的有效多維度運算式 (MDX) 運算式。
New_Value
有效的數值運算式。
Weight_Expression
有效的多維度運算式 (MDX) 數值運算式,傳回介於 0 到 1 之間的十進位值。
備註
您可以在 Cube 中更新指定分葉或非分葉儲存格的值,選擇性地跨相依分葉儲存格配置指定之非分葉儲存格的值。 Tuple 運算式指定的儲存格可以是多維度空間中的任何有效儲存格(也就是說,儲存格不一定是分葉儲存格)。 不過,儲存格必須使用 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 之間的十進位值表示。 這個值會指定您想要指派給受配置影響的分葉儲存格所配置值的比率。 用戶端應用程式程式設計人員有責任建立匯總匯總值等於運算式配置的運算式。
警告
用戶端應用程式必須同時考慮所有維度的配置,以避免可能的非預期結果,包括不正確的匯總值或不一致的資料。
每個 UPDATE CUBE 配置都應該視為交易用途不可部分完成。 這表示,如果任何一個配置作業因任何原因而失敗,例如公式中的錯誤或安全性違規,整個 UPDATE CUBE 作業將會失敗。 在處理個別配置作業的計算之前,系統會擷取資料的快照集,以確保產生的計算正確無誤。
警告
在包含整數的量值上使用時,USE_WEIGHTED_ALLOCATION方法可以傳回累加舍入變更所造成的不精確結果。
重要
當更新的儲存格沒有重迭時, 可以使用更新隔離等級 連接字串屬性來增強 UPDATE CUBE 的效能。