Source/NuGetGallery.Operations/Scripts/PopulateDimensions.sql (209 lines of code) (raw):
DELETE [dbo].[Dimension_Date]
GO
-- =============================================
-- Populate DimDate
-- populates the date dimension and inserts the
-- unknown date row.
-- =============================================
IF NOT EXISTS(SELECT * FROM [dbo].[Dimension_Date] WHERE Id = -1)
BEGIN
SET IDENTITY_INSERT [dbo].[Dimension_Date] ON
INSERT INTO [dbo].[Dimension_Date] (
/*1*/ [Id]
,[Date]
,[DateName]
,[DayOfWeek]
,[DayOfWeekName]
,[MonthName]
,[WeekdayIndicator]
,[DayOfYear]
,[WeekOfYear]
/*10*/ ,[WeekOfYearName]
,[WeekOfYearNameInYear]
,[MonthOfYear]
,[MonthOfYearName]
,[MonthOfYearNameInYear]
,[Quarter]
,[QuarterName]
,[QuarterNameInYear]
,[HalfYear]
,[HalfYearName]
/*20*/ ,[HalfYearNameInYear]
,[Year]
,[YearName]
,[FiscalDayOfYear]
,[FiscalWeekOfYear]
,[FiscalWeekOfYearName]
,[FiscalWeekOfYearNameInYear]
,[FiscalMonthOfYear]
,[FiscalMonthOfYearName]
,[FiscalMonthOfYearNameInYear]
/*30*/ ,[FiscalQuarter]
,[FiscalQuarterName]
,[FiscalQuarterNameInYear]
,[FiscalHalfYear]
,[FiscalHalfYearName]
,[FiscalHalfYearNameInYear]
,[FiscalYear]
/*37*/ ,[FiscalYearName])
VALUES(
/*1*/ -1
,null
,'(Unknown)'
,null
,'(Unknown)'
,'(Unknown)'
,'(Unknown)'
,null
,null
/*10*/ ,'(Unknown)'
,'(Unknown)'
,null
,'(Unknown)'
,'(Unknown)'
,null
,'(Unknown)'
,'(Unknown)'
,null
,'(Unknown)'
/*20*/ ,'(Unknown)'
,null
,'(Unknown)'
,null
,null
,'(Unknown)'
,'(Unknown)'
,null
,'(Unknown)'
,'(Unknown)'
/*30*/ ,null
,'(Unknown)'
,'(Unknown)'
,null
,'(Unknown)'
,'(Unknown)'
,null
/*37*/ ,'(Unknown)')
SET IDENTITY_INSERT [dbo].[Dimension_Date] OFF
END
GO
SET XACT_ABORT ON
SET NOCOUNT ON
DECLARE @Date DATE, @EndDate DATE
SET @Date = '2010-01-01'
SET @EndDate = '2020-12-31'
IF (SELECT COUNT(*) FROM [dbo].[Dimension_Date] WHERE Id <> -1) = 0
BEGIN
DECLARE @FYDays INT, @FYWeek INT, @FYMonth INT, @FYQuarter INT, @FYYear INT, @FYStartDate DATETIME
WHILE @Date <= @EndDate
BEGIN
SET @FYStartDate = '7/1/' +
CASE WHEN DATEPART(MONTH, @date) < 7 THEN CAST(DATEPART(YEAR, @date) - 1 AS NVARCHAR(4))
ELSE CAST(DATEPART(YEAR, @date) AS NVARCHAR(4))
END
SET @FYDays = DATEDIFF(DAY, @FYStartDate, @date) + 1
SET @FYWeek = DATEDIFF(WEEK, @FYStartDate, @date) + 1
SET @FYMonth = DATEDIFF(MONTH, @FYStartDate, @date) + 1
SET @FYQuarter = CASE
WHEN @FYMonth BETWEEN 1 AND 3 THEN 1
WHEN @FYMonth BETWEEN 4 AND 6 THEN 2
WHEN @FYMonth BETWEEN 7 AND 9 THEN 3
WHEN @FYMonth BETWEEN 10 AND 12 THEN 4
END
SET @FYYear = DATEPART(YEAR, @FYStartDate) + 1
INSERT INTO [dbo].[Dimension_Date] (
[Date]
,[DateName]
,[DayOfWeek]
,[DayOfWeekName]
,[MonthName]
,[WeekdayIndicator]
-- CY
,[DayOfYear]
,[WeekOfYear]
,[WeekOfYearName]
,[WeekOfYearNameInYear]
,[MonthOfYear]
,[MonthOfYearName]
,[MonthOfYearNameInYear]
,[Quarter]
,[QuarterName]
,[QuarterNameInYear]
,[HalfYear]
,[HalfYearName]
,[HalfYearNameInYear]
,[Year]
,[YearName]
-- FY
,[FiscalDayOfYear]
,[FiscalWeekOfYear]
,[FiscalWeekOfYearName]
,[FiscalWeekOfYearNameInYear]
,[FiscalMonthOfYear]
,[FiscalMonthOfYearName]
,[FiscalMonthOfYearNameInYear]
,[FiscalQuarter]
,[FiscalQuarterName]
,[FiscalQuarterNameInYear]
,[FiscalHalfYear]
,[FiscalHalfYearName]
,[FiscalHalfYearNameInYear]
,[FiscalYear]
,[FiscalYearName]
)
VALUES (
@date
,DATENAME(WEEKDAY, @date) + ', ' + DATENAME(MONTH, @date) + ' ' + DATENAME(DAY, @date) + ' ' + DATENAME(YEAR, @date)
,DATEPART(WEEKDAY, @date)
,DATENAME(WEEKDAY, @date)
,DATENAME(month, @date)
,CASE WHEN DATEPART(WEEKDAY, @date) > 1 AND DATEPART(WEEKDAY, @date) < 7 THEN 'Weekday' ELSE 'Weekend' END
-- CY
,DATEPART(DAYOFYEAR, @date)
,DATEPART(WEEK, @date)
,'Week ' + CAST(DATEPART(WEEK, @date) AS NVARCHAR(2))
,'CY ' + DATENAME(YEAR, @date) + '-Week ' + CAST(DATEPART(WEEK, @date) AS NVARCHAR(2))
,DATEPART(MONTH, @date)
,'Month ' + CAST(DATEPART(MONTH, @date) as nvarchar(2))
,'CY ' + DATENAME(YEAR, @date) + '-' + RIGHT(REPLICATE('0',2) + CAST(DATEPART(MONTH, @date) AS NVARCHAR(2)),2)
,DATEPART(QUARTER, @date)
,'Q' + CAST(DATEPART(QUARTER, @date) AS NVARCHAR(2))
,'CY ' + DATENAME(YEAR, @date) + '-' + 'Q' + CAST(DATEPART(QUARTER, @date) AS NVARCHAR(1))
,CASE WHEN DATEPART(MONTH, @date) < 7 THEN 1 ELSE 2 END
,'H' + CAST(CASE WHEN DATEPART(MONTH, @date) < 7 THEN 1 ELSE 2 END AS NVARCHAR(1))
,'CY ' + DATENAME(YEAR, @date) + '-' + 'H' + CAST(CASE WHEN DATEPART(MONTH, @date) < 7 THEN 1 ELSE 2 END AS NVARCHAR(1))
,DATEPART(YEAR, @date)
,'CY ' + DATENAME(YEAR, @date)
-- FY
,@FYDays
,@FYWeek
,'Week ' + CAST(@FYWeek AS NVARCHAR(2))
,'FY ' + CAST(@FYYear AS NVARCHAR(4)) + '-Week ' + CAST(@FYWeek AS NVARCHAR(2))
,@FYMonth
,'Month ' + CAST(@FYMonth AS NVARCHAR(2))
,'FY ' + CAST(@FYYear AS NVARCHAR(4)) + '-' + RIGHT(REPLICATE('0',2) + CAST(@FYMonth AS NVARCHAR(2)),2)
,@FYQuarter
,'Q' + CAST(@FYQuarter AS NVARCHAR(2))
,'FY ' + CAST(@FYYear AS NVARCHAR(4)) + '-' + 'Q' + CAST(@FYQuarter AS NVARCHAR(2))
,CASE WHEN @FYMonth < 7 THEN 1 ELSE 2 END
,'H' + CAST(CASE WHEN @FYMonth < 7 THEN 1 ELSE 2 END AS NVARCHAR(1))
,'FY ' + CAST(@FYYear AS NVARCHAR(4)) + '-' + 'H' + CAST(CASE WHEN @FYMonth < 7 THEN 1 ELSE 2 END AS NVARCHAR(1))
,@FYYear
,'FY ' + CAST(@FYYear AS NVARCHAR(4))
)
SET @Date = DATEADD(d, 1, @Date)
END
END
GO
DELETE [dbo].[Dimension_Time]
GO
DECLARE @current INT = 0;
WHILE (@current < 24)
BEGIN
INSERT [dbo].[Dimension_Time] ( HourOfDay ) VALUES ( @current );
SELECT @current = @current + 1;
END
GO
DELETE [dbo].[Dimension_Operation]
INSERT [dbo].[Dimension_Operation] VALUES ( 'Install' )
INSERT [dbo].[Dimension_Operation] VALUES ( 'Update' )
INSERT [dbo].[Dimension_Operation] VALUES ( 'Restore' )
INSERT [dbo].[Dimension_Operation] VALUES ( '(unknown)' )
INSERT [dbo].[Dimension_Operation] VALUES ( 'Install-Dependency' )
INSERT [dbo].[Dimension_Operation] VALUES ( 'Update-Dependency' )
INSERT [dbo].[Dimension_Operation] VALUES ( 'Restore-Dependency' )
GO
DELETE [dbo].[Dimension_Project]
INSERT [dbo].[Dimension_Project] VALUES ( '(unknown)' )
GO