課程 5-2 - 定義事實關聯性
適用於: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
用戶有時想要依事實數據表中的數據項來維度量值,或查詢事實數據表中特定其他相關信息,例如與特定銷售事實相關的發票號碼或採購單號碼。 當您根據這類事實資料表項目定義維度時,維度稱為 事實維度。 事實維度也稱為變質維度。 事實維度適用於將相關的事實數據表數據列分組在一起,例如與特定發票編號相關的所有數據列。 雖然您可以將此資訊放在關係資料庫中的個別維度數據表中,但為資訊建立個別維度數據表沒有好處,因為維度數據表會以與事實數據表相同的速率成長,而且只會建立重複的數據和不必要的複雜度。
在 SQL Server Analysis Services 中,您可以判斷是否要複製 MOLAP 維度結構中的事實維度數據,以提高查詢效能,或是否要將事實維度定義為 ROLAP 維度,以犧牲查詢效能來節省儲存空間。 當您使用 MOLAP 儲存模式儲存維度時,除了儲存在量值群組的數據分割之外,所有維度成員都會儲存在 SQL Server Analysis Services 實例中,並儲存在高度壓縮的 MOLAP 結構中。 當您使用 ROLAP 儲存模式儲存維度時,只有維度定義會儲存在 MOLAP 結構中,維度成員本身會在查詢時從基礎關係型事實數據表查詢。 您可以根據查詢事實維度的頻率、一般查詢傳回的數據列數目、查詢效能和處理成本,決定適當的儲存模式。 將維度定義為 ROLAP 不需要所有使用維度的 Cube 也會與 ROLAP 儲存模式一起儲存。 每個維度的儲存模式都可以獨立設定。
當您定義事實維度時,您可以將事實維度與量值群組之間的關聯性定義為事實關聯性。 下列條件約束適用於事實關聯性:
數據粒度屬性必須是維度的索引鍵數據行,這會在維度與事實數據表中的事實之間建立一對一關聯性。
維度只能與單一量值群組有事實關聯性。
注意
事實維度必須在事實關聯性所參考之量值群組的每個更新之後,以累加方式更新。
如需詳細資訊,請參閱 維度關聯性和 定義事實關聯性和事實關聯性屬性。
在本主題的工作中,您會根據 FactInternetSales 事實數據表中的 CustomerPONumber 數據行來新增 Cube 維度。 然後,您將這個新的 Cube 維度與 Internet Sales 量值群組之間的關聯性定義為事實關聯性。
定義因特網銷售訂單事實維度
在 [方案總管] 中,以滑鼠右鍵按兩下 [維度],然後按兩下 [[新增維度]。
在 [歡迎使用維度精靈] 頁面上,按兩下 [下一步]。
在 [選取建立方法] 頁面上,確認已選取 [使用現有的數據表] 選項,然後按兩下 [下一步]。
在 [指定來源資訊 頁面上,確認已選取 Adventure Works DW 2019 數據源檢視。
在 [Main 數據表] 清單中,選取 [InternetSales]。
在 [索引鍵] 數據行 列表中,確認 SalesOrderNumber 和 SalesOrderLineNumber。
在 [
名稱] 資料行 列表中,選取 [salesOrderLineNumber]。 點選 [下一步] 。
在 [[選取相關數據表] 頁面上,清除所有數據表旁的複選框,然後按兩下 [下一步]。
在 [選取維度屬性 頁面上,按下標頭中的複選框兩次,以清除所有複選框。 銷售訂單號碼 屬性會保持選取狀態,因為它是索引鍵屬性。
選取 [客戶 PO 號碼] 屬性,然後按下 [下一步]。
在 [完成精靈] 頁面上,將名稱變更為 [因特網銷售訂單詳細數據],然後按兩下 [完成] 以完成精靈。
在 [檔案] 功能表上,按兩下 [[全部儲存]。
在 [
Internet Sales Order Details 維度的 [維度設計師][屬性] 窗格中,選取 [銷售訂單號碼] ,然後將 [屬性] 視窗中的 [名稱] 屬性變更為 [專案描述]。 在 NameColumn 屬性數據格中,按下瀏覽按鈕 [...]。在 [名稱數據行] 對話框中,從 [源數據表] 清單中選取 [Product],選取 [EnglishProductName] [源數據行],然後按兩下 [確定] [確定]。
從 [
數據源檢視] 窗格的 [InternetSale s] 數據表拖曳SalesOrderNumber 數據行,將 [Sales Order Number ] 属性新增至維度。 將新 Sales Order Number 属性的 Name 属性變更為 Order Number,並將 OrderBy 屬性變更為 Key。
在 [階層] 窗格中,依該順序建立 因特網銷售訂單 用戶階層,其中包含 訂單號碼 和 專案描述 層級。
在 [
屬性 ] 窗格中,選取 [因特網銷售訂單詳細數據],然後在 [屬性] 視窗中檢閱 [ StorageMode ] 属性的值。請注意,根據預設,此維度會儲存為 MOLAP 維度。 雖然將儲存模式變更為 ROLAP 可節省處理時間和儲存空間,但會犧牲查詢效能。 針對本教學課程的目的,您將使用 MOLAP 作為儲存模式。
若要將新建立的維度新增至 SQL Server Analysis Services 教學課程 Cube 作為 Cube 維度,請切換至 Cube 設計工具。 在 [Cube 結構] 索引卷標上,以滑鼠右鍵按兩下 [[維度] 窗格中,然後選取 [[新增 Cube 維度]。
在 [[新增 Cube 維度.dialog] 對話框中,選取 [[因特網銷售訂單詳細數據],然後按兩下 [確定] [確定]。
定義事實維度的事實關聯性
在 SQL Server Analysis Services 教學課程 Cube 的 Cube 設計工具中,按兩下 [維度使用方式] 索引標籤。
請注意,因特網銷售訂單詳細數據 Cube 維度會自動設定為具有事實關聯性,如唯一圖示所示。
按兩下 [項目 描述] 資料格的流覽按鈕 (...),在 [因特網銷售 量值] 群組的交集處,以及 [因特網銷售訂單詳細數據] 維度,以檢閱事實關聯性屬性。
[定義關聯性] 對話框隨即開啟
。 請注意,您無法設定任何屬性。 下圖顯示 [定義關聯性] 對話框中
事實關聯性屬性。 點選 [取消]
。
使用事實維度流覽 Cube
在 [建置] 功能表上,按兩下 [部署 Analysis Services 教學課程],將變更部署至 SQL Server Analysis Services 實例並處理資料庫。
部署成功完成之後,按兩下 [Cube 設計工具] 中 SQL Server Analysis Services 教學課程 Cube 中的 [
Browser ] 索引標籤,然後按兩下 [重新連線] 按鈕。 清除數據窗格中的所有量值和階層,然後將 Internet Sales-Sales Amount 量值新增至數據窗格的數據區域。
在元數據窗格中, 依序展開
客戶 、位置 、客戶地理位置 、成員 、所有客戶 、澳大利亞 、展開昆士蘭州 ,展開布裡斯班 ,展開4000 ,以滑鼠右鍵單擊亞當·鮑威爾,然後按兩下 [ 新增至篩選 ]。篩選以限制傳回給單一客戶的銷售訂單,可讓使用者向下切入大型事實數據表中的基礎詳細數據,而不會在查詢效能中大幅遺失。
將 因特網銷售訂單 使用者定義階層,從 因特網銷售訂單詳細數據 維度新增至數據窗格的數據列區域。
請注意,Adam Powell 的銷售訂單號碼和對應的因特網銷售金額會出現在數據窗格中。
下圖顯示先前步驟的結果。