共用方式為


關於 Cube 處理

 

發行︰ 2016年7月

適用於: System Center 2012 SP1 - Service Manager、System Center 2012 R2 Service Manager、System Center 2012 - Service Manager

當線上分析處理 (OLAP) Cube 已部署且其所有資料分割均已建立時,即可進行處理以供檢視。 處理 Cube 是擷取、轉換及載入 (ETL) 執行之後的最後一個步驟。 這些步驟的執行方式如下:

  1. 擷取:從來源系統擷取資料

  2. 轉換:套用函式,讓資料符合標準維度架構

  3. 載入:將資料載入資料超市以供取用

  4. 程序:將資料從資料超市載入 OLAP Cube 以供瀏覽

當 Cube 的所有彙總均已計算,且將這些彙總和資料載入 Cube 時,系統便會處理 OLAP Cube。 系統會讀取維度和事實資料表,接著資料會經過計算並載入到 Cube 中。 當您設計 OLAP Cube 時,必須仔細考量處理作業,因為在可能有數百萬筆記錄的生產環境中,該處理作業可能會造成顯著的影響。 完整處理這類環境中的所有資料分割,可能需要數天甚至數週的時間,導致使用者無法使用 Service Manager 基礎結構和 Cube。 建議的做法之一是停用未使用的任何 Cube 的處理排程,以減少對系統造成額外的負荷。

OLAP Cube 處理包含兩項獨立的工作:

  1. 維度處理

  2. 資料分割處理

每個 OLAP Cube 在 Service Manager 主控台中都有對應的處理作業,並且會按照使用者可設定的排程執行。 下列各節說明每種處理工作類型。

維度處理

每當將新維度新增到 SQL Server Analysis Server (SSAS) 資料庫時,就必須在維度上執行完整處理,讓維度進入完整處理過的狀態。 不過,在維度經過處理之後,當處理以相同維度為目標的其他 Cube 時,並不保證會再次處理。 藉由不自動重新處理維度,可防止 Service Manager 針對每個 Cube 重新處理每個維度。 如果維度最近才經過處理,則更是如此,因為不太可能存在尚未處理的新資料。 若要最佳化處理效率,可利用 Microsoft.SystemCenter.Datawarehouse.OLAP.Base 管理組件中定義名為 Microsoft.SystemCenter.Warehouse.Dimension.ProcessingInterval 的單一類別。 此類別的範例如下:

<!-- This singleton class defines the minimum interval of time in minutes that must elapse before a shared dimension is reprocessed. -->   
<ClassType ID="Microsoft.SystemCenter.Warehouse.Dimension.ProcessingInterval" Accessibility="Public" Abstract="false" Base="AdminItem!System.AdminItem" Singleton="true">  
<Property ID="IntervalInMinutes" Type="int" Required="true" DefaultValue="60"/>  
</ClassType>  

這個單一類別包含內容 IntervalInMinutes,其中描述處理維度的頻率。 根據預設,此內容設定為 60 分鐘。 例如,如果在下午 3:05 處理了維度,而在下午 3:45 處理以相同維度為目標的其他 Cube,就不會重新處理該維度。 此方法的缺點之一是會增加維度索引鍵錯誤的可能性。 系統設有重試機制來處理維度索引鍵錯誤,以重新處理維度,接著再重新處理 Cube 資料分割。如需處理失敗的詳細資訊,請參閱疑難排解 OLAP Cube 主題中的<偵錯和疑難排解常見問題>一節。

在完整處理維度之後,系統會使用 ProcessUpdate 進行增量處理。 再次執行 ProcessFull 的唯一時機是當維度架構變更時,因為這會使維度回到未處理的狀態。 請注意,如果在維度上執行 ProcessFull,所有受影響的 Cube 及其資料分割接下來會處於未處理的狀態,而且必須在下次排定的執行時間進行完整處理。

資料分割處理

您必須仔細考量資料分割處理,因為重新處理大型資料分割的速度非常緩慢,而且會耗用裝載 SSAS 的伺服器上的許多 CPU 資源。 資料分割處理所需的時間一般要比維度處理長。 不同於維度處理,處理資料分割並不會對其他物件造成副作用。 在 System Center 2012 – Service Manager OLAP Cube 上只會執行兩種類型的處理,分別為 ProcessFull 和 ProcessAdd。

如同維度,在 OLAP Cube 中建立新的資料分割需要執行 ProcessFull 工作,資料分割才能處於可供查詢的狀態。 由於 ProcessFull task 是高度耗費資源的作業,您應在必要時才執行 ProcessFull 工作;例如,當您建立新的資料分割時,或是更新資料列時。 在新增資料列但未更新資料列的情況下,Service Manager 可以執行 ProcessAdd 工作。 為了執行這項作業,Service Manager 會使用浮水印和其他中繼資料。 具體來說,系統會查詢 etl.cubepartition 資料表和 etl.tablepartition 資料表來判斷要執行的處理類型。

下圖說明 Service Manager 如何根據浮水印資料判斷要執行的處理類型。

Cube 處理的圖表

執行 ProcessAdd 工作時,Service Manager 會使用浮水印限制查詢的範圍。 例如,如果 InsertedBatchId 值是 100,而 WatermarkBatchId 值是 50,查詢就只會從資料超市中 InsertedBatchId 大於 50 但小於 100 的位置載入資料。

最後,值得注意的一點是,Service Manager 並不支援使用 SSAS 或 Business Intelligence Development Studio 手動處理 OLAP Cube。 除了 System Center 2012 – Service Manager 中提供的方法,利用其他方法處理 Cube (包括 Service Manager 主控台和 Service Manager Cmdlet),將不會更新浮水印資料表。 因此,可能會發生資料完整性問題。 如果您不小心手動重新處理 Cube,可能的解決方法之一是以相同的方式手動取消處理 OLAP Cube。 然後,當 Service Manager 下次處理 Cube 時,就會自動執行 ProcessFull 工作,因為資料分割將處於未處理的狀態。 這將會正確更新所有浮水印和中繼資料,進而解決任何可能的資料完整性問題。

請參閱

瞭解 OLAP Cube