在本主題的工作中,您會建立使用者定義的階層,並變更針對 Date、Month、Calendar Quarter 和 Calendar Semester 屬性顯示的成員名稱。 您也可以定義屬性的複合索引鍵、控制維度成員的排序順序,以及定義屬性關聯性。
新增具名計算
您可以將具名計算新增至數據源檢視中的資料表,這是以匯出數據行表示的 SQL 運算式。 表達式會顯示並做為數據表中的資料欄。 具名計算可讓您擴充數據源檢視中現有數據表的關係架構,而不需修改基礎數據源中的數據表。 如需詳細資訊,請參閱 在數據源檢視中定義具名計算 (Analysis Services)
新增具名計算
若要開啟 Adventure Works DW 2012 數據源檢視,請在 [方案總管] 的 [ 數據源檢視 ] 資料夾中按兩下它。
在 數據表 窗格底部附近,右鍵單擊
Date,然後點擊 新增具名計算。在 [建立具名計算] 對話框中,輸入
SimpleDate[數據行名稱] 方塊,然後在 [DATENAME] 方塊中輸入或複製並貼上下列語句:DATENAME(mm, FullDateAlternateKey) + ' ' + DATENAME(dd, FullDateAlternateKey) + ', ' + DATENAME(yy, FullDateAlternateKey)語句
DATENAME會從 FullDateAlternateKey 數據行擷取年、月和日值。 您將使用此新資料行作為 FullDateAlternateKey 屬性的顯示名稱。按兩下 [確定],然後在 [資料表] 窗格中展開
Date。具
SimpleDate名計算會出現在 Date 資料表的數據列清單中,並顯示圖示,指出它是具名計算。在 [檔案] 功能表中,按一下 [全部儲存]。
在 [ 數據表] 窗格中,以滑鼠右鍵按兩下
Date,然後按下 [ 探索數據]。滾動到右側以檢閱 探索日期數據表 檢視中的最後一個列。
請注意,數據
SimpleDate行會出現在數據源檢視中,正確串連基礎數據源中的數個數據行,而不需修改原始數據源。關閉 [ 探索日期數據表 ] 檢視。
使用具名計算來處理成員名稱
在數據源檢視中建立具名計算之後,您可以將具名計算作為屬性的特性使用。
若要針對成員名稱使用具名計算
在 SQL Server Data Tools (SSDT) 中開啟日期維度的Dimension Designer。 若要這樣做,請按兩下
Date在 方案總管 的 維度 節點中。在 [維度結構] 索引標籤的 [屬性] 窗格中,按兩下 [日期索引鍵] 屬性。
如果 [屬性] 視窗未開啟,請開啟 [屬性] 視窗,然後按下標題欄上的 [ 自動隱藏 ] 按鈕,讓它保持開啟狀態。
按兩下視窗底部附近的 NameColumn 屬性欄位,然後按下省略號瀏覽 (...) 按鈕以開啟 [ 名稱資料行 ] 對話方塊。
選取
SimpleDate在 源數據行 清單底部,然後點擊 確定。在 [檔案] 功能表中,按一下 [全部儲存]。
建立階層
您可以將屬性從 [ 屬性 ] 窗格拖曳至 [ 階層 ] 窗格,以建立新的階層。
若要建立階層
在維度設計師的 [維度
Date結構] 索引標籤中,將 [日曆年] 屬性從 [屬性] 窗格拖動到 [階層] 窗格中。將學期屬性從屬性窗格拖曳到<新層級>數據格,中於階層窗格中,置於年度層級底下。
將 行事曆季 屬性從 屬性 窗格拖曳到 <新層級>的格子中,位於 階層 窗格的 日曆學期 層級底下。
將 英文月份名稱 屬性從 屬性 窗格拖曳到 <新層級> 的階層窗格的儲存格中,位於 行事曆季度 層級下方。
將 [日期鍵] 屬性從 [屬性] 窗格拖曳至 <[層級窗格] 中的新層級>單元格,位於 [英文月份名稱] 層級下方。
在 [ 階層 ] 窗格中,以滑鼠右鍵按兩下 階層階層的 標題列,按兩下 [ 重新命名],然後輸入
Calendar Date。使用滑鼠右鍵開啟上下文選單,在
Calendar Date階層中,將英文月份名稱層級重新命名為Calendar Month,然後將日期索引鍵層級重新命名為Date。從 [屬性] 窗格中刪除 [完整日期替代索引鍵] 屬性,因為您不會使用它。 在「刪除物件」確認視窗中點擊「確定」。
在 [檔案] 功能表中,按一下 [全部儲存]。
定義屬性關聯性
如果基礎數據支援,您應該定義屬性之間的屬性關聯性。 定義屬性關聯性可加速維度、數據分割和查詢處理。
定義屬性之間的關聯性
在 維度設計師 的
Date維度中,點選 屬性關聯性 索引標籤。在圖表中,以滑鼠右鍵按兩下 [英文月份名稱] 屬性,然後按兩下 [ 新增屬性關聯性]。
在 [ 建立屬性關聯性] 對話框中, [來源屬性 ] 是 英文月份名稱。 將 [相關屬性 ] 設定為 [行事歷季]。
在 [ 關聯性類型 ] 清單中,將關聯性類型設定為 [固定]。
關聯性類型為 「固定 」,因為成員之間的關聯性不會隨著時間而變更。
按一下 [確定]。
在圖表中,以滑鼠右鍵按一下 [行事歷季] 屬性,然後按一下 [新增屬性關聯性]。
在 建立屬性關聯性 對話框中,來源屬性 是 日曆季度。 將 [相關屬性 ] 設定為 [日曆學期]。
在 [ 關聯性類型 ] 清單中,將關聯性類型設定為 [固定]。
按一下 [確定]。
在圖表中,右鍵按一下 日曆學期 屬性,然後按一下 新增屬性關聯性。
在 [ 建立屬性關聯性] 對話框中, [來源屬性 ] 是 [日曆學期]。 將 [相關屬性 ] 設定為 [行事曆年份]。
在 [ 關聯性類型 ] 清單中,將關聯性類型設定為 [固定]。
按一下 [確定]。
在 [檔案] 功能表中,按一下 [全部儲存]。
提供唯一維度成員名稱
在這項工作中,您將建立使用者友好名稱欄位,供 EnglishMonthName、CalendarQuarter 和 CalendarSemester 屬性使用。
提供唯一維度成員名稱
若要切換至 Adventure Works DW 2012 數據源檢視,請在 [方案總管] 的 [ 數據源檢視 ] 資料夾中按兩下它。
在 資料表 窗格中,以滑鼠右鍵點擊
Date,然後點擊 新增具名計算。在 [ 建立具名計算 ] 對話框中,輸入
MonthName[ 數據行名稱 ] 方塊,然後在 [ 表達式 ] 方塊中輸入或複製並貼上下列語句:EnglishMonthName+' '+ CONVERT(CHAR (4), CalendarYear)語句會將數據表中每個月的月份和年份串連成新的數據列。
按一下 [確定]。
在 數據表 窗格中,以滑鼠右鍵點擊
Date,然後點擊 新建具名計算。在 [建立具名計算] 對話框中,於 [數據行名稱] 方塊中輸入
CalendarQuarterDesc,然後在 [表達式] 方塊中輸入或複製並貼上下列 SQL 腳本:'Q' + CONVERT(CHAR (1), CalendarQuarter) +' '+ 'CY ' + CONVERT(CHAR (4), CalendarYear)此 SQL 腳本會將數據表中每個季的日曆季和年份串連到新的數據行。
按一下 [確定]。
在 數據表 窗格中,按一下右鍵
Date,然後按一下 新命名計算。在 [建立具名計算] 對話框中,於 [數據行名稱] 方塊中輸入
CalendarSemesterDesc,然後在 [表達式] 方塊中輸入或複製並貼上下列 SQL 腳本:CASE WHEN CalendarSemester = 1 THEN 'H1' + ' ' + 'CY' + ' ' + CONVERT(CHAR(4), CalendarYear) ELSE 'H2' + ' ' + 'CY' + ' ' + CONVERT(CHAR(4), CalendarYear) END此 SQL 腳本會將數據表中每個學期的日曆學期和年份串連成新的數據行。
按一下 [確定]。
在 [檔案] 功能表中,按一下 [全部儲存]。
定義複合索引鍵欄位並設定名稱欄位
KeyColumns 屬性包含代表屬性的主鍵的欄位。 在這項工作中,您將定義複合 KeyColumns。
為英文月份名稱屬性定義綜合關鍵欄位
開啟日期維度的維度結構索引標籤。
在 [ 屬性] 窗格中,按兩下 [英文月份名稱] 屬性。
在 [ 屬性] 視窗中,按兩下 [KeyColumns ] 字段,然後按兩下 [瀏覽] 按鈕。
在 鍵欄位 對話方塊的 可用欄位 清單中,選取 CalendarYear 資料行,然後按下 > 按鈕。
EnglishMonthName 和 CalendarYear 欄位現在會顯示在 索引鍵欄位 清單中。
按一下 [確定]。
若要設定 EnglishMonthName 屬性的 NameColumn 屬性,請按兩下 [屬性] 視窗中的 [NameColumn] 字段,然後按兩下 [流覽][...] 按鈕。
在 [ 名稱數據行 ] 對話方塊的 [ 源數據 行] 清單中,選取
MonthName,然後按兩下 [ 確定]。在 [檔案] 功能表中,按一下 [全部儲存]。
為「日曆季度」屬性定義複合鍵列
在 屬性 窗格中,點選 行事曆季 屬性。
在 [ 屬性] 視窗中,按兩下 [KeyColumns ] 字段,然後按兩下 [瀏覽] 按鈕。
在 索引鍵欄 對話方塊的 可用欄 清單中,選取 CalendarYear 欄,然後按下 > 按鈕。
CalendarQuarter 和 CalendarYear 欄位現在會顯示在 關鍵欄位 清單中。
按一下 [確定]。
若要設定 Calendar Quarter 屬性的 NameColumn 屬性,請按兩下 [屬性] 視窗中的 [NameColumn] 字段,然後按兩下 [流覽][...] 按鈕。
在 [ 名稱數據行 ] 對話方塊的 [ 源數據 行] 清單中,選取
CalendarQuarterDesc,然後按兩下 [ 確定]。在 [檔案] 功能表中,按一下 [全部儲存]。
定義行事曆學期屬性的組合 KeyColumns
在屬性窗格中,點擊行事曆學期屬性。
在 [ 屬性] 視窗中,按兩下 [KeyColumns ] 字段,然後按兩下 [瀏覽] 按鈕。
在 [索引鍵行] 對話方塊的 [可用欄] 清單中,選取資料行 CalendarYear,然後按下 > 按鈕。
CalendarSemester 和 CalendarYear 資料行現在會顯示在 關鍵欄 列表中。
按一下 [確定]。
若要設定 Calendar Semester 屬性的 NameColumn 屬性,請按下屬性視窗中的 NameColumn 字段,然後按覽 (...) 按鈕。
在 [ 名稱數據行 ] 對話方塊的 [ 源數據 行] 清單中,選取
CalendarSemesterDesc,然後按兩下 [ 確定]。在 [檔案] 功能表中,按一下 [全部儲存]。
部署和檢視變更
變更屬性和階層之後,您必須先部署變更並重新處理相關物件,才能檢視變更。
部署並查看變更
在 SQL Server Data Tools 的 [建置] 功能表上,按一下 [部署 Analysis Services 教學]。
在收到 [部署成功完成] 訊息之後,按一下維度設計師的 [瀏覽器] 索引標籤,然後按一下設計師的工具列上的 [重新連接] 按鈕。
從階層列表中選取行事曆季。 檢閱 Calendar Quarter 屬性階層中的成員。
請注意, Calendar Quarter 屬性階層的成員名稱較清楚且更容易使用,因為您已建立具名計算來做為名稱。 成員現在存在於每年每個季的 Calendar Quarter 屬性階層中。 成員不會依時間順序排序。 相反地,它們按季排序,然後依年份排序。 在本主題的下一個工作中,您將修改此行為,依年份和季排序此屬性階層的成員。
檢閱英文月份名稱和行事曆學期屬性階層的成員。
請注意,這些階層的成員也不會依時間順序排序。 相反地,它們會分別依月份或學期排序,然後依年份排序。 在本主題的下一個工作中,您將修改此行為以變更此排序順序。
修改複合索引鍵成員順序來變更排序順序
在這項任務中,您將通過變更複合索引鍵的順序來調整排序順序。
修改複合鍵成員順序
開啟維度設計師的 [維度結構] 索引標籤,然後在 [屬性] 窗格中選取 [日曆學期]。
在 [屬性] 視窗中,檢閱 OrderBy 屬性的值。 它設定為 [金鑰]。
[日曆學期] 屬性階層的成員會依鍵值排序。 使用複合索引鍵時,成員索引鍵的順序會先根據第一個成員索引鍵的值,再根據第二個成員索引鍵的值。 換句話說, 行事曆學期 屬性階層的成員會先依學期排序,再依年份排序。
在 [屬性] 視窗中,按下省略號瀏覽按鈕 (...) 以變更 KeyColumns 屬性值。
在 [ 索引鍵 數據行] 對話方塊的 [ 索引鍵 數據行] 清單中,確認已選取 CalendarSemester ,然後按下向下箭號來反轉此複合索引鍵的成員順序。 按一下 [確定]。
屬性階層的成員現在會先依年份排序,再依學期排序。
在 [屬性] 窗格中選取 [行事歷季],然後按兩下 [屬性] 視窗中KeyColumns屬性的省略號瀏覽按鈕 (...)。
在 [ 索引鍵 數據行] 對話方塊的 [ 索引鍵 數據行] 清單中,確認已選取 CalendarQuarter ,然後按下向下箭號來反轉此複合索引鍵的成員順序。 按一下 [確定]。
屬性階層的成員現在會先依年份排序,再依季排序。
在 [屬性] 窗格中選取 [英文月份名稱],然後按兩下 [屬性] 視窗中KeyColumns屬性的省略號按鈕 (...)。
在 [ 索引鍵 數據行] 對話方塊的 [ 索引鍵 數據行] 清單中,確認已選取 EnglishMonthName ,然後按下向下箭號來反轉此複合索引鍵的成員順序。 按一下 [確定]。
屬性階層的成員現在會先依年份排序,再依月份排序。
在 SQL Server Data Tools 的 [建置] 功能表上,按一下 [部署 Analysis Services 教學]。 部署成功完成時,按兩下維度設計師中的 [瀏覽器 ] 索引標籤,
Date以取得維度。在 [ 瀏覽器] 索引標籤的工具列上,按兩下 [重新連線] 按鈕。
檢閱 行事曆季度 和 行事曆學期 屬性階層的成員。
請注意,這些階層的成員現在會依時間順序、依年排序,然後分別依季或學期排序。
檢閱 英文月份名稱 屬性階層的成員。
請注意,階層的成員現在會先依年份排序,然後依月份依字母順序排序。 這是因為數據源檢視中 EnglishCalendarMonth 數據行的數據類型是以基礎關係資料庫中 nvarchar 數據類型為基礎的字串數據行。 如需如何讓月份在每年內依時間順序排序的資訊,請參閱 根據次要屬性排序屬性成員。