定義多對多關聯性

定義維度時,通常每一個事實只聯結到一個維度成員,而單一維度成員可以與許多不同事實相關聯。例如,每個客戶可以有許多張訂單,但是每張訂單只會屬於單一客戶。在關聯式資料庫詞彙中,這稱為*「一對多關聯性」。不過,有時候單一事實可聯結到多個維度成員。在關聯式資料庫詞彙中,這稱為「多對多關聯性」*。例如,客戶進行採購有許多原因,而採購原因可能與多個採購相關聯。聯結資料表是用來定義與每項採購相關的銷售原因。從這樣的關聯性建構的 [銷售原因] 維度會有多個成員與單一銷售交易有關。當維度與事實資料表無直接相關時,多對多維度會將維度模型可擴展到典型星形結構描述之外,來支援複雜分析。

在 Microsoft SQL Server 2005 Analysis Services (SSAS) 中,您會透過指定一個聯結到維度資料表的中繼事實資料表,在維度和量值群組之間定義多對多關聯性。中繼事實資料表再聯結到該事實資料表所聯結的中繼維度資料表。中繼事實資料表和關聯性中的維度資料表與中繼維度之間的多對多關聯性,會在主要維度的成員與關聯性所指定的量值群組的量值之間建立多對多關聯性。若要透過中繼量值群組在維度與量值群組之間定義多對多關聯性,中繼量值群組必須和原始量值群組共用一或多個維度。

多對多維度的值是相異加總,也就是說,這些值最多只會彙總一次到 [所有成員] 中。

ms170463.note(zh-tw,SQL.90).gif附註:
為了支援多對多維度關聯性,必須在資料來源檢視的所有相關資料表之間定義主索引鍵–外部索引鍵關聯性。否則,當您在 Cube 設計師的 [維度使用方式] 索引標籤中建立關聯性時,將無法選取正確的中繼量值群組。

如需詳細資訊,請參閱<維度關聯性>和<定義多對多關聯性及多對多關聯性屬性>。

在這個主題的工作中,您會定義 [銷售原因] 維度和 [銷售原因] 量值群組,而且會在 [銷售原因] 維度和 [網際網路銷售] 量值群組之間透過 [銷售原因] 量值群組來定義多對多關聯性。

將必要資料表加入資料來源檢視中

將必要資料表加入資料來源檢視中

  1. 請針對 Adventure Works DW 資料來源檢視,開啟資料來源檢視設計師。

  2. 以滑鼠右鍵按一下 [圖表組合管理] 窗格中的任何位置,按一下 [新增圖表],再指定 [網際網路銷售訂單原因] 作為新圖表的名稱。如需詳細資訊,請參閱<在資料來源檢視中使用圖表 (Analysis Services)>。

    建立的新圖表不包含任何資料表,而且會顯示在 [圖表] 窗格中。

  3. [InternetSales] (dbo.FactInternetSales) 資料表從 [資料表] 窗格拖曳至 [圖表] 窗格。

  4. 以滑鼠右鍵按一下 [圖表] 窗格中的任何位置,再按一下 [加入/移除資料表]

  5. [加入/移除資料表] 對話方塊中,將 [DimSalesReason] 資料表和 [FactInternetSalesReason] 資料表加入 [包含的物件] 清單中,再按一下 [確定]

    請注意,會自動建立相關資料表之間的主索引鍵–外部索引鍵關聯性,因為那些關聯性已定義在基礎關聯式資料庫中如果這些關聯性未定義在基礎關聯式資料庫中,您必須在資料來源檢視中定義它們。

  6. [格式] 功能表上,指向 [自動配置],再按一下 [圖表]

  7. 在 [屬性] 視窗中,將 [DimSalesReason] 資料表的 [FriendlyName] 屬性變更為 [SalesReason],再將 [FactInternetSalesReason] 資料表的 [FriendlyName] 屬性變更為 [InternetSalesReason]

  8. [資料表] 窗格中,展開 [InternetSalesReason (dbo.FactInternetSalesReason)],按一下 [SalesOrderNumber],然後在 [屬性] 視窗中檢閱這個資料行的 [DataType] 屬性。

    請注意,[SalesOrderNumber] 資料行的資料類型是字串資料類型。

  9. 請在 [FactInternetSalesReason] 資料表中檢閱其他資料行的資料類型。

    請注意,這份資料表的其他兩個資料行的資料類型是數值資料類型。

  10. [資料表] 窗格中,以滑鼠右鍵按一下 [InternetSalesReason (dbo.FactInternetSalesReason)],再按一下 [瀏覽資料]

    請注意,每一份訂單內的每一個行號,都有一個索引鍵值來識別行項目的採構原因,如下圖所示。

    識別購買之銷售原因的索引鍵值

定義中繼量值群組

定義中繼量值群組

  1. 請針對 Analysis Services 教學課程的 Cube,切換到 Cube 設計師,再按一下 [Cube 結構] 索引標籤。

  2. 以滑鼠右鍵按一下 [量值] 窗格中的任何位置,再按一下 [新增量值群組]。如需詳細資訊,請參閱<定義及設定量值群組>。

  3. [新增量值群組] 對話方塊中,從 [從資料來源檢視選取資料表] 清單中選取 [InternetSalesReason],再按一下 [確定]

    請注意,[網際網路銷售原因] 量值群組現在出現在 [量值] 窗格中。

  4. 展開 [網際網路銷售原因] 量值群組。

    請注意,對這個新量值群組只定義了單一量值,即 [網際網路銷售原因計數] 量值。

  5. 選取 [網際網路銷售原因計數],並在 [屬性] 視窗中檢閱這個量值的屬性。

    請注意,這個量值的 [AggregateFunction] 屬性是定義為 [計數] 而不是 [總和]。Analysis Services 會選擇 [計數] 是因為基底資料類型是字串資料類型。基礎事實資料表中的其他兩個資料行並未選取作為量值,因為 Analysis Services 偵測到它們是數值索引鍵而不是實際量值。如需詳細資訊,請參閱<定義局部加總行為>。

  6. 在 [屬性] 視窗中,將 [網際網路銷售原因計數] 量值的 [可見] 屬性變更為 False

    這個量值的唯一作用是將您接下來要定義的 [銷售原因] 維度聯結到 [網際網路銷售] 量值群組。使用者不會直接瀏覽這個量值。

    下圖顯示 [網際網路銷售原因計數] 量值的屬性。

    網際網路銷售原因計數量值的屬性

定義多對多維度

定義多對多維度

  1. 針對 Analysis Services 教學課程 Cube,在 Cube 設計師的 [Cube 結構] 索引標籤上,以滑鼠右鍵按一下 [維度] 窗格的任何位置,再按一下 [加入 Cube 維度]

  2. [加入 Cube 維度] 對話方塊中,按一下 [新增維度]

    此時會開啟維度精靈。

  3. [歡迎使用維度精靈] 頁面上,按 [下一步]

  4. [選取資料來源檢視] 頁面上,按 [下一步],從 Adventure Works DW 資料來源檢視中選取維度的資料。

  5. [選取維度類型] 頁面上,按 [下一步],指定該維度是標準維度。

  6. [選取主維度資料表] 頁面上,從 [主資料表] 清單中選取 [dbo.DimSalesReason],並從 [包含成員名稱的資料行 (選擇性)] 清單中選取 [SalesReasonName],再按 [下一步]

  7. [選取維度屬性] 頁面上,清除 [銷售員替代索引鍵] 屬性核取方塊,將 [銷售原因 - 原因類型] 屬性的名稱變更為 [銷售原因類型],再按一下 [完成]

  8. [正在完成精靈] 頁面上,按一下 [完成] 來建立 [銷售原因] 維度,再按一下 [確定],將新建的資料庫維度加入 Analysis Services 教學課程 Cube 中作為 Cube 維度。

  9. [銷售原因] 維度開啟 [維度設計師]。

  10. [階層和層級] 窗格中,以這個順序建立 [銷售原因] 階層,它包含 [銷售原因類型] 層級和 [銷售原因] 層級。

  11. 在 [屬性] 視窗中,定義 [所有銷售原因] 作為 [銷售原因] 階層的 [AllMemberName] 屬性的值。

  12. 定義 [所有銷售原因] 作為 [銷售原因] 維度的 [AttributeAllMemberName] 屬性的值。

定義多對多關聯性

定義多對多關聯性

  1. 請針對 Analysis Services 教學課程的 Cube,切換到 Cube 設計師,再按一下 [維度使用方式] 索引標籤。

    請注意,[銷售原因] 維度與 [網際網路銷售原因] 量值群組之間有定義一般關聯性,但是與 [網際網路銷售][轉售商銷售] 量值群組之間則沒有定義任何關聯性。也請注意,[網際網路銷售訂單的詳細資料] 維度與 [網際網路銷售原因] 維度之間有定義一般關聯性,而後者又與 [網際網路銷售] 量值群組具有「事實關聯性」。如果這個維度不存在 (或是另一個同時與 [網際網路銷售原因][網際網路銷售] 量值群組具有關聯性的維度不存在),您就無法定義多對多關聯性。

  2. [網際網路銷售] 量值群組與 [銷售原因] 維度交集處的資料格中,按一下省略符號按鈕 (...)。

  3. [定義關聯性] 對話方塊中,選取 [選取關聯性類型] 清單中的 [多對多]

    您必須定義連接 [銷售原因] 維度與 [網際網路銷售] 量值群組的中繼量值群組。

  4. [中繼量值群組] 清單中,選取 [網際網路銷售原因]

    下圖顯示 [定義關聯性] 對話方塊中的變更。

    定義關聯性對話方塊

  5. 按一下 [確定]

    請注意代表 [銷售原因] 維度和 [網際網路銷售] 量值群組之間關聯性的多對多圖示,如下圖所示。

    維度和量值群組之間的關聯性

瀏覽 Cube 與多對多維度

瀏覽 Cube 與多對多維度

  1. [建立] 功能表上,按一下 [部署 Analysis Services 教學課程]

  2. 順利完成部署之後,針對 Analysis Services 教學課程 Cube,切換到 Cube 設計師的 [瀏覽器] 索引標籤,再按一下 [重新連接]

  3. [資料] 窗格的資料列區域中移除 [網際網路銷售訂單] 使用者階層的每一個層級,並取代成 [銷售原因] 維度中的 [銷售原因] 使用者階層。

  4. 確認 [網際網路銷售 - 銷售量] 量值仍然出現在 [資料] 窗格的資料區域中,而且 [客戶] 維度的 Adam Powell 成員出現在 [篩選] 窗格中。否則的話,請將 [網際網路銷售 - 銷售量] 量值加入至資料區域中,並將 [客戶地理位置] 使用者自訂階層的 Adam Powell 成員加入至 Subcube 區域 (Australia-Queensland-Brisbane-4000)。

  5. [篩選] 窗格中,這是位於設計區域中央的上窗格,將 [篩選運算式] 變更為 [Queensland],其作法是清除 [Adam Powell] 核取方塊並選取 [篩選運算式] 清單中的 [Queensland] 核取方塊。

  6. 展開 [銷售原因類型] 層級的每一個成員以檢閱幣值,幣值與 Queensland 中的客戶透過網際網路採購 Adventure Works 產品時提出的每一個原因有關聯。

    請注意,與每一個銷售原因有關聯的總計累加超過總銷售量。這是因為有些客戶針對其採購引用了多個原因。

    下圖顯示 Cube 設計師的 [篩選] 窗格和 [資料] 窗格。

    Cube 設計師的篩選和資料窗格

本課程的下一項工作

在量值群組內定義維度資料粒度

請參閱

其他資源

維度關聯性
定義多對多關聯性及多對多關聯性屬性

說明及資訊

取得 SQL Server 2005 協助