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