加载时间维度表
时间维度表根据要依据其在一段时间内聚合数据的粒度为每个时间间隔存储一条记录。 例如,日期粒度的时间维度表包含相关事实数据表中数据所引用的最早日期和最晚日期之间的每个日期的记录。
下面的代码示例演示如何根据日期粒度生成时间维度值序列。
-- Create a temporary table for the dates we need
CREATE TABLE #TmpStageDate (DateVal DATE NOT NULL)
-- Populate the temp table with a range of dates
DECLARE @StartDate DATE
DECLARE @EndDate DATE
SET @StartDate = '2019-01-01'
SET @EndDate = '2023-12-31'
DECLARE @LoopDate = @StartDate
WHILE @LoopDate <= @EndDate
BEGIN
INSERT INTO #TmpStageDate VALUES
(
@LoopDate
)
SET @LoopDate = DATEADD(dd, 1, @LoopDate)
END
-- Insert the dates and calculated attributes into the dimension table
INSERT INTO dbo.DimDate
SELECT CAST(CONVERT(VARCHAR(8), DateVal, 112) as INT), -- date key
DateVal, --date alt key
Day(DateVal) -- day number of month
--, other derived temporal fields as required
FROM #TmpStageDate
GO
--Drop temporary table
DROP TABLE #TmpStageDate
提示
在专用 SQL 池中用 SQL 编写此脚本可能非常耗时,在 Microsoft Excel 或外部脚本中准备数据并使用 COPY 语句导入数据可能更有效。
随着数据仓库将来不断填充新的事实数据,需要定期扩展与时间维度表相关的日期范围。