建立時間維度表的儲存過程

2021-08-31 05:53:38 字數 2047 閱讀 5428

在建立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...