共用方式為


MDX 資料修改 - 使用 Cube 回寫

適用於: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

您可以使用 UPDATE CUBE 語句來更新 Cube。 此語句可讓您使用特定值來更新 Tuple。 若要有效地使用 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 CUBE 的效能。 如需詳細資訊,請參閱 ConnectionString

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

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

    您應該會在 [回寫] 資料夾中看到新的回寫資料表。 數據表名稱WriteTable_Fact銷售配額。

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

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

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

  3. 執行更新 Cube 語句來回寫新的值。 在此範例中,我們將銷售量配額設定為 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  

錯誤條件

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

錯誤條件 結果
更新包含與彼此不存在之相同維度的成員。 更新將會失敗。 Cube 空間不會包含參考的儲存格。
更新包含來源為未帶正負號類型的量值。 更新將會失敗。 遞增要求量值能夠接受負值。
Update 包含匯總總和以外的量值。 引發錯誤。
在 Subcube 上嘗試更新。 引發錯誤。

Cube 變更的影響

下列變更不會影響回寫:

  • Cube、Cube 的量值群組或 Cube 維度的處理。

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

  • 加入新的維度。

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

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

  • 新增量值。

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

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

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

  • 將不含 (All) 的屬性 層級新增至回寫中包含的維度。

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

另請參閱

修改數據 (MDX)