共用方式為


使用 Cube 回寫 (MDX)

您可以使用 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 Isolation Level 連接字串屬性可用來增強 UPDATE CUBE 的效能。 如需詳細資訊,請參閱<ConnectionString>。

範例

您可以在 Adventure Works Cube 中使用 [銷售目標] 量值群組,來測試 UPDATE CUBE。 這個量值群組包含透過 SUM 彙總的量值,這是 UPDATE CUBE 所需。

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

    您應該會在 Writeback 資料夾中看到新的回寫資料表。 資料表名稱為 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. 執行 UPDATE CUBE 陳述式以回寫新值。 在這個範例中,我們將銷售量配額設定為 0。 新值為 0,因此不要指定配置方法。

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

回寫值限制為目前的工作階段。 若要跨使用者和工作階段保存值,請處理回寫資料表。 在 Management Studio 中,以滑鼠右鍵按一下 WriteTable_Fact Sales Quota,然後選擇 [處理]

若要指定配置方法,新值必須大於零。 在這個範例中,銷售量配額的新值是兩百萬,而且配置方法會將這個數量分散在所有銷售代表。

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

錯誤狀況

下表描述會導致回寫失敗及錯誤結果的狀況。

錯誤狀況

結果

更新包括相同維度但未能同時存在的成員。

更新將會失敗。 Cube 空間將不會包含參考資料格。

更新包括來源為不帶正負號類型的量值。

更新將會失敗。 遞增需要量值能夠接受負值。

更新包括非彙總總和的量值。

引發錯誤。

嘗試在 Subcube 進行更新。

引發錯誤。

Cube 變更的影響

以下變更將不會影響到回寫:

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

  • 將屬性增加到任何維度。

  • 增加新的維度。

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

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

  • 增加新的量值。

不移除回寫資料,就無法做出以下變更:

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

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

  • 新增一個屬性,而回寫中包含的階層沒有 (All) 層級。

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

請參閱

概念

修改資料 (MDX)