Ładowanie tabel wymiarów czasu
Tabele wymiarów czasu przechowują rekord dla każdego interwału czasu na podstawie ziarna , według którego dane mają być agregowane w czasie. Na przykład tabela wymiarów czasu w ziarnie dat zawiera rekord dla każdej daty między najwcześniejszymi i najnowszymi datami, do których odwołuje się dane w powiązanych tabelach faktów.
Poniższy przykład kodu pokazuje, jak można wygenerować sekwencję wartości wymiarów czasu na podstawie ziarna daty .
-- 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
Napiwek
Wykonywanie skryptów w programie SQL może być czasochłonne w dedykowanej puli SQL — bardziej wydajne może być przygotowanie danych w programie Microsoft Excel lub zewnętrznym skryscie i zaimportowanie ich przy użyciu instrukcji COPY.
Gdy magazyn danych jest wypełniany w przyszłości nowymi danymi faktów, okresowo trzeba rozszerzyć zakres tabel wymiarów czasu związanych z datami.