共用方式為


使用 Cube 寫回功能(MDX)

您可以使用 UPDATE CUBE 語句來更新 Cube。 此語句可讓您使用特定值來更新元組。 若要有效地使用 UPDATE CUBE 語句來更新 Cube,您必須瞭解語句的語法、可能發生的錯誤條件,以及更新對 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>] ]   

如果未指定 Tuple 的完整座標集,則未指定的座標會使用階層的預設成員。 所識別的 Tuple 必須參考以 Sum 函數彙總的儲存格,而且不得使用計算成員做為儲存格的其中一個座標。

您可以將 UPDATE CUBE 語句視為子程序,其作用是產生一系列的個別回寫作業到原子性儲存格。 所有這些個別回寫作業接著會累加至指定的總和。

備註

當更新的儲存格不重疊時, Update Isolation Level 連接字串屬性可用來增強UPDATE CUBE的效能。 如需詳細資訊,請參閱ConnectionString

範例

您可以使用 Adventure Works Cube 中的 Sales Targets 量值群組來測試 UPDATE CUBE。 此量值群組是由 SUM 匯總的量值所組成,這是 UPDATE CUBE 的需求。

  1. 在 Adventure Works 資料庫中啟用銷售目標度量群組的回寫功能。 在 Management Studio 中,以滑鼠右鍵按兩下量值群組,指向 [ 回寫選項],選擇 [ 啟用回寫]。

    您應該會在 [回寫] 資料夾中看到新的回寫資料表。 數據表名稱為 WriteTable_Fact Sales Quota。

  2. 開啟 MDX 查詢視窗。 執行下列 select 語句以檢視原始值:

    SELECT [Measures].[Sales Amount Quota] on 0 ,  
    [Employee].[Employee Department].[Title].&[Sales Representative].children on 1  
    FROM [Adventure Works]  
    
    

    您應該會看到每個代表的銷售金額配額。

  3. 執行更新資料立方體語句將新值寫回。 在此範例中,我們將銷售量配額設定為 0。 由於新值為 0,因此請勿指定配置方法。

    UPDATE CUBE [Adventure Works]   
    SET ([Measures].[Sales Amount Quota], [Employee].[Employee Department].[Department].&[Sales]) = 0  
    
    
  4. 重新執行 SELECT 語句。 您現在應該會看到配額為零。

回寫值受限於目前的會話。 若要跨使用者和會話保存值,請處理回寫數據表。 在 Management Studio 中,以滑鼠右鍵點擊 WriteTable_Fact 銷售配額,然後選擇 處理

若要指定配置方法,新值必須大於零。 在此範例中,Sales Amount Quota 的新值是 200 萬,而配置方法會將金額分散到所有銷售代表。

UPDATE CUBE [Adventure Works]   
SET ([Measures].[Sales Amount Quota], [Employee].[Employee Department].[Department].&[Sales]) = 2000000   
USE_EQUAL_ALLOCATION  

錯誤條件

下表說明造成回寫失敗的原因,以及這些錯誤的結果。

錯誤狀況 結果
更新包括在同一維度中但不相互存在的成員。 更新將會失敗。 立方體空間不會包含參考的儲存格。
更新包含由無符號類型的數值作為來源的數值。 更新將會失敗。 要實現遞增,量值必須能夠取負值。
Update 包含匯總總和以外的量值。 發生錯誤。
在 Subcube 上嘗試更新。 引發錯誤。

立方體變更的影響

下列變更不會影響資料回寫:

  • 立方體、立方體的量值群組或立方體維度的處理。

  • 將屬性新增至任何維度。

  • 加入新的維度。

  • 刪除不包含回寫的維度。

  • 新增、修改或移除階層。

  • 新增量值。

在移除回寫資料的情況下,無法進行下列變更:

  • 如果回寫中包含屬性,則刪除屬性或其屬性階層。 這包括明確移除屬性或其屬性階層,或移除屬性的父維度。

  • 刪除回寫中包含的量值。

  • 將不具有 (All) 層級的屬性添加到包含在回寫中的維度。

  • 變更回寫中包含的維度粒度。

另請參閱

變更資料 (MDX)