关于时间维表数据生成
0
有没有生成时间维度到秒的数据,用SSAS2008工具生成不怎么好。
有没有自动生成的时间维度表,主要包括:年、半年、季、月、日、天、时、分、秒等相关时间维度表等字段信息.
有没有自动生成的时间维度表,主要包括:年、半年、季、月、日、天、时、分、秒等相关时间维度表等字段信息.
没有找到相关结果
重要提示:提问者不能发表回复,可以通过评论与回答者沟通,沟通后可以通过编辑功能完善问题描述,以便后续其他人能够更容易理解问题.
3 个回复
梁勇 - 天道酬勤、上善若水。爱好商业智能 2015-01-14 回答
赞同来自: luwr
heaven - 微软BI架构、SSRS高级开发 2015-01-14 回答
赞同来自:
天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-01-14 回答
赞同来自:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[DimTime](
[DimTimeKey] [int] NOT NULL,
[Time] varchar NOT NULL,
[Time24] varchar NOT NULL,
[Hour] [tinyint] NOT NULL,
[HourName] varchar NOT NULL,
[Minute] [tinyint] NOT NULL,
[MinuteKey] [int] NOT NULL,
[MinuteName] varchar NOT NULL,
[Second] [tinyint] NOT NULL,
[Hour24] [tinyint] NOT NULL,
[AM] char NOT NULL,
CONSTRAINT [PK_DimTime] PRIMARY KEY CLUSTERED
(
[DimTimeKey] 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
SET ANSI_PADDING OFF
GO
---------------------------------------------------
declare @DimTimeKey int, @Date datetime, @Am char(2),
@hour24 tinyint, @hour tinyint, @minute tinyint, @second int
set @DimTimeKey = 0
while @DimTimeKey < (606024)
begin
set @DimTimeKey = @DimTimeKey + 1
set @Date = DATEADD(second,@DimTimeKey,convert(datetime, '1/1/2007'))
set @Am = right(convert(varchar,@Date,109),2)
set @hour24 = DATEPART(hour, @Date)
set @hour = case when @Am = 'PM' then @hour24 - 12 else @hour24 end
set @minute = DATEPART(minute, @Date)
set @second = DATEPART(second, @Date)
insert into dbo.DimTime(DimTimeKey,Time,Time24,HourName,MinuteName,MinuteKey,Hour,Hour24,Minute,Second,AM)
select @DimTimeKey,
Time = right('0' + convert(varchar,@hour),2)
+ ':' + right('0' + convert(varchar,@minute),2)
+ ':' + right('0' + convert(varchar,@second),2) + ' ' + @Am,
Time24 = convert(varchar,@Date,108),
HourName = right('0' + convert(varchar,@hour),2) + ' ' + @Am,
MinuteName = right('0' + convert(varchar,@hour),2)
+ ':' + right('0' + convert(varchar,@minute),2)+ ' ' + @Am,
MinuteKey = (@hour24*60) + @minute,
@hour, @hour24, @minute, @second, @Am
end
select *
from DimTime
where AM = 'AM'