課程 5-4 - 定義量值群組內的維度粒度
適用於: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
使用者想要針對不同的用途,以不同的粒度或特定度來維度事實數據。 例如,轉銷商或因特網銷售的銷售數據可能會每天記錄,而銷售配額資訊可能只存在於月份或季度層級。 在這些案例中,使用者會想要每個不同事實數據表具有不同粒紋或詳細數據層級的時間維度。 雖然您可以將新的資料庫維度定義為具有此不同粒紋的時間維度,但 SQL Server Analysis Services 有更簡單的方式。
根據預設,在 SQL Server Analysis Services 中,當維度在量值群組內使用時,該維度內數據的粒紋會以維度的索引鍵屬性為基礎。 例如,當時間維度包含在量值群組中,而時間維度的預設粒紋為每日時,量值群組內該維度的默認粒紋是每日。 這是適當的次數,例如本教學課程中的 Internet Sales 和 Reseller Sales 量值群組。 不過,當這類維度包含在其他類型的量值群組中時,例如銷售配額或預算量值群組中,每月或每季穀物通常更合適。
若要為預設粒紋以外的 Cube 維度指定粒紋,您可以修改 Cube 維度的粒度屬性,如同在 Cube 設計師的 [維度使用方式] 索引卷標上,維度使用方式 索引卷標上的特定量值群組所使用。 當您將特定量值群組內的維度粒紋變更為該維度之索引鍵屬性以外的屬性時,您必須保證量值群組中的所有其他屬性直接或間接都與新的數據粒度屬性相關。 您可以指定所有其他屬性與量值群組中指定為數據粒度屬性的屬性之間的屬性關聯性來執行此動作。 在此情況下,您會定義其他屬性關聯性,而不是移動屬性關聯性。 指定為數據粒度屬性的屬性實際上會成為維度中剩餘屬性之量值群組中的索引鍵屬性。 如果您未適當指定屬性關聯性,SQL Server Analysis Services 將無法正確匯總值,如本主題的工作所示。
如需詳細資訊,請參閱 維度關聯性、定義一般關聯性和一般關聯性屬性。
在本主題的工作中,您會新增 Sales Quotas 量值群組,並定義此量值群組中 Date 維度的數據粒度,以每月為單位。 接著,您可以定義月份屬性與其他維度屬性之間的屬性關聯性,以確保 SQL Server Analysis Services 會正確匯總值。
新增數據表並定義銷售配額量值群組
切換至 Adventure Works DW 2019 數據源檢視。
以滑鼠右鍵按兩下 [圖表召集人] 窗格中的任何位置,按兩下 [[新增圖表],然後將圖表命名為 [銷售配額]。
將 Employee、Sales Territory和 [日期] 數據表從 [數據表] 窗格拖曳至 [圖表] 窗格。
以滑鼠右鍵按兩下 [
圖表 ] 窗格中的任何位置,然後選取 [新增/移除資料表] ,將 [FactSalesQuota 數據表新增至 [圖表] 窗格。 請注意,SalesTerritory 數據表會透過 Employee 資料表連結到 FactSalesQuota 數據表。
檢閱 FactSalesQuota 數據表中的數據行,然後瀏覽此數據表中的數據。
請注意,此數據表中的數據粒紋是行事歷季,這是 FactSalesQuota 數據表中最低層級的詳細數據層級。
在 [數據源檢視設計工具] 中,將 FactSalesQuota 數據表的 FriendlyName 属性變更為 SalesQuotas。
切換至 [SQL Server Analysis Services 教學課程] Cube,然後按兩下 [Cube 結構] 索引標籤。
以滑鼠右鍵按兩下 [
量值 ] 窗格中的任何位置,按兩下 [新增量值群組][新增量值 群組] [SalesQuotas ] 對話框,然後按兩下 [ 確定] 。銷售配額 量值群組會出現在 [量值] 窗格中。 在 [維度] 窗格中,請注意,也會根據 Date 資料庫維度來定義新的 Date Cube 維度。 定義新的時間相關 Cube 維度,因為 SQL Server Analysis Services 不知道哪些現有時間相關 Cube 維度與
FactSalesQuota 數據行相關的 FactSalesQuota 事實數據表,這些維度會低於 Sales Quotas 量值群組。 您稍後會在本主題的另一個工作中變更此專案。展開 [銷售配額] 量值群組。
在 [量值] 窗格中,選取 [Sales Amount Quota],然後將 [屬性] 視窗中的 [FormatString] 属性的值設定為 [貨幣]。
選取 [銷售配額計數] 量值
,然後在 [屬性] 視窗中輸入 #,# 做為FormatString 屬性的值。從 Sales Quotas 量值群組中刪除 Calendar Quarter 量值。
SQL Server Analysis Services 偵測到將 Calendar Quarter 量值作為包含量值的數據行底下的數據行。 不過,此數據行和 CalendarYear 資料行包含值,您將用來將 Sales Quotas 量值群組連結至本主題稍後的 Date 維度。
在 [量值] 窗格中,以滑鼠右鍵按兩下 [Sales Quotas 量值] 群組,然後按兩下 [[新增量值]。
[新增量值] 對話框隨即開啟,其中包含具有總和 使用量類型之量值的可用源數據行。
在 [
[新增量值 ] 對話框中,選取 [使用量 ] 清單中的[相異計數 ],確認 [SalesQuotas 已在 [源數據表] 清單中選取 [ EmployeeKey ],然後單擊 [ 確定 ]。請注意,量值是在名為 Sales Quotas 1的新量值群組中建立。 SQL Server 中的相異計數量值是在自己的量值群組中建立,以將處理效能最大化。
將 Employee Key Distinct Count 量值 Name 屬性的值變更為 Sales Person Count,然後輸入 #,# 做為 FormatString 属性的值。
依日期在銷售配額量值群組中再次流覽量值
在 [建置] 功能表上,按兩下 [[部署 Analysis Services 教學課程]。
部署成功完成時,按兩下 [Cube 設計工具] 中 SQL Server Analysis Services 教學課程 Cube 中的 [
Browser ] 索引標籤,然後按兩下 [重新連線] 按鈕。 按下 [Excel] 快捷方式,然後按兩下 [[啟用]。
在數據透視表欄位清單中,展開 [銷售配額] 量值群組,然後將 [銷售量配額] 量值拖曳至 [值] 區域。
展開 [Sales Territory] 維度,然後將 Sales Territories 使用者定義的階層拖曳至 [數據列卷標]。
請注意,Sales Territory Cube 維度與事實銷售配額數據表無關,如下圖所示。
在本主題的下一系列步驟中,您將定義此維度與這個事實數據表之間的參考維度關聯性。
將 Sales Territories 用戶階層,從 [數據列卷標] 區域移至 [數據行卷標] 區域。
在 [數據透視表字段] 清單中,選取 [Sales Territories 使用者定義階層],然後按兩下右邊的向下箭號。
在篩選中,按兩下 [全選] 複選框以清除所有選取專案,然後選擇只 北美。
選取 [北美洲] 的 [篩選] 窗格
在資料分析欄位清單中,展開 Date。
將 Date.Fiscal Date 用戶階層拖曳至 [數據列卷標]
在數據透視表上,按兩下 [數據列卷標] 旁的向下箭號。 清除除 2008 年 FY 2008以外的所有年份。
請注意,只有 2007 年 7 月 層級的成員才會出現,而不是 7 月 。 2007年 8 月、2007 年 8 月、2007 年 8 月 日 月 層級的成員,而且只有 2007 年 7 月 1 日日期 層級的成員,而不是全部 31 天。 之所以發生此行為,是因為事實數據表中的數據粒紋位於四分之一層級,而 Date 維度的粒紋是每日層級。 您會在本主題的下一個工作中變更此行為。
另請注意,銷售金額配額 月份和日層級的值與季度層級的值相同,$13,733,000.00。 這是因為銷售配額量值群組中數據的最低層級位於季度層級。 您會在第 6 課變更此行為。
下圖顯示 Sales Amount Quota的值。
定義銷售配額量值群組的維度使用屬性
開啟 [
Employee ] 維度的 [維度設計工具],以滑鼠右鍵按兩下 [ ,然後按兩下 [從數據行數據源檢視] 窗格中的 [SalesTerritoryKey][新增屬性]。 在 [屬性] 窗格中,選取 [SalesTerritoryKey],然後在 [屬性] 視窗中將 [屬性] 中的 [屬性][ 屬性] 設定為 [False] 將 AttributeHierarchyOptimizedState 屬性設定為 NotOptimized,並將 AttributeHierarchyOrdered 属性設定為 False。
必須有此屬性,才能將 Sales Territory 維度連結至 銷售配額,並將銷售配額 1 量值群組鏈接為參考維度。
在 SQL Server Analysis Services 教學課程 Cube 的 Cube 設計師中,按兩下 [維度使用量] 索引卷標,然後檢閱 [銷售配額] 內的維度使用量,並 [銷售配額 1] 量值群組。
請注意,Employee 和 Date Cube 維度會透過一般關聯性連結到 銷售配額和銷售配額 1 量值群組。 另請注意,Sales Territory Cube 維度並未連結至其中一個量值群組。
按兩下
Sales Territory 維度交集處的單元格,然後按兩下 [銷售配額] 量值群組的交集,然後按下瀏覽按鈕 (... ]。[定義關聯性] 對話框隨即開啟。 在 [選取關聯性類型 列表中,選取 [參考。
在 [中繼維度] 列表中,選取 [Employee]。
在 [參考維度屬性 列表中,選取 [Sales Territory Region]。
在 [中繼維度屬性 列表中,選取 [Sales Territory Key]。 (Sales Territory Region 屬性的索引鍵數據行是 SalesTerritoryKey 數據行。
確認已選取 [具體化] 複選框。
按下 [確定] 。
按兩下 [
Sales Territory ] 維度和 [銷售配額 1 量值群組] 交集處的數據格,然後按下瀏覽按鈕 (... ]。[定義關聯性] 對話框隨即開啟。 在 [選取關聯性類型 列表中,選取 [參考。
在 [中繼維度] 列表中,選取 [Employee]。
在 [參考維度屬性 列表中,選取 [Sales Territory Region]。
在 [中繼維度屬性 列表中,選取 [Sales Territory Key]。 (Sales Territory Region 屬性的索引鍵數據行是 SalesTerritoryKey 數據行。
確認已選取 [具體化] 複選框。
按下 [確定] 。
刪除 日期 Cube 維度。
您將使用 Sales Quotas 量值群組中的 [訂單日期] Cube 維度作為維度銷售配額的日期,而不是擁有四個時間相關的 Cube 維度。 您也將使用此 Cube 維度作為 Cube 中的主要日期維度。
在 [維度] 列表中,將 Order Date Cube 維度重新命名為 Date。
將 訂單日期 Cube 維度重新命名為 Date 讓使用者更容易瞭解其角色作為此 Cube 中的主要日期維度。
按兩下資料格中 銷售配額 量值群組和 日期 維度交集處的瀏覽按鈕(...)。
在 [
定義關聯性 ] 對話框中,選取 [選取關聯性類型] 清單中的 [[一般 ]。在 [數據粒度屬性 列表中,選取 [[行事歷季]。
請注意,因為您已將非索引鍵屬性選取為數據粒度屬性,因此您必須確定所有其他屬性直接或間接與數據粒度屬性相關,方法是將它們指定為成員屬性。
在 [
定義關聯性 ] 對話框的 [關聯性 ] 區域中, 將calendarYear 和CalendarQuarter 維度數據行從 Date Cube 維度下方的數據表連結至 [日期]CalendarYear ,CalendarQuarter [銷售配額] 量值群組下方數據表中的數據行,然後按兩下 [確定]。 注意
Calendar Quarter 定義為 Sales Quotas 量值群組中 Date Cube 維度的數據粒度屬性,但 Date 屬性會繼續是 Internet Sales 和 Reseller Sales 量值群組的數據粒度屬性。
針對 銷售配額 1 量值群組重複上述四個步驟。
定義日曆季屬性與日期維度中其他維度屬性之間的屬性關聯性
切換至 Date 維度的 [維度設計師],然後按兩下 [屬性關聯] 索引標籤。
請注意,雖然 Calendar Year 會透過 Calendar Quarter 屬性連結到 Calendar Quarter,但會計行事曆屬性只會彼此連結:它們不會連結到 Calendar Quarter 屬性,因此不會在 銷售配額 量值群組中正確匯總。
在圖表中,以滑鼠右鍵按兩下 [行事曆季] 屬性,然後選取 [[新增屬性關聯性]。
在 [建立屬性關聯性] 對話框中,[來源屬性][行事歷季]。 將 相關屬性 設定為 Fiscal Quarter。
按下 [確定] 。
請注意,會出現警告訊息,指出 Date 維度包含一或多個多餘的屬性關聯性,當非索引鍵屬性用作粒度屬性時,可能會防止匯總數據。
刪除 Month Name 屬性與 Fiscal Quarter 屬性之間的屬性關聯性。
在 [檔案] 功能表上,按兩下 [[全部儲存]。
依日期瀏覽銷售配額量值群組中的量值
在 [建置] 功能表上,按兩下 [[部署 Analysis Services 教學課程]。
部署順利完成時,按兩下 [CUBE 設計工具] 中 SQL Server Analysis Services 教學課程 Cube 中的 [Browser] 索引標籤,然後按兩下 [重新連線]。
按下 [Excel] 快捷方式,然後按兩下 [[啟用]。
將 [銷售金額配額] 量 量值拖曳至 [值] 區域。
將 Sales Territories 用戶階層拖曳至 [數據行卷標],然後篩選 北美。
將 Date.FiscalDate 用戶階層拖曳至 [數據列卷標],然後按兩下數據透視表上 數據列卷標旁的向下箭號,然後清除 FY 2008以外的所有複選框,只顯示會計年度 2008。
按兩下 [確定]。
展開 FY 2008,展開 H1 FY 2008,然後展開 Q1 FY 2008。
下圖顯示 SQL Server Analysis Services 教學課程 Cube 的數據透視表,且已正確維度 Sales Quota 量值群組。
請注意,會計季層級的每個成員都有與季層級相同的值。 例如,使用 Q1 FY 2008,第 1 季 FY 2008 的配額為 $9,180,000.00 美元,也是其每個成員的值。 之所以發生此行為,是因為事實數據表中的數據粒紋位於季層級,而 Date 維度的粒紋也位於季層級。 在第 6 課中,您將瞭解如何按比例分配每季金額。
下一課
第 6 課 :定義計算