首页 > 代码库 > DimDate populate data
DimDate populate data
日期维度
任何一个数据仓库都应该有一个日期维度。
因为很少有不需要通过日期维度看数据的情况存在。
日期维度的好处是,你可以通过他连接各个事实表,然后在报表端传送报表参数的时候,
直接自动过滤日期维度的相关值,而不需要自己写query.
去掉了西班牙语和法语的那些列。
You know that there are some holes in the sample database, DW2008R2 DIMDATE table.
So I take my own dimdate. Just remove some columns not used.
CREATE TABLE [dbo].[DimDate]([DateKey] [int] NOT NULL,[FullDateAlternateKey] [date] NOT NULL,[DayNumberOfWeek] [tinyint] NOT NULL,[EnglishDayNameOfWeek] [nvarchar](10) NOT NULL,[DayNumberOfMonth] [tinyint] NOT NULL,[DayNumberOfYear] [smallint] NOT NULL,[WeekNumberOfYear] [tinyint] NOT NULL,[EnglishMonthName] [nvarchar](10) NOT NULL,[MonthNumberOfYear] [tinyint] NOT NULL,[CalendarQuarter] [tinyint] NOT NULL,[CalendarYear] [smallint] NOT NULL,[CalendarSemester] [tinyint] NOT NULL,[FiscalQuarter] [tinyint] NOT NULL,[FiscalYear] [smallint] NOT NULL,[FiscalSemester] [tinyint] NOT NULL,CONSTRAINT [PK_DimDate_DateKey] PRIMARY KEY CLUSTERED([DateKey] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],CONSTRAINT [AK_DimDate_FullDateAlternateKey] UNIQUE NONCLUSTERED([FullDateAlternateKey] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY] GO BEGIN TRAN declare @startdate date = ‘2005-01-01‘,@enddate date = ‘2015-12-31‘Declare @datelist table (FullDate date) while @startdate <= @enddateBeginInsert into @datelist (FullDate)Select @startdateSet @startdate = dateadd(dd,1,@startdate)endInsert into dbo.DimDate(DateKey,FullDateAlternateKey,DayNumberOfWeek,EnglishDayNameOfWeek,DayNumberOfMonth,DayNumberOfYear,WeekNumberOfYear,EnglishMonthName,MonthNumberOfYear,CalendarQuarter,CalendarYear,CalendarSemester,FiscalQuarter,FiscalYear,FiscalSemester) select convert(int,convert(varchar,dl.FullDate,112)) as DateKey,dl.FullDate,datepart(dw,dl.FullDate) as DayNumberOfWeek,datename(weekday,dl.FullDate) as EnglishDayNameOfWeek,datepart(d,dl.FullDate) as DayNumberOfMonth,datepart(dy,dl.FullDate) as DayNumberOfYear,datepart(wk, dl.FUllDate) as WeekNumberOfYear,datename(MONTH,dl.FullDate) as EnglishMonthName,Month(dl.FullDate) as MonthNumberOfYear,datepart(qq, dl.FullDate) as CalendarQuarter,year(dl.FullDate) as CalendarYear,case datepart(qq, dl.FullDate)when 1 then 1when 2 then 1when 3 then 2when 4 then 2end as CalendarSemester,case datepart(qq, dl.FullDate)when 1 then 3when 2 then 4when 3 then 1when 4 then 2end as FiscalQuarter,case datepart(qq, dl.FullDate)when 1 then year(dl.FullDate)when 2 then year(dl.FullDate)when 3 then year(dl.FullDate) + 1when 4 then year(dl.FullDate) + 1end as FiscalYear,case datepart(qq, dl.FullDate)when 1 then 2when 2 then 2when 3 then 1when 4 then 1end as FiscalSemesterfrom @datelist dl ; commit tran;
DimDate populate data
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。