課程 3-4 - 修改日期維度

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

在本主題的工作中,您會建立使用者定義的階層,並變更針對 Date、Month、Calendar Quarter 和 Calendar Semester 屬性顯示的成員名稱。 您也可以定義屬性的複合索引鍵、控制維度成員的排序順序,以及定義屬性關聯性。

新增具名計算

您可以將具名計算新增至數據源檢視中的資料表,這是以匯出數據行表示的 SQL 運算式。 表達式會顯示並做為數據表中的數據行。 具名計算可讓您擴充數據源檢視中現有數據表的關係架構,而不需修改基礎數據源中的數據表。 如需詳細資訊,請參閱 在數據源檢視中定義具名計算

加入具名計算

  1. 若要開啟 Adventure Works DW 2019 數據源檢視,請在 [方案總管] 的 [ 數據源檢視] 資料夾中按兩下它。

  2. 在 [數據表] 窗格底部附近,以滑鼠右鍵按兩下 [日期],然後按兩下 [新增具名計算]

  3. [建立具名計算] 對話框中,在 [數據行名稱] 方塊中輸入 simpleDate,然後在 [Expression] 方塊中輸入或複製下列 DATENAME 語句:

    DATENAME(mm, FullDateAlternateKey) + ' ' +  
    DATENAME(dd, FullDateAlternateKey) + ', ' +  
    DATENAME(yy, FullDateAlternateKey)  
    

    DATENAME 語句會從 FullDateAlternateKey 數據行擷取年、月和日值。 您將使用此新資料行作為 FullDateAlternateKey 屬性的顯示名稱。

  4. 單擊 [確定 ],然後在 [數據表] 窗格中展開 [日期]

    SimpleDate 具名計算會出現在 Date 數據表的數據行清單中,並顯示圖示,指出它是具名計算。

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

  6. 在 [數據表] 窗格中,以滑鼠右鍵按兩下 [Date],然後按兩下 [探索數據]。

  7. 卷動至右側,以檢閱 [探索日期數據表] 檢視中的最後一個數據行。

    請注意,SimpleDate 數據行會出現在數據源檢視中,正確串連基礎數據源中的數個數據行,而不需修改原始數據源。

  8. 關閉 [探索日期數據表] 檢視

使用成員名稱的具名計算

在數據源檢視中建立具名計算之後,您可以使用具名計算作為屬性的屬性。

若要針對成員名稱使用具名計算

  1. 針對 SQL Server Data Tools 中的日期維度開啟 維度設計工具。 若要這樣做,請在 [方案總管]的 [維度] 節點中,按兩下 日期 維度。

  2. 在 [維度結構] 索引標籤的 [屬性] 窗格中,按兩下 [日期索引鍵] 屬性

  3. 如果 [屬性] 視窗未開啟,請開啟 [屬性] 視窗,然後按下標題欄上的 [自動隱藏] 按鈕,讓它保持開啟狀態。

  4. 按兩下視窗底部附近的 NameColumn 屬性欄位,然後按下省略號瀏覽 (...) 按鈕,開啟 [名稱數據行] 對話框。

  5. 選取 [來源] 數據行 列表 底部的 [SimpleDate],然後按兩下 [確定][ ]。

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

建立階層

您可以將屬性從 [屬性] 窗格拖曳至 [階層] 窗格,以建立新的階層。

若要建立階層

  1. 在 [日期] 維度的 [維度設計師] [維度結構] 索引標籤中,從 [屬性] 窗格,將 [Calendar Year] 属性拖曳到 [階層] 窗格。

  2. 將 [日曆學期] 屬性從 [屬性] 窗格拖曳到 [階層] 窗格的 [新層級] 數據格底下 [行事曆年度] 層級下方。

  3. 將 [Calendar Quarter] 屬性從 [屬性] 窗格拖曳到 [階層] 窗格的 [新層級] 數據格底下,[日曆學期] 層級底下。

  4. 將 [英文月份名稱] 屬性從 [屬性] 窗格拖曳到 [階層] 窗格的 [新層級] 單元格中,位於 [[日曆季] 層級下方。

  5. 將 [日期索引鍵] 屬性從 [屬性] 窗格拖曳到 [階層] 窗格的 [<新層級>] 數據格底下,英文月份名稱 層級底下。

  6. 在 [階層] 窗格中,以滑鼠右鍵按兩下 階層 階層的標題列,按兩下 [重新命名],然後輸入 [行事曆日期]

  7. 藉由使用滑鼠右鍵操作功能表,在 [行事曆日期] 階層中,將 [英文月份名稱] 層級重新命名為 [行事曆月],然後將 日期索引鍵 層級重新命名為 Date

  8. 從 [屬性] 窗格中刪除 [完整日期替代索引鍵] 屬性,因為您不會使用它。 在 [刪除物件] 確認視窗中,按兩下 [確定]

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

定義屬性關聯性

如果基礎數據支援,您應該定義屬性之間的屬性關聯性。 定義屬性關聯性可加速維度、數據分割和查詢處理。

定義屬性關聯性

  1. Date 維度的 [維度設計師] 中,按兩下 [屬性關聯性] 索引標籤。

  2. 在圖表中,以滑鼠右鍵按兩下 英文月份名稱 屬性,然後按兩下 [新增屬性關聯性]

  3. 在 [建立屬性關聯性 ] 對話框中,來源屬性 英文月份名稱。 將 相關屬性 設定為 Calendar Quarter

  4. 在 [關聯性類型 列表中,將關聯性類型設定為 Rigid

    關聯性類型 固定,因為成員之間的關聯性不會隨著時間而變更。

  5. 按下 [確定]

  6. 在圖表中,以滑鼠右鍵按兩下 [Calendar Quarter] 屬性,然後按兩下 [[新增屬性關聯性]

  7. 在 [建立屬性關聯性] 對話框中,[來源屬性][行事歷季]。 將 相關屬性 設定為 日曆學期

  8. 在 [關聯性類型 列表中,將關聯性類型設定為 Rigid

  9. 按下 [確定]

  10. 在圖表中,以滑鼠右鍵按兩下 [行事曆半年] 屬性 ,然後按兩下 [[新增屬性關聯性]

  11. 在 [建立屬性關聯性] 對話框中,[來源屬性][日曆學期]。 將 相關屬性 設定為 Calendar Year

  12. 在 [關聯性類型 列表中,將關聯性類型設定為 Rigid

  13. 按下 [確定]

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

提供唯一維度成員名稱

在這項工作中,您將建立 EnglishMonthNameCalendarQuarterCalendarSemester 屬性所使用的使用者易記名稱數據行。

提供唯一維度成員名稱

  1. 若要切換至 Adventure Works DW 2019 數據源檢視,請在 [方案總管] 的 [數據源檢視] 資料夾中按兩下它。

  2. 在 [數據表] 窗格中,以滑鼠右鍵按兩下 [日期],然後按兩下 [[新增具名計算]

  3. 在 [建立具名計算] 對話框中,於 [數據行 名稱] 方塊中輸入 MonthName,然後在 [Expression] 方塊中輸入或複製下列語句:

    EnglishMonthName+' '+ CONVERT(CHAR (4), CalendarYear)  
    

    語句會將數據表中每個月的月份和年份串連成新的數據行。

  4. 按下 [確定]

  5. 在 [數據表] 窗格中,以滑鼠右鍵按兩下 [日期],然後按兩下 [[新增具名計算]

  6. 在 [[建立具名計算] 對話框中,在 [數據行名稱] 方塊中輸入 calendarQuarterDesc,然後在 [表達式] 方塊中輸入或複製並貼上下列 SQL 腳本:

    'Q' + CONVERT(CHAR (1), CalendarQuarter) +' '+ 'CY ' +  
    CONVERT(CHAR (4), CalendarYear)  
    

    此 SQL 腳本會將數據表中每個季的日曆季和年份串連到新的數據行。

  7. 按下 [確定]

  8. 在 [數據表] 窗格中,以滑鼠右鍵按兩下 [日期],然後按兩下 [[新增具名計算]

  9. 在 [建立具名計算] 對話框中,在 [數據行名稱] 方塊中輸入 calendarSemesterDesc,然後在 [表達式] 方塊中輸入或複製並貼上下列 SQL 腳本:

    CASE  
    WHEN CalendarSemester = 1 THEN 'H1' + ' ' + 'CY' + ' '   
           + CONVERT(CHAR(4), CalendarYear)  
    ELSE  
    'H2' + ' ' + 'CY' + ' ' + CONVERT(CHAR(4), CalendarYear)  
    END  
    

    此 SQL 腳本會將數據表中每個學期的日曆學期和年份串連成新的數據行。

  10. 按兩下 [確定]

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

定義複合索引鍵Columns和設定名稱數據行

KeyColumns 屬性包含代表屬性索引鍵的數據行。 在這項工作中,您將定義複合 KeyColumns

定義英文月份名稱屬性的複合 KeyColumns

  1. 開啟 [日期] 維度的 [維度結構] 索引標籤。

  2. 在 [屬性] 窗格中,按兩下 [英文月份名稱] 屬性。

  3. 在 [屬性] 視窗中,按兩下 [KeyColumns] 字段,然後按覽 [...] 按鈕。

  4. 在 [索引鍵數據行] 對話框的 [可用數據行] 列表中,選取 [CalendarYear] 數據行 ,然後按兩下 [] 按鈕。

  5. EnglishMonthNameCalendarYear 資料行現在會顯示在 [索引鍵數據行] 列表中。

  6. 按下 [確定]

  7. 若要設定 EnglishMonthName 屬性的 NameColumn 属性,請按兩下 [屬性] 視窗中的 [NameColumn] 字段,然後按兩覽 [...] 按鈕。

  8. 在 [名稱數據行] 對話框中,於 [源數據行] 清單中,選取 [MonthName],然後按兩下 [確定] [確定]

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

定義 Calendar Quarter 屬性的複合 KeyColumns

  1. 在 [屬性] 窗格中,按兩下 [行事歷季] 屬性

  2. 在 [屬性] 視窗中,按兩下 [KeyColumns] 字段,然後按覽 [...] 按鈕。

  3. 在 [索引鍵數據行] 對話框的 [可用數據行] 列表中,選取 [CalendarYear] 數據行 ,然後按兩下 [] 按鈕。

    CalendarQuarterCalendarYear 資料行現在會顯示在 [索引鍵數據行] 清單中。

  4. 按下 [確定]

  5. 若要設定 [Calendar Quarter] 属性 NameColumn 属性,請按兩下 [屬性] 視窗中的 [NameColumn] 字段,然後按兩下 [流覽] [...] 按鈕。

  6. 在 [名稱數據行] 對話框的 [源數據行] 列表中,選取 [calendarQuarterDesc],然後按兩下 [確定] [確定]

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

定義行事曆半年屬性的複合 KeyColumns

  1. 在 [屬性] 窗格中,按兩下 [行事曆半年] 屬性。

  2. 在 [屬性] 視窗中,按兩下 [KeyColumns] 字段,然後按覽 [...] 按鈕。

  3. 在 [索引鍵數據行] 對話框中,於 [可用數據行] 清單中,選取數據行,CalendarYear],然後按兩下 [>] 按鈕。

    CalendarSemesterCalendarYear 資料行現在會顯示在 [索引鍵數據行] 列表中。

  4. 按下 [確定]

  5. 若要設定 [行事曆半年] 屬性的 [NameColumn] 屬性,請按下屬性視窗中的 [NameColumn] 字段,然後按兩下 [流覽] [...] 按鈕。

  6. 在 [名稱數據行] 對話框中,於 [源數據行] 清單中,選取 [calendarSemesterDesc],然後按兩下 [確定 確定]

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

部署和檢視變更

變更屬性和階層之後,您必須先部署變更並重新處理相關物件,才能檢視變更。

部署和檢視變更

  1. 在 SQL Server Data Tools 的 [建置] 功能表上,單擊 [部署 Analysis Services 教學課程]。

  2. 在您收到 [部署成功完成 訊息之後,請按兩下 維度設計師 維度 的 [ Browser] 索引卷標,然後按兩下設計工具工具列上的 [重新連線] 按鈕。

  3. 從 [階層] 列表中選取 [行事歷季]。 檢閱 Calendar Quarter 屬性階層中的成員。

    請注意,Calendar Quarter 屬性階層的成員名稱較清楚且更容易使用,因為您已建立具名計算來做為名稱。 成員現在存在於每年每個季的 Calendar Quarter 屬性階層中。 成員不會依時間順序排序。 相反地,它們按季排序,然後依年份排序。 在本主題的下一個工作中,您將修改此行為,依年份和季排序此屬性階層的成員。

  4. 檢閱 英文月份名稱日曆學期 屬性階層的成員。

    請注意,這些階層的成員也不會依時間順序排序。 相反地,它們會分別依月份或學期排序,然後依年份排序。 在本主題的下一個工作中,您將修改此行為以變更此排序順序。

修改複合索引鍵成員順序來變更排序順序

在這項工作中,您將變更組成複合索引鍵的索引鍵順序,以變更排序順序。

若要修改複合索引鍵成員順序

  1. 開啟 [日期] 維度維度的 [維度設計師] [維度結構] 索引卷標,然後在 [屬性] 窗格選取 [行事歷半年]

  2. 在 [屬性] 視窗中,檢閱 orderBy 屬性 的值。 它會設定為 Key

    日曆學期 屬性階層的成員會依索引鍵值排序。 使用複合索引鍵時,成員索引鍵的順序會先根據第一個成員索引鍵的值,再根據第二個成員索引鍵的值。 換句話說,日曆學期 屬性階層的成員會先依學期和年份排序。

  3. 在 [屬性] 視窗中,按下省略號瀏覽按鈕 (...), 以變更 KeyColumns 屬性值。

  4. 在 [索引鍵數據行] 索引鍵數據行] 對話框中,確認已選取 [calendarSemester] ,然後按下向下箭號來反轉此複合索引鍵的成員順序。 按下 [確定]

    屬性階層的成員現在會先依年份排序,再依學期排序。

  5. 在 [屬性] 窗格中選取 [[行事歷季],然後按兩下 [屬性] 視窗中的 [KeyColumns] 屬性的省略號瀏覽按鈕 [...]。

  6. 在 [索引鍵數據行] 索引鍵數據行] 對話框中,確認已選取 [calendarQuarter] ,然後按下向下箭號來反轉此複合索引鍵的成員順序。 按下 [確定]

    屬性階層的成員現在會先依年份排序,再依季排序。

  7. 在 [屬性] 窗格中選取 [英文月份名稱],然後按兩下 [屬性] 視窗中的 [KeyColumns] 屬性的省略號按鈕 [...]。

  8. 在 [索引鍵數據行]索引鍵數據行 對話框中,確認已選取 EnglishMonthName,然後按兩下向下箭號來反轉此複合索引鍵的成員順序。 按下 [確定]

    屬性階層的成員現在會先依年份排序,再依月份排序。

  9. 在 SQL Server Data Tools 的 [建置] 功能表上,單擊 [部署 Analysis Services 教學課程]。 部署成功完成時,按兩下維度設計師中 [日期] 維度的 [Browser] 索引卷標。

  10. 在 [瀏覽器] 索引標籤的工具列上,按兩下 [重新連線] 按鈕。

  11. 檢閱 Calendar QuarterCalendar Semester 屬性階層的成員。

    請注意,這些階層的成員現在會依時間順序、依年排序,然後分別依季或學期排序。

  12. 檢閱 英文月份名稱 屬性階層的成員。

    請注意,階層的成員現在會先依年份排序,然後依月份依字母順序排序。 這是因為數據源檢視中 EnglishCalendarMonth 數據行的數據類型是以基礎關係資料庫中 nvarchar 數據類型為基礎的字串數據行。 如需如何讓月份在每年內依時間順序排序的詳細資訊,請參閱根據次要屬性來排序屬性成員

課程中的下一個工作

流覽已部署的 Cube

另請參閱

多維度模型中 維度