Caricare tabelle delle dimensioni temporali

Completato

Le tabelle delle dimensioni temporali archiviano un record per ogni intervallo di tempo in base al livello di granularità con il quale si desidera aggregare i dati nel tempo. Una tabella delle dimensioni temporali con granularità a livello di data contiene un record per ogni data compresa tra la data meno recente e quella più recente a cui fanno riferimento i dati nelle tabelle dei fatti correlate.

Nell'esempio di codice seguente viene illustrato come generare una sequenza di valori delle dimensioni temporali in base a una granularità a livello 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

Suggerimento

L'esecuzione di script in SQL potrebbe richiedere molto tempo in un pool SQL dedicato. Potrebbe risultare più efficiente preparare i dati in Microsoft Excel o uno script esterno e importarli usando l'istruzione COPY.

Dal momento che il data warehouse viene popolato in futuro con nuovi dati fattuali, è necessario estendere periodicamente l'intervallo di date relativo alle tabelle delle dimensioni temporali.