Carregar tabelas de dimensões temporais

Concluído

As tabelas de dimensões temporais armazenam um registro para cada intervalo de tempo com base na granularidade pela qual você deseja agregar os dados ao longo do tempo. Por exemplo, uma tabela de dimensões temporais com a granularidade data contém um registro para cada data entre as datas mais antiga e mais recente referenciadas pelos dados nas tabelas de fatos relacionadas.

O exemplo de código a seguir mostra como gerar uma sequência de valores de dimensão temporal com base em uma granularidade de data.

-- 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

Dica

Criar um script disso no SQL pode ser demorado em um pool de SQL dedicado: talvez seja mais eficiente preparar os dados no Microsoft Excel ou em um script externo e importá-lo usando a instrução COPY.

Conforme o data warehouse for preenchido no futuro com novos dados de fatos, você precisará estender periodicamente o intervalo de datas relacionado à tabela de dimensões temporais.