定義事實關聯性
使用者有時候想要按事實資料表中的資料項目建立量值維度,或查詢事實資料表中的其他特定相關資訊,例如與特定銷售事實相關的發票號碼或訂單號碼。當您依據這樣的事實資料表項目來定義維度時,這種維度稱為*「事實維度」*。事實維度也稱為變質維度。事實維度對於將相關事實資料表資料列 (例如,與特定發票號碼相關的所有資料列) 分組很有幫助。雖然您可以將這項資訊放在關聯式資料庫的個別維度資料表中,但為這項資訊建立個別的維度資料表並無好處,因為維度資料表與事實資料表的成長速率一樣,只會建立重複資料和產生不必要的複雜性而已。
在 Microsoft SQL Server 2005 Analysis Services (SSAS) 中,您可以決定是否要在 MOLAP 維度結構中重複事實維度資料來增加查詢效能,或是否要將事實維度定義成 ROLAP 維度,以犧牲查詢效能的代價來節省儲存空間。當您以 MOLAP 儲存模式來儲存維度時,所有維度成員除了儲存在量值群組的資料分割外,還會以高度壓縮的 MOLAP 結構而儲存在 Analysis Services 的執行個體。當您以 ROLAP 儲存模式來儲存維度時,只有維度定義會儲存在 MOLAP 結構中—維度成員本身是在查詢階段接受基礎關聯式事實資料表的查詢。您可以依據事實維度查詢的頻率、一般查詢傳回的資料列數、查詢的效能和處理成本,來決定適當的儲存模式。將維度定義為 ROLAP 並不需要所有使用該維度的 Cube 都以 ROLAP 儲存模式來儲存。這與 SQL Server 2000 Analysis Services 不同。
當您定義事實維度時,可在事實維度和量值群組之間定義事實關聯性。下列條件約束適用於事實關聯性:
- 資料粒度屬性必須是維度的索引鍵資料行,它會在維度和事實資料表的事實之間建立一對一關聯性。
- 維度只能與單一量值群組之間有事實關聯性。
附註: |
---|
另外,事實維度在每次更新到事實關聯性參考的量值群組之後必須累加更新。 |
如需詳細資訊,請參閱<維度關聯性>和<定義事實關聯性及事實關聯性屬性>。
在本主題的工作中,您會依據 [FactInternetSales] 事實資料表中的 [CustomerPONumber] 資料行來加入新 Cube 維度。接著會將這個新 Cube 維度和 [Internet Sales] 量值群組之間的關聯性定義為事實關聯性。
定義網際網路銷售訂單事實維度
定義網際網路銷售訂單事實維度
請針對 Analysis Services 教學課程的 Cube,切換到 Cube 設計師,然後按一下 [Cube 結構] 索引標籤。
以滑鼠右鍵按一下 [維度] 窗格中的任何位置,然後按一下 [加入 Cube 維度]。
在 [加入 Cube 維度] 對話方塊中,按一下 [新增維度]。
此時會開啟維度精靈。
在 [歡迎使用維度精靈] 頁面上,按 [下一步]。
在 [選取資料來源檢視] 頁面上,按 [下一步],從 Adventure Works DW 資料來源檢視中選取維度的資料。
在 [選取維度類型] 頁面上,按 [下一步],指定該維度是標準維度。
在 [選取主維度資料表] 頁面上,從 [主資料表] 清單中選取 [dbo.FactInternetSales]。
請注意,一個複合索引鍵會依據 SalesOrderNumber 和 SalesOrderLineNumber 資料行,定義成索引鍵資料行,並對成員名稱屬性定義 SalesOrderLineNumber 資料行。也請注意,您不能從 FactInternetSales 資料表以外的任何資料表中定義成員名稱屬性的資料行。
按 [下一步]。
在 [選取相關資料表] 頁面上,確認未選取任何資料表,然後按 [下一步]。
在 [選取維度屬性] 頁面上,清除所有已選取的維度屬性,然後選取 [Customer PO Number] 維度屬性的核取方塊。
請注意,您不能從維度精靈中選取任一個複合索引鍵作為屬性。這是因為複合索引鍵已定義為資料行索引鍵。若要憑本身條件將它們加入成為屬性,您必須在定義維度之後將它們定義成屬性。
按一下 [完成],將維度名稱變更為 Internet Sales Order Details,按一下 [完成],然後按一下 [確定],將新建的資料庫維度加入至 Analysis Services 教學課程 Cube 中作為 Cube 維度。
針對 [Internet Sales Order Details] 維度開啟維度設計師。
在 [屬性] 窗格,選取 [Internet Sales] 屬性,然後將 [屬性] 視窗中的 [Name] 屬性變更為 Item Description。
在 [NameColumn] 屬性資料格中,選取 [(新增)],選取 [Product] 作為來源資料表,在 [物件繫結] 對話方塊中選取 [EnglishProductName] 作為來源資料行,然後按一下 [確定]。
將 [SalesOrderNumber] 資料行從 [資料來源檢視] 窗格中的 [InternetSales] 資料表拖曳到 [屬性] 窗格,以這個方式將 [Sales Order Number] 屬性加入至維度中。
將新的 [Sales Order Number] 屬性的 [Name] 屬性變更為 Order Number,並將 [OrderBy] 屬性變更為 [Key]。
在 [階層和層級] 窗格中,以這個順序建立 [Internet Sales Orders] 使用者階層,它包含 [Order Number] 和 [Item Description] 層級。
在 [屬性] 窗格,選取 [Internet Sales Order Details],然後在 [屬性] 視窗中檢閱 [StorageMode] 屬性的值。
請注意,依預設,這個維度是儲存為 MOLAP 維度。雖然將儲存模式變更為 ROLAP 可節省處理時間和儲存空間,但卻是以犧牲查詢效能為代價。基於這個教學課程的目的,您將使用 MOLAP 作為儲存模式。
定義 Fact 維度的事實關聯性
定義 Fact 維度的事實關聯性的方法
請針對 Analysis Services 教學課程的 Cube,切換到 Cube 設計師,再按一下 [維度使用方式] 索引標籤。
請注意,[Internet Sales Order Details] Cube 維度會自動設定為具有事實關聯性,正如其唯一圖示所顯示。
下圖顯示具有事實關聯性的 [Internet Sales Order Details] Cube 維度。
在 [Internet Sales] 量值群組和 [Internet Sales Order Details] 維度的交叉點,按一下 [Item Description] 資料格中的省略符號按鈕 ([…]),來檢閱事實關聯性屬性。
此時會開啟 [定義關聯性] 對話方塊。請注意,您不能設定任何這些屬性。
下圖顯示 [定義關聯性] 對話方塊中的事實關聯性屬性。
按一下 [取消]。
使用 Fact 維度來瀏覽 Cube
使用 Fact 維度來瀏覽 Cube 的方法
在 [建立] 功能表上,按一下 [部署 Analysis Services Tutorial],將所做的變更部署到 Analysis Services 的執行個體及處理資料庫。
順利完成部署之後,針對 Analysis Services 教學課程 Cube,按一下 Cube 設計師的 [瀏覽器] 索引標籤,然後按一下 [重新連接]。
從 [資料] 窗格中清除所有量值和階層,然後將 [Internet Sales-Sales Amount] 量值加入至 [資料] 窗格的資料區域中。
在 [中繼資料] 窗格中,依序展開 [Customer]、[Location]、[Customer Geography]、[Members]、[All Customers]、[Australia]、[Queensland]、[Brisbane]、[4000],以滑鼠右鍵按一下 [Adam Powell],然後按一下 [加入至 Subcube 區域]。
以篩選方式限制傳回給單一客戶的銷售訂單,可讓使用者向下鑽研大型事實資料表的基礎詳細資料,而不致使查詢效能有重大損失。
將 [Internet Sales Order Details] 維度中的 [Internet Sales Orders] 使用者自訂階層加入至 [資料] 窗格的資料列區域。
請注意,銷售訂單號碼和 Adam Powell 對應的網際網路銷售量會出現在 [資料] 窗格中。
展開資料列區域的每一個銷售訂單號碼,來檢視那些訂單中的每一個行項目的詳細資料。
下圖顯示先前步驟中建立的維度。