Labels

Apache Hadoop (3) ASP.NET (2) AWS S3 (2) Batch Script (3) BigQuery (21) BlobStorage (1) C# (3) Cloudera (1) Command (2) Data Model (3) Data Science (1) Django (1) Docker (1) ETL (7) Google Cloud (5) GPG (2) Hadoop (2) Hive (3) Luigi (1) MDX (21) Mongo (3) MYSQL (3) Pandas (1) Pentaho Data Integration (5) PentahoAdmin (13) Polybase (1) Postgres (1) PPS 2007 (2) Python (13) R Program (1) Redshift (3) SQL 2016 (2) SQL Error Fix (18) SQL Performance (1) SQL2012 (7) SQOOP (1) SSAS (20) SSH (1) SSIS (42) SSRS (17) T-SQL (75) Talend (3) Vagrant (1) Virtual Machine (2) WinSCP (1)

Thursday, December 15, 2011

DimTime - Time Dimension

The below script is helpful to create attributes for Time dimension used in Business Intelligence:


USE
[DatabaseName]
GO

IF
OBJECT_ID('DimTime') IS NOT NULL
DROP
TABLE DimTime
GO

CREATE

TABLE [dbo].[DimTime]
(

[DimTimeSK] [int] NOT NULL,
[Time]
[varchar](11) NOT NULL,
[Time24]
[varchar](8) NOT NULL,
[HourName]
[varchar](5),
[MinuteName]
[varchar](8),
[Hour]
[tinyint],
[Hour24]
[tinyint],
[Minute]
[tinyint],
[Second]
[int],
[AM]
[char](2)
)
ON [PRIMARY]
GO

DECLARE


@DimTimeSK

int,@Date datetime, @AM char(2),
@hour24
tinyint, @hour tinyint,
@minute
tinyint, @second int
SET
@DimTimeSK = 0
WHILE
@DimTimeSK < (60*60*24)
BEGIN

SET

@DimTimeSK = @DimTimeSK + 1
SET
@Date = DATEADD(second,@DimTimeSK,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
(

[DimTimeSK]

,
[Time]
,
[Time24]
,
[HourName]
,
[MinuteName]
,
[Hour]
,
[Hour24]
,
[Minute]
,
[Second]
,
[AM]
)

SELECT

@DimTimeSK
AS [DimTimeSK]
,right(
'0'+ convert(varchar,@hour),2) + ':' +
right(
'0'+ convert(varchar,@minute),2) + ':' +
right(
'0'+ convert(varchar,@second),2) + ' ' + @AM AS [Time]
,
convert(varchar,@Date,108) [Time24]
,right(
'0' + convert(varchar,@hour),2) + ' ' + @AM AS [HourName]
,right(
'0' + convert(varchar,@hour),2) + ':' +
right(
'0' + convert(varchar,@minute),2)+ ' ' + @AM AS [MinuteName]
,
@hour AS [Hour]
,
@hour24 AS [Hour24]
,
@minute AS [Minute]
,
@second AS [Second]
,
@AM AS [AM]
END

GO

No comments:

Post a Comment