共用方式為


課程 5-3 - 定義多對多關聯性

適用於: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

當您定義維度時,通常每個事實都會聯結至一個維度成員,而單一維度成員可以與許多不同的事實相關聯。 例如,每個客戶可以有許多訂單,但每個訂單都屬於單一客戶。 在關係資料庫術語中,這稱為 一對多關係。 不過,有時候單一事實可以聯結至多個維度成員。 在關係資料庫術語中,這稱為 多對多關聯性。 例如,客戶可能會有多個購買原因,而購買原因可能會與多個購買相關聯。 聯結數據表可用來定義與每個購買相關的銷售原因。 然後,從這類關聯性建構的 Sales Reason 維度會有多個與單一銷售交易相關的成員。 當維度與事實數據表不直接相關時,多對多維度會將維度模型擴充到傳統星型架構之外,並支援複雜的分析。

在 SQL Server Analysis Services 中,您可以藉由指定聯結至維度數據表的中繼事實數據表,定義維度與量值群組之間的多對多關聯性。 中繼事實數據表接著會聯結至事實數據表所聯結的中繼維度數據表。 中繼事實數據表與關聯性中維度數據表和中繼維度之間的多對多關聯性,會在主要維度成員與關聯性所指定的量值群組中建立多對多關聯性。 若要透過中繼量值群組定義維度與量值群組之間的多對多關聯性,中繼量值群組必須與原始量值群組共用一或多個維度。

使用多對多維度時,值會相異加總,這表示它們不會多次匯總至 All 成員。

注意

為了支援多對多維度關聯性,必須在涉及的所有數據表之間的數據源檢視中定義主鍵-外鍵關聯性。 否則,當您在 Cube 設計師的 [維度使用方式] 索引標籤中建立關聯性時,將無法選取正確的中繼量值群組。

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

在本主題的工作中,您會定義 Sales Reasons 維度和 Sales Reasons 量值群組,並透過 Sales Reasons 量值群組定義 Sales Reasons 維度與 Internet Sales 量值群組之間的多對多關聯性。

將必要的數據表新增至數據源檢視

  1. Adventure Works DW 2019 數據源檢視的開放數據源檢視設計工具。

  2. 以滑鼠右鍵按兩下 [圖表召集人] 窗格中的任何位置,按兩下 [新圖表],然後指定 [因特網銷售訂單原因] 為這個新圖表的名稱。

  3. InternetSales 數據表從 [數據表] 窗格拖曳至 [圖表] 窗格。

  4. 以滑鼠右鍵按兩下 [圖表] 窗格中的任何位置,然後按兩下 [新增/移除資料表]

  5. [新增/移除數據表] 對話框中,將 [DimSalesReason 數據表和 FactInternetSalesReason 數據表新增至 Included 物件清單,然後按兩下 [確定]

    請注意,自動建立涉及之數據表之間的主鍵-外鍵關聯性,因為這些關聯性是在基礎關係資料庫中定義。 如果未在基礎關係資料庫中定義這些關聯性,您必須在數據源檢視中定義這些關聯性。

  6. 在 [格式] 功能表上,指向 [自動配置] ,然後單擊 [圖表]。

  7. 在 [屬性] 視窗中,將 DimSalesReason 數據表的 FriendlyName 属性變更為 SalesReason,然後將 FactInternetSalesReason 數據表的 FriendlyName 属性變更為 InternetSalesReason

  8. 在 [數據表] 窗格中,展開 InternetSalesReason (dbo]。FactInternetSalesReason),按兩下 [SalesOrderNumber],然後在 [屬性] 視窗中檢閱此數據行的 DataType 屬性。

    請注意,SalesOrderNumber 資料行的數據類型是字串數據類型。

  9. 檢閱 InternetSalesReason 數據表中其他數據行的數據類型。

    請注意,此數據表中其他兩個數據行的數據類型是數值數據類型。

  10. 在 [數據表] 窗格中,以滑鼠右鍵按兩下 internetSalesReason (dbo) InternetSalesReason。FactInternetSalesReason),然後按兩下 [瀏覽資料

    請注意,針對每個訂單中的每個行號,索引鍵值會識別該明細項目的購買銷售原因,如下圖所示。

    金鑰值,以識別購買的銷售原因 的銷售原因

定義中繼量值群組

  1. 切換至 SQL Server Analysis Services 教學課程 Cube 的 Cube 設計工具,然後按兩下 [Cube 結構] 索引卷標。

  2. 以滑鼠右鍵按兩下 [量值] 窗格中的任何位置,然後按兩下 [[新增量值群組]。 如需詳細資訊,請參閱 在多維度模型中建立量值和量值群組

  3. 在 [[新增量值群組] 對話框中,選取 [InternetSalesReason] 從數據源檢視 列表中選取數據表,然後按兩下 [確定]

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

  4. 展開 [因特網銷售原因] 量值群組

    請注意,此新量值群組只會定義單一量值,因特網銷售原因計數 量值。

  5. 選取 [[因特網銷售原因計數],然後在 [屬性] 視窗中檢閱此量值的屬性。

    請注意,此量值 AggregateFunction 屬性定義為 Count,而不是 Sum。 SQL Server Analysis Services 選擇 Count,因為基礎數據類型是字串數據類型。 基礎事實數據表中的其他兩個數據行並未選取為量值,因為 SQL Server Analysis Services 偵測到它們為數值索引鍵,而不是實際量值。 如需詳細資訊,請參閱 定義半加總行為

  6. 在 [屬性] 視窗中,將 Internet Sales Reason Count 量值的 Visible 属性變更為 False

    此量值只會用來聯結您將定義在 Internet Sales 量值群組旁的 Sales Reason 維度。 使用者不會直接流覽此量值。

    下圖顯示 因特網銷售原因計數 量值的屬性。

    Internet Sales Reason Count 量值的屬性

定義多對多維度

  1. 在 [方案總管] 中,以滑鼠右鍵按兩下 [維度],然後按兩下 [[新增維度]

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

  3. 在 [選取建立方法] 頁面上,確認已選取 [使用現有的數據表] 選項,然後按兩下 [下一步]

  4. 在 [指定來源資訊 頁面上,確認已選取 Adventure Works DW 2019 數據源檢視。

  5. 在 [Main 數據表] 列表中,選取 [SalesReason]。

  6. 在 [索引鍵] 數據行 清單中,確認已列出 salesReasonKey

  7. 在 [名稱] 數據行 列表中,選取 [SalesReasonName]。

  8. 點選 [下一步]

  9. 在 [選取維度屬性] 頁面上,會自動選取 [銷售原因索引鍵] 屬性,因為它是索引鍵屬性。 選取 [銷售原因原因類型] 屬性旁的複選框,將其名稱變更為 [銷售原因類型],然後按兩下 [下一步]

  10. [完成精靈] 頁面上,按兩下 [完成 完成],以建立 [銷售原因] 維度。

  11. 在 [檔案] 功能表上,按兩下 [[全部儲存]

  12. 在 [銷售原因] 維度的 [維度設計師] 的 [屬性] 窗格中,選取 [銷售 原因索引鍵],然後將 [屬性] 視窗中 的 [名稱] 屬性變更為 [銷售原因]

  13. 在維度設計師的 [階層] 窗格中,建立 銷售原因 用戶階層,其中包含 銷售原因類型 層級,以及依該順序 銷售原因 層級。

  14. 在 [屬性] 視窗中,將 [所有銷售原因] 定義為 Sales Reasons 階層 AllMemberName 属性的值。

  15. 定義 所有銷售原因 為 Sales Reason 維度 AttributeAllMemberName 屬性的值。

  16. 若要將新建立的維度新增至 SQL Server Analysis Services 教學課程 Cube 作為 Cube 維度,請切換至 Cube 設計工具。 在 [Cube 結構] 索引卷標上,以滑鼠右鍵按兩下 [[維度] 窗格中,然後選取 [[新增 Cube 維度]

  17. 在 [新增 Cube 維度] 對話框中,選取 [銷售原因],然後按兩下 [確定] [確定]

  18. 在 [檔案] 功能表上,按兩下 [[全部儲存]

定義多對多關聯性

  1. 切換至 SQL Server Analysis Services 教學課程 Cube 的 Cube 設計工具,然後按兩下 [維度使用方式] 索引標籤。

    請注意,Sales Reason 維度與 Internet Sales Reason 量值群組定義一般關聯性,但與 Internet SalesReseller Sales 量值群組沒有定義關聯性。 另請注意,因特網銷售訂單詳細數據 維度具有與 Internet Sales Reason 維度定義的一般關聯性,而該維度又具有與 Internet Sales 量值群組 事實關聯性。 如果這個維度不存在(或另一個維度與 因特網銷售原因因特網銷售 量值群組沒有關聯性),您將無法定義多對多關聯性。

  2. 按兩下 Internet Sales 量值群組和 [銷售原因] 維度交集處的單元格,然後按單擊瀏覽按鈕 (...]。

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

    您必須定義將 Sales Reason 維度連接到因特網銷售量值群組的中繼量值群組。

  4. 在 [中繼量值群組] 列表中,選取 [[因特網銷售原因]

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

    定義關聯性對話框

  5. 按下 [確定]

    請注意代表 Sales Reason 維度與 Internet Sales 量值群組之間關聯性的多對多圖示。

流覽 Cube 和多對多維度

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

  2. 部署順利完成時,請切換至 SQL Server Analysis Services 教學課程 Cube Cube 的 [Cube 設計工具] 中的 [Browser] 索引卷標,然後按兩下 [重新連線]

  3. 因特網 Sales-Sales Amount 量值新增至數據窗格的數據區域。

  4. 銷售原因 用戶定義階層,從 Sales Reason 維度新增至數據窗格的數據列區域。

  5. 在元數據窗格中,依序展開 [客戶]、[位置]、[客戶地理位置]、[成員]、[所有客戶]、[澳大利亞]、以滑鼠右鍵單擊 昆士蘭,然後單擊 [新增至篩選]。

  6. 展開 銷售原因類型 層級的每個成員,以檢閱與昆士蘭州客戶透過因特網購買 Adventure Works 產品的每個原因相關聯的美元值。

    請注意,與每個銷售原因相關聯的總計總計最多超過總銷售額。 這是因為某些客戶引用了購買的多個原因。

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

    Cube 設計師的 [篩選] 和 [數據] 窗格,

課程中的下一個工作

定義量值群組內的維度粒度

另請參閱

使用數據源檢視設計工具中的圖表 (Analysis Services)
維度關聯性
定義多對多關聯性和多對多關聯性屬性