Carga de tablas de dimensiones de tiempo

Completado

Las tablas de dimensiones de tiempo almacenan un registro para cada intervalo de tiempo en función del intervalo de agregación con el que desea agregar datos a lo largo del tiempo. Por ejemplo, una tabla de dimensiones de tiempo en el intervalo de agregación de fecha contiene un registro de cada fecha entre las fechas más antigua y más reciente a las que hacen referencia los datos en las tablas de hechos relacionadas.

En el ejemplo de código siguiente se muestra cómo se puede generar una secuencia de valores de dimensión de tiempo basados en un intervalo de agregación de fecha.

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

Sugerencia

La creación de scripts en SQL puede llevar mucho tiempo en un grupo de SQL dedicado: puede ser más eficaz preparar los datos en Microsoft Excel o en un script externo e importarlos mediante la instrucción COPY.

A medida que el almacenamiento de datos se rellene en el futuro con nuevos datos de hechos, deberá ampliar periódicamente el intervalo de fechas de las tablas de dimensiones de tiempo relacionadas.