資料分割 (Analysis Services - 多維度數據)
適用於: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
分割區是量值群組數據的一部分容器。 MDX 查詢中看不到數據分割;所有查詢都會反映量值群組的整個內容,不論量值群組定義了多少個分割區。 分割區的數據內容是由數據分割的查詢系結和配量表達式所定義。
簡單的 Partition 物件是由:基本資訊、配量定義、匯總設計等。 基本資訊包括分割區的名稱、儲存模式、處理模式及其他。 配量定義是指定 Tuple 或集合的 MDX 運算式。 配量定義的限制與 StrToSet MDX 函式相同。 與 CONSTRAINED 參數一起,配量定義可以使用 Cube 中的維度、階層、層級和成員名稱、索引鍵、唯一名稱或其他具名物件,但無法使用 MDX 函式。 匯總設計是可跨多個分割區共用的匯總定義集合。 默認值取自父 Cube 的匯總設計。
Microsoft SQL Server SQL Server Analysis Services 會使用數據分割來管理和儲存 Cube 中量值群組的數據和匯總。 每個量值群組至少有一個數據分割;定義量值群組時,就會建立此分割區。 當您為量值群組建立新的分割區時,新的分割區會加入至量值群組已經存在的分割區集。 量值群組會反映其所有分割區中包含的合併數據。 這表示您必須確定量值群組中數據分割的數據是量值群組中任何其他數據分割的數據獨佔,以確保數據不會多次反映在量值群組中。 量值群組的原始數據分割是以 Cube 數據源檢視中的單一事實數據表為基礎。 當量值群組有多個數據分割時,每個分割區都可以在數據源檢視或 Cube 的基礎關係型數據源中參考不同的數據表。 如果每個數據分割限製為資料表中的不同資料列,量值群組中的多個資料分割可以參考相同的數據表。
數據分割是一種強大且彈性的方式,可管理 Cube,尤其是大型 Cube。 例如,包含銷售資訊的 Cube 可以包含過去一年數據的分割區,以及針對本年度每個季度的數據分割。 當目前資訊新增至 Cube 時,只需要處理目前的四分之一數據分割;處理少量的數據,可藉由減少處理時間來改善處理效能。 在年底,四個季度數據分割可以合併為年份的單一分割區,以及為新年第一季建立的新分割區。 此外,這個新的數據分割建立程式可以在數據倉儲載入和 Cube 處理程式中自動化。
Cube 的商務使用者看不到數據分割。 不過,系統管理員可以設定、新增或卸除數據分割。 每個分割區都會儲存在一組個別的檔案中。 每個分割區的匯總數據可以儲存在定義數據分割的 SQL Server Analysis Services 實例、另一個 SQL Server Analysis Services 實例上,或儲存在用來提供數據分割源數據的數據源中。 數據分割可讓 Cube 的源數據和匯總數據分散到多個硬碟和多部伺服器電腦之間。 對於大小適中的 Cube,分割區可以大幅改善查詢效能、載入效能,以及 Cube 維護的便利性。
每個分割區的儲存模式可以獨立於量值群組中的其他分割區進行設定。 您可以使用源資料位置、儲存模式、主動式快取和匯總設計的任何選項組合來儲存數據分割。 即時 OLAP 和主動式快取的選項可讓您在設計數據分割時,平衡查詢速度與延遲。 儲存選項也可以套用至相關維度和量值群組中的事實。 這種彈性可讓您設計適合您需求的 Cube 記憶體策略。 如需詳細資訊,請參閱 資料分割儲存模式和處理、匯總和匯總設計 和 主動式快取。
數據分割結構
數據分割的結構必須符合其量值群組的結構,這表示定義量值群組的量值也必須在數據分割中定義,以及所有相關維度。 因此,建立數據分割時,它會自動繼承為量值群組定義的相同量值和相關維度集合。
不過,量值群組中的每個分割區都可以有不同的事實數據表,而且這些事實數據表可以來自不同的數據源。 當量值群組中的不同數據分割有不同的事實數據表時,數據表必須足以維持量值群組的結構,這表示處理查詢會針對所有分割區傳回相同的數據行和相同的數據類型。
當不同數據分割的事實數據表來自不同數據源時,任何相關維度的源數據表,以及任何中繼事實數據表,也必須存在於所有數據源中,而且在所有資料庫中都必須具有相同的結構。 此外,用來定義與量值群組相關 Cube 維度屬性的所有維度數據表數據行,都必須存在於所有數據源中。 如果數據分割源數據表的結構與量值群組的源數據表相同,則不需要定義數據分割源數據表與相關維度數據表之間的所有聯結。
未用來定義量值群組中量值的數據行可以存在於某些事實數據表中,但其他數據表中則不存在。 同樣地,未用來定義相關維度數據表屬性的數據行可能會存在於某些資料庫中,但在其他資料庫中則不存在。 未用於事實數據表或相關維度數據表的數據表可以存在於某些資料庫中,但其他資料庫中則不存在。
數據源和數據分割記憶體
數據分割是以數據源中的數據表或檢視表為基礎,或以數據源檢視中的數據表或具名查詢為基礎。 數據分割數據儲存的位置是由數據源系結所定義。 您可以使用單一資料表資料分割設定或多資料表資料分割設定來分割量值群組:
在多數據表分割區配置中,量值群組分割中的每個分割區都是以個別數據表為基礎。 當數據分隔成多個數據表時,這種數據分割是適當的。 例如,某些關係資料庫有每個月數據的個別數據表。
在單一數據表數據分割配置中,量值群組是以單一數據表為基礎,而每個分割區是以篩選數據分割數據的來源系統查詢為基礎。 例如,如果單一數據表包含數個月的數據,量值群組仍可藉由套用傳回每個分割區個別月份數據的 Transact-SQL WHERE 子句,依月份分割。
每個分割區都有記憶體設定,可判斷分割區的數據和匯總是儲存在 SQL Server Analysis Services 的本機實例,還是使用另一個 SQL Server Analysis Services 實例儲存在遠端分割區中。 記憶體設定也可以指定儲存模式,以及是否使用主動式快取來控制分割區的延遲。 如需詳細資訊,請參閱 資料分割儲存模式和處理、主動式快取和 遠端資料分割。
累加式更新
當您在多個分割區量值群組中建立和管理分割區時,必須採取特殊預防措施,以確保 Cube 數據正確無誤。 雖然這些預防措施通常不適用於單一分割區量值群組,但是當您累加更新數據分割時,它們會套用。 當您以累加方式更新數據分割時,會建立新的暫存分割區,其結構與來源分割區的結構相同。 暫存分割區會進行處理,然後與來源分割區合併。 因此,您必須確定填入暫存數據分割的處理查詢不會複製現有分割區中已經存在的任何數據。