共用方式為


Analysis Services 中的合併分割區 (SSAS - 多維度)

您可以在現有的 Analysis Services 資料庫中合併數據分割,以合併相同量值群組多個分割區的事實數據。

常見場景

要求

合併分區後更新分區來源

由事实表或具名查询分割的分区的特殊考慮

如何使用 SSMS 合併分割區

如何使用 XMLA 合併分割區

常見場景

分割區使用的單一最常見組態牽涉到跨時間維度的數據區隔。 與每個分割區相關聯的時間粒度會根據專案專屬的商務需求而有所不同。 例如,分割可能是依年份,其中最近一年按月份進行細分,加上當前月份的個別分割區。 活動月分割會定期新增資料。

當使用中的月份完成時,該區段會合併回本年度至今的區段中的月份,然後繼續該過程。 年底,已形成全新的一年分割區。

正如這種情境所示,合併分區可能成為一項定期執行的例行任務,並提供一種漸進式方法來整合及整理歷史數據。

需求

只有在分割區符合以下所有準則時,才能合併:

  • 它們具有相同的量值群組。

  • 它們具有相同的結構。

  • 它們必須處於已處理的狀態。

  • 它們具有相同的儲存模式。

  • 它們包含相同的匯總設計。

  • 它們共用相同的字串存放區相容性層級(僅適用於分割的相異計數量值群組)。

如果目標分割區是空的(也就是說,它有匯總設計,但沒有匯總),合併將會卸除來源數據分割的匯總。 您必須在分割區上執行進程索引、進程完整或進程預設值,才能建置匯總。

遠端數據分割只能與使用相同 Analysis Services 遠端實例定義的其他遠端分割區合併。

備註

如果您使用本機和遠端數據分割的組合,替代方法是建立包含合併數據的新分割區,並刪除您不再使用的數據分割。

若要建立未來合併的候選數據分割,當您在 [數據分割精靈] 中建立分割區時,您可以選擇從另一個 Cube 的數據分割複製匯總設計。 這可確保這些分割區具有相同的匯總設計。 合併時,來源分區的聚合會與目標分區中的聚合合併。

合併分割之後更新分割來源

分割區是依照查詢來切分,例如用來處理數據的 SQL 查詢中的 WHERE 子句,或由提供數據給分割區的數據表或具名查詢。 數據 Source 分割上的 屬性會指出數據分割是系結至查詢或數據表。

當您合併分割區時,分割區的內容會合併,但 Source 屬性不會更新以反映分割區的其他範圍。 這表示如果您後續重新處理保留其原始 Source 的分割區,您將會從該分割區取得不正確的數據。 分割區會在父層級錯誤地匯總數據。 下列範例說明此行為。

問題

假設您有一個資料立方體,其中包含三種汽水產品的資訊。 它有三個使用相同事實數據表的數據分割。 這些分割區會依產品分割。 數據分割 1 包含 [ColaFull] 的相關數據,分割區 2 包含 [ColaDecaf] 的相關數據,而數據分割 3 包含 [ColaDiet] 的相關數據。 如果數據分割 3 合併至數據分割 2,則產生的分割區中的數據正確(分割區 2)且 Cube 數據正確。 不過,處理數據分割 2 時,其內容可能會由產品層級的成員父代決定。 這個父項 [SoftDrinks] 也包括 [ColaFull],這是第一分區中的產品。 處理分割區 2 會載入數據分割,其中包含所有飲料的數據,包括 [ColaFull]。 然後 Cube 會包含 [ColaFull] 的重複數據,並將不正確的數據傳回給使用者。

解決方案

解決方案是更新 Source 屬性、調整 WHERE 子句或具名查詢,或手動合併基礎事實數據表中的數據,以確保後續處理正確,因為分割區的範圍已擴大。

在此範例中,將分割區 3 合併到分割區 2 之後,您可以在合併後的分割區 2 中提供篩選,例如(“Product” = 'ColaDecaf' OR “Product” = 'ColaDiet'),以指定僅擷取事實資料表中關於 [ColaDecaf] 和 [ColaDiet] 的數據,並排除與 [ColaFull] 相關的數據。 或者,您可以在建立資料分割 2 和分割區 3 時指定篩選,這些篩選會在合併程式期間合併。 不論是哪一種情況,在處理數據分割之後,Cube 就不會包含重複的數據。

結論

合併數據分割之後,請一律檢查 Source 以確認已合併數據的篩選是否正確。 如果您從包含 Q1、Q2 和 Q3 歷史數據的分區開始,當您合併 Q4 時,必須調整篩選條件以包含 Q4。 否則,後續的數據分割處理會產生錯誤的結果。 第 4 季的答案將不會是正確的。

分割依據事實表或具名查詢的分區時的特殊考慮

除了查詢之外,數據分割也可以依數據表或具名查詢進行區隔。 如果源數據分割和目標數據分割在數據源或數據源檢視中使用相同的事實數據表,則 Source 合併數據分割之後,屬性就有效。 它指定適合結果分割的事實表資料。 由於結果數據分割所需的事實存在於事實數據表中,因此不需要修改 Source 屬性。

使用多個事實數據表或具名查詢的數據分割需要額外的工作。 您必須手動將來源分區的事實資料表中的事實合併到目標分區的事實資料表中。

或者,您可以將合併分區的來源變更為返回兩個不同事實表內容的命名查詢。 如果未執行這個手動步驟,事實數據表就不會包含完整的資訊。

基於相同原因,從具名字查詢取得分段資料的分割區也需要更新。 合併的數據分割現在必須有一個具名查詢,其會傳回先前從個別具名查詢取得的合併結果集。

分區儲存考量:MOLAP

合併 MOLAP 資料分割時,儲存在分割區多維度結構中的資訊也會被合併。 這會導致內部完整且一致的分割區。 不過,儲存在 MOLAP 數據分割中的事實是事實數據表中事實的複本。 當分割區進行後续处理时,只會刪除多維度結構中的特定事實(僅限於全量和重新整理),同時根據分割區的資料來源和篩選條件,从事實表拷贝資料。 如果來源分割區使用與目標分割區不同的事實數據表,來源數據分割的事實數據表必須手動合併至目標數據分割的事實數據表,以確保在處理產生的數據分割時可以使用完整的數據集。 這也適用於這兩個分區是以不同的具名查詢作為基礎。

這很重要

合併的 MOLAP 資料分割與不完整的事實數據表包含內部合併的事實數據表數據複本,並在處理之前正常運作。

分割區儲存考量:HOLAP 和 ROLAP 分割區

合併具有不同事實數據表的 HOLAP 或 ROLAP 分割區時,事實數據表不會自動合併。 除非手動合併事實數據表,否則只有與目標數據分割相關聯的事實數據表可供產生的分割區使用。 與來源分割區相關聯的資料不適用於結果分割區的深入,而且在處理分割區時,匯總不會包含來自無法使用的數據表的資料。

這很重要

合併的 HOLAP 或 ROLAP 分割區與不完整的事實數據表包含精確的匯總,但事實不完整。 參考遺漏事實的查詢會傳回不正確的數據。 處理分區時,僅從可用的事實進行匯總計算。

除非用戶嘗試深入查看不可用數據表中的事實或執行需要使用不可用數據表中事實的查詢,否則可能不會注意到這些不可用的事實。 由於匯總會在合併程式期間合併,因此結果僅以匯總為基礎的查詢會傳回精確的數據,而其他查詢可能會傳回不正確的數據。 即使在處理分割區之後,由於事實表無法使用的而導致的數據缺失可能不會被注意到,特別是在它只占合併數據的一小部分的情況下。

事實表可以在合併分區之前或之後合併。 不過,在完成這兩項作業之前,匯總不會準確地代表基礎事實。 建議您合併 HOLAP 或 ROLAP 分割區,以在使用者未連線到包含這些分割區的 Cube 時,存取不同的事實數據表。

如何使用 SSMS 合併分割區

這很重要

合併分割區之前,請先複製數據篩選資訊(通常是根據 SQL 查詢篩選的 WHERE 子句)。 之後,在合併完成之後,您應該更新包含累積事實數據之分割區的 Partition Source 屬性。

  1. 在 [物件總管] 中,展開包含您要合併的分割區的多維資料集的 測量群組 節點,再展開 分割區,以滑鼠右鍵點擊合併作業的目標或目的地的分割區。 例如,如果您要將每季事實數據移至儲存年度事實數據的分割區,請選取包含年度事實數據的分割區。

  2. 單擊 合併資料分割 以開啟 合併資料分割 <資料分割名稱> 對話框。

  3. [來源數據分割] 底下,選取您要與目標數據分割合併之每個來源數據分割旁的複選框,然後按兩下 [ 確定]。

    備註

    來源合併到目標分割區之後,會立即刪除來源分割區。 重新整理 Partitions 資料夾,以在合併完成後更新其內容。

  4. 以滑鼠右鍵按兩下包含累積資料的數據分割,然後選取 [ 屬性]。

  5. 開啟Source屬性並修改 WHERE 子句,使其包含您剛才合併的分區數據。 回想一下, Source 屬性不會自動更新。 如果您在不先更新 Source的情況下重新處理 ,則可能不會取得所有預期的數據。

如何使用 XMLA 合併分割區

如需 合併數據分割 (XMLA)的資訊,請參閱本主題。

另請參閱

處理分析服務物件
分區(分析服務 - 多維數據)
建立和管理本機分割區 (Analysis Services)
建立與管理遠端資料分割(分析服務)
設定分區回寫
Write-Enabled 分割區
為維度和分區配置字串儲存