質問

データウェアハウスを構築しています。それぞれの事実にはそれがあります timestamp. 。私は日、月、四半期までにレポートを作成する必要がありますが、数時間もあります。例を見ると、日付はディメンションテーブルに保存される傾向があることがわかります。 alt starexample
(ソース: ETL-TOOLS.INFO)

しかし、私はそれが時間のために意味がないと思います。寸法テーブルは成長し、成長します。一方、日付の寸法テーブルは、日付/時刻関数を使用するよりも効率的です SQL.

あなたの意見/解決策は何ですか?

(InfoBrightを使用しています)

役に立ちましたか?

解決

私の推測では、それはあなたのレポート要件に依存しているということです。必要な場合

WHERE "Hour" = 10

毎日10:00:00から10:59:59の間に意味すると、時間ディメンションを使用します。

WHERE date_part('hour', TimeStamp) = 10  

date_part()関数はすべての行に対して評価されるためです。次のように、日数の境界を総合するために、TimestameをFactテーブルにまだ保持する必要があります。

WHERE TimeStamp between '2010-03-22 23:30' and '2010-03-23 11:15' 

ディメンションフィールドを使用すると厄介になります。

通常、時間寸法には分解能があるため、1440行です。

他のヒント

キンボールは、個別の時間と日付の寸法を持つことをお勧めします。

Design-TIP-51-Latest-rinking-on-time-dimension-tables

以前のツールキットの本では、毎日の真夜中からの時間または秒の時間のコンポーネントでこのような次元を構築することを推奨していますが、特に計算しようとすると、結果として生じるエンドユーザーアプリケーションが難しすぎることに気付きました。時間のスパン。また、暦日のディメンションとは異なり、1日以内に特定の分または2番目の記述属性はほとんどありません。エンタープライズには、シフト名や広告タイムスロットなど、1日以内の時間スライスに対して明確に定義された属性がある場合、このディメンションが数分数として定義されるデザインに追加の時間寸法を追加できます(または秒でさえ)真夜中を過ぎて。したがって、この日時の寸法には、穀物が数分であった場合は1440の記録があり、穀物が秒である場合は86,400のレコードがあります。

時間は、データウェアハウスの寸法である必要があります。これは、頻繁にそれについて集約したいからです。使用できます 雪片 オーバーヘッドを減らすため。一般的に、私がコメントで指摘したように、時間は異常に高い解像度のように思えます。あなたが彼らに主張するなら、その日の時間を別の次元にすることは役立つかもしれませんが、これが良いデザインかどうかはわかりません。

日付と時刻に別の寸法を分類することをお勧めします。日付ディメンションは、特定された有効な日付の一部として、各日付に1つのレコードを持ちます。例:1980年1月1日から12/31/2025。

また、86400のレコードを持つ時間の個別の寸法で、各秒でタイムキーによってレコードが識別されます。

日付と時刻の両方が必要なFact Recordsでは、これらの適合寸法への参照を持つ両方のキーを追加します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top