如何在日期维度中推导出季节

时间:2014-05-25 09:59:15

标签: sql-server data-warehouse dimensional-modeling

我正在实施DataWarehouse日期维度。根据我的情况,我必须将10月到1月之间的日期标记为Season_A,将标记为4月到8月的日期标记为Season_B

我创建了dimDate表,如下所示:

CREATE TABLE dbo.dimDate
(
DateKey INT NOT NULL,
FullDate DATE NOT NULL,
MonthNumberName NVARCHAR(15) NULL,
CalendarQuarter TINYINT NULL,
CalendarYear SMALLINT NULL,
Season NVARCHAR(10) 
CONSTRAINT PK_Dates PRIMARY KEY (DateKey)
);

1 个答案:

答案 0 :(得分:0)

关注其他问题/因素,我对此的初步反应是使用computed column并使用存储过程中的简单between子句计算季节

示例实现伪代码


CREATE TABLE dbo.dimDate 
( 
   DateKey INT NOT NULL
  ,FullDate DATE NOT NULL
  ,MonthNumberName NVARCHAR(15) NULL
  ,CalendarQuarter TINYINT NULL
  ,CalendarYear SMALLINT NULL
  ,Season NVARCHAR(10) as GetSeason(FullDate)
  ,CONSTRAINT PK_Dates PRIMARY KEY (DateKey) 
);
GO;

Create Procedure dbo.GetSeason
    @Date as datetime
as
   if(Month(@Date) between 1 and 3)
      select 'Season A'
   --etc

说实话,我的经验是dimDate表应该几乎所有列都是通过单个日期列计算的(即:FullDate键),以防止ETL处理期间的数据不一致,但其他里程可能会有所不同......