Analysis Services 中的合併分割區 (SSAS - 多維度)
適用於: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
您可以在現有的 SQL Server Analysis Services 資料庫中合併分割區,以合併相同量值群組多個分割區的事實數據。
如何使用 SSMS 合併分割區
如何使用 XMLA 合併分割區
常見案例
分割區使用的單一最常見組態牽涉到跨時間維度的數據區隔。 與每個分割區相關聯的時間粒度會根據專案專屬的商務需求而有所不同。 例如,分割可能是依年份,其中最近一年除以月,加上使用中月份的個別分割區。 使用中月份數據分割會定期採用新的數據。
當使用中月份完成時,該分割區會合併回年度到目前數據分割中的月份,並繼續進行此程式。 年底,已形成全新的一年分割區。
如此案例所示範,合併分割區可能會成為定期執行的例行工作,並提供一種漸進式方法來合併及組織歷程記錄數據。
要求
只有在數據分割符合下列所有準則時,才能合併:
它們具有相同的量值群組。
它們具有相同的結構。
它們必須處於已處理的狀態。
它們具有相同的儲存模式。
它們包含相同的匯總設計。
它們共用相同的字串存放區相容性層級(僅適用於分割的相異計數量值群組)。
如果目標分割區是空的(也就是說,它有匯總設計,但沒有匯總),合併將會卸除來源數據分割的匯總。 您必須在分割區上執行進程索引、進程完整或進程預設值,才能建置匯總。
遠端數據分割只能與其他使用 SQL Server Analysis Services 遠端實例定義的遠端分割區合併。
注意
如果您使用本機和遠端數據分割的組合,替代方法是建立包含合併數據的新分割區,並刪除您不再使用的數據分割。
若要建立未來合併的候選數據分割,當您在 [數據分割精靈] 中建立分割區時,您可以選擇從另一個 Cube 的數據分割複製匯總設計。 這可確保這些分割區具有相同的匯總設計。 合併時,來源數據分割的匯總會與目標分割區中的匯總合併。
合併數據分割之後更新數據分割來源
分割區會依查詢分割,例如用來處理數據的 SQL 查詢 WHERE 子句,或由提供數據給數據分割的數據表或具名查詢來分割。 分割區上的 Source 屬性會指出分割區系結至查詢或數據表。
當您合併分割區時,分割區的內容會合併,但 Source 屬性不會更新,以反映分割區的其他範圍。 這表示如果您後續重新處理保留其原始 Source的數據分割,您將會從該分割區取得不正確的數據。 分割區會在父層級錯誤地匯總數據。 下列範例說明此行為。
問題
假設您有一個 Cube,其中包含三種軟飲料產品的相關信息。 它有三個使用相同事實數據表的數據分割。 這些分割區會依產品分割。 數據分割 1 包含 [ColaFull] 的相關數據,分割區 2 包含 [ColaDecaf] 的相關數據,而數據分割 3 包含 [ColaDiet] 的相關數據。 如果數據分割 3 合併至數據分割 2,則產生的分割區中的數據正確(分割區 2)且 Cube 數據正確。 不過,處理數據分割 2 時,其內容可能會由產品層級的成員父代決定。 這個父系 [SoftDrinks],也包含 [ColaFull],這是分割區 1 中的產品。 處理分割區 2 會載入數據分割,其中包含所有飲料的數據,包括 [ColaFull]。 然後 Cube 會包含 [ColaFull] 的重複數據,並將不正確的數據傳回給使用者。
解決方案
解決方案是更新 Source 屬性、調整 WHERE 子句或具名查詢,或手動合併基礎事實數據表的數據,以確保後續處理正確,因為分割區的範圍已擴大。
在此範例中,將分割區 3 合併到數據分割 2 之後,您可以在產生的數據分割 2 中提供篩選,例如 (“Product” = 'ColaDecaf' OR “Product” = 'ColaDiet'),以指定僅從事實數據表擷取 [ColaDecaf] 和 [ColaDiet] 的數據。 或者,您可以在建立資料分割 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 屬性。
在 [物件總管] 中,展開包含您要合併之數據分割之 Cube 量值群組 節點,展開 [數據分割],以滑鼠右鍵按兩下合併作業的目標或目的地數據分割。 例如,如果您要將每季事實數據移至儲存年度事實數據的分割區,請選取包含年度事實數據的分割區。
按兩下 [
合併分割區] ,開啟 [] 對話框 [合併分割區 分割區名稱]。 在 [來源數據分割 下,選取您要與目標分割合併之每個來源分割區旁的複選框,然後按兩下 [確定]。
注意
來源合併到目標分割區之後,會立即刪除來源分割區。 重新整理 Partitions 資料夾,以在合併完成後更新其內容。
以滑鼠右鍵按鍵按下包含累積資料的資料分割,然後選取 [屬性]
。 開啟 Source 屬性並修改 WHERE 子句,使其包含您剛才合併的分割區數據。 回想一下,Source 屬性不會自動更新。 如果您在不先更新 Source的情況下重新處理 ,則可能不會取得所有預期的數據。
如何使用 XMLA 合併分割區
如需詳細資訊,請參閱本主題,合併分割區 (XMLA)。
另請參閱
處理 Analysis Services 物件
分割區 (Analysis Services - 多維度數據)
建立和管理本機分割區 (Analysis Services)
建立和管理遠端分割區 (Analysis Services)
設定分割區回寫
Write-Enabled 分割區
設定維度和數據分割的字串記憶體