首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SSAS 自訂日期維度設計完整指南與 T-SQL 實作腳本

     編輯:關於SqlServer

日期維度幾乎存在於所有 Cube 設計中,但依據專案需求不同,其設計細節差異極大。在動工前,必須釐清以下關鍵需求:

需求釐清四大面向

  1. 最低細節層級:報表是否需按季、月、周、日,甚至時、分查詢?銷售分析常以月/季為主,機器監控則可能需精確到分鐘。
  2. 時間顯示格式:月份顯示全名、縮寫或數字?日期格式為 MM/dd/yyyy 或 yyyy/MM/dd?
  3. 特殊時間屬性:是否需包含會計年度、閏年、週末等標記?
  4. 階層導航路徑:使用者習慣「年→月→日」還是「年→周→日」鑽取?

資料倉庫維度表建立腳本

建議自行撰寫建立腳本,依需求自訂欄位。以下提供完整範例,包含自然年與會計年度、季、半年等屬性:

-- 核心建表與資料填入邏輯(節錄)
CREATE TABLE DimDate (
    DateKey INT PRIMARY KEY,
    FullDate DATE NOT NULL,
    DayNumberOfWeek TINYINT NOT NULL,
    DayNameOfWeek NVARCHAR(10) NOT NULL,
    IsWeekend BIT NOT NULL,
    IsLeapYear BIT NOT NULL,
    CalendarQuarter TINYINT NOT NULL,
    CalendarYear SMALLINT NOT NULL,
    FiscalQuarter TINYINT NOT NULL,
    FiscalYear SMALLINT NOT NULL,
    -- 其他欄位略...
);
-- 迴圈產生 2005-01-01 至 2013-12-31 的資料
WHILE (@StartDate <= @EndDate) BEGIN
    INSERT INTO DimDate (...) VALUES (...);
    SET @StartDate = DATEADD(DAY, 1, @StartDate);
END

建立檢視表供 SSAS 參考

實務上建議在資料倉庫建立檢視表,SSAS 資料來源檢視參考檢視而非基底表,未來維度結構微調時只需修改檢視,避免動到 SSAS 專案:

CREATE VIEW vDimDate AS
SELECT 
    DateKey, FullDate, DateName,
    CONVERT(VARCHAR(2),DayNumberOfMonth) + ' ' + EnglishMonthName + ' ' + CONVERT(CHAR(4), CalendarYear) AS FullDateName,
    CASE WHEN IsWeekend = 1 THEN 'Weekend' ELSE 'Weekday' END AS WeekdayWeekend,
    CalendarYear * 100 + MonthNumberOfYear AS MonthKey,
    'CY ' + CONVERT(CHAR(4),CalendarYear) + ' Qtr ' + CONVERT(CHAR(1), CalendarQuarter) AS CalendarQuarterName,
    'FY ' + CONVERT(CHAR(4),FiscalYear) + ' Qtr ' + CONVERT(CHAR(1), FiscalQuarter) AS FiscalQuarterName
    -- 其他計算欄位...
FROM DimDate

此設計支援雙年度體系(自然年/會計年),並預先計算常用顯示名稱與鍵值,大幅簡化 Cube 端定義工作。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved