web-dev-qa-db-ja.com

ファクトテーブルの時間ディメンションまたはタイムスタンプ?

どちらを使用しますか、またその理由は何ですか。別個の時間ディメンションまたはタイムスタンプをファクトテーブルに入れますか?それとも両方?

私はデータウェアハウスを構築しており、イベントが発生する時刻を1秒単位で表す必要があります。データをロールアップしたい。たとえば、1時間あたりのイベント数のグラフをプロットします。

キンボールの「データウェアハウスツールキット」は、時間ディメンションのデザインを持っています。最近のブログ投稿では、これを行わず、代わりにファクトテーブルでタイムスタンプを使用することを推奨しています。

http://www.kimballgroup.com/2004/02/design-tip-51-latest-thinking-on-time-dimension-tables/

ファクトテーブルでタイムスタンプを使用しても、時間単位でロールアップするのは簡単/高速ですか?

この選択を行う際に考慮すべき他のトレードオフはありますか?

6
user2800708

ファクトテーブルに両方を含めることをお勧めします。ディメンションはフィルタリングとグループ化に使用する必要がありますが、タイムスタンプ値は詳細なレポート/クエリで使用できます。

イベントが分を過ぎて8秒で発生したのか42秒で発生したのかを気にしない限り、1分単位で時間ディメンションを作成します。

RDBMSにタグを付けなかったので、SQL Serverの以降のバージョンでは_date + time_データ型の操作が許可されていないことに言及するのは賢明だと思いました。つまり、日付と時刻のディメンションビジネスキーからタイムスタンプを再作成します。回避策はconvert(datetime, [date column]) + convert(datetime, [time column])または同様のものです。

4
garthmillar