Läsa in tidsdimensionstabeller

Slutförd

Tidsdimensionstabeller lagrar en post för varje tidsintervall baserat på det korn med vilket du vill aggregera data över tid. En tidsdimensionstabell med datumintervallet innehåller till exempel en post för varje datum mellan de tidigaste och senaste datumen som refereras av data i relaterade faktatabeller.

I följande kodexempel visas hur du kan generera en sekvens med tidsdimensionsvärden baserat på ett datumintervall .

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

Dricks

Skriptning i SQL kan vara tidskrävande i en dedikerad SQL-pool – det kan vara mer effektivt att förbereda data i Microsoft Excel eller ett externt skript och importera dem med copy-instruktionen.

När informationslagret fylls i i framtiden med nya faktadata måste du regelbundet utöka intervallet med datumrelaterade tidsdimensionstabeller.