時間ディメンション テーブルを読み込む

完了

時間ディメンション テーブルには、時間の経過とともにデータを集計する "粒度" に基づいて、時間間隔ごとにレコードが保存されます。 たとえば、"日付" 粒度の時間ディメンション テーブルには、関連するファクト テーブルのデータによって参照される最も古い日付と最も新しい日付の間の各日付のレコードが含まれます。

次のコード例では、"日付" の粒度に基づいて時間ディメンション値のシーケンスを生成する方法を示しています。

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

ヒント

SQL でこれをスクリプト化すると、専用 SQL プールで時間がかかる場合があります。Microsoft Excel または外部スクリプトでデータを準備し、COPY ステートメントを使用してインポートする方が効率的である可能性があります。

将来、データ ウェアハウスには新しいファクト データが設定されるため、関連する時間ディメンション テーブルの日付の範囲を定期的に広げる必要があります。