使用 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 CUBE 陳述式會將 Drink 產品系列的 Unit Shipped 量值更新為零 (0):
UPDATE CUBE [Warehouse and Sales] SET ([Measures].[Units Shipped], [Product].[Product Family].[Product Family].&[Drink]) = 0 USE_NO_ALLOCATION
附註: |
---|
在 Microsoft SQL Server 2005 Analysis Services (SSAS) 中,您可以更新任何資料格。 |
錯誤狀況
下表描述會導致回寫失敗及錯誤結果的狀況。
錯誤狀況 | 結果 |
---|---|
更新包括相同維度但未能同時存在的的成員。 |
更新將會失敗。Cube 空間將不會包含參考資料格。 |
更新包括來源為不帶正負號類型的量值。 |
更新將會失敗。遞增需要量值能夠接受負值。 |
更新包括非彙總總和的量值。 |
引發錯誤。 |
嘗試在 Subcube 進行更新。 |
引發錯誤。 |
Cube 變更的影響
以下變更將不會影響到回寫:
- 處理 Cube、Cube 的量值群組,或 Cube 的維度。
- 將屬性增加到任何維度。
- 增加新的維度。
- 刪除不包含回寫的維度。
- 新增、修改或移除階層。
- 增加新的量值。
不移除回寫資料,就無法做出以下變更:
- 如果回寫中包含屬性在內,但要刪除屬性或其屬性階層。這包括明確地移除屬性或其屬性階層,或移除屬性的父維度。
- 刪除回寫中包含的量值。
- 新增一個屬性,而回寫中包含的階層沒有 (All) 層級。
- 變更回寫中包含之維度的維度資料粒度。