在建立bi資料倉儲時,時常需要用到時間維度,通過儲存過程一次性批量生成,語句如下:
create procedure [dbo].[create_time_by_day_dimension]
-- add the parameters for the stored procedure here
asbegin
-- set nocount on added to prevent extra result sets from
-- interfering with select statements.
set nocount on;
begin try
drop table [time_by_day_dimension]
end try
begin catch
end catch
create table [dbo].[time_by_day_dimension] (
[time_id] [int] identity (1, 1) not null ,
[the_date] [datetime] null ,
[the_day] [nvarchar] (15) null ,
[the_month] [nvarchar] (15) null ,
[the_year] [smallint] null ,
[day_of_month] [smallint] null ,
[week_of_year] [smallint] null ,
[month_of_year] [smallint] null ,
[quarter] [nvarchar] (2) null ,
[fiscal_period] [nvarchar] (20) null
) on [primary]
declare @weekstring varchar(12),
@ddate smalldatetime,
@smonth varchar(20),
@iyear smallint,
@idayofmonth smallint,
@iweekofyear smallint,
@imonthofyear smallint,
@squarter varchar(2),
@ssql varchar(100),
@adddays int
select @adddays = 1 --日期增量(可以自由設定)
select @ddate = '01/01/2008' --開始日期
while @ddate < '12/31/2011' --結束日期
begin
select @weekstring = datename (dw, @ddate)
select @smonth=datename(mm,@ddate)
select @iyear= datename (yy, @ddate)
select @idayofmonth=datename (dd, @ddate)
select @iweekofyear= datename (week, @ddate)
select @imonthofyear=datepart(month, @ddate)
select @squarter = 'q' + cast(datename (quarter, @ddate)as varchar(1))
insert into time_by_day_dimension(the_date, the_day, the_month, the_year,
day_of_month,
week_of_year, month_of_year, quarter) values
(@ddate, @weekstring, @smonth, @iyear, @idayofmonth, @iweekofyear,
@imonthofyear, @squarter)
select @ddate = @ddate + @adddays
endend
**: mysql 建立時間維度表
做系統設計以及涉及資料分析的時候,會涉及到各種期間維度的統計計算。可以按日期生成期間維度表,如下 1.按期間生成日期表 drop table if exists v day create table v day oc date varchar 20 default null 2.呼叫方法為輸入開始結...
mysql中生成時間維度的儲存過程(儲存過程示例)
本文主要記錄在bi和資料分析過程中碰到的生成時間維度的問題,另外也是乙個mysql的儲存過程基礎示例 包含 儲存過程基本語法 變數定義 while迴圈 異常處理 以下儲存過程生成了以當前日期為基準前後3650天的日期記錄 sql如下 create table dim date id int 8 no...
mysql中生成時間維度的儲存過程(儲存過程示例)
本文主要記錄在bi和資料分析過程中碰到的生成時間維度的問題,另外也是乙個mysql的儲存過程基礎示例 包含 儲存過程基本語法 變數定義 while迴圈 異常處理 以下儲存過程生成了以當前日期為基準前後3650天的日期記錄 sql如下 create table dim date id int 8 no...