私は最初の本物のキンボール スタイル スター スキーマ次元モデルを設計しています。私は彼の本をたくさん読んできましたが、 Adamson によるStar Schema - The Complete Reference の途中まで読み進めました (Kimball の本よりもはるかに実用的でわかりやすいと思います)。この質問に対する答えを見つけることができませんでした。助けてください!記事や本への参照は問題ありません。
次元モデリングにおいて、事実とそれに対応するベースライン、予測、または目標との間の関係をモデル化する標準的な方法は何ですか?
たとえば、会社 A の 2016 年の実際の売り上げが 100 万ドルだったとします。それは明らかな事実です。
さらに、会社が 2014 年に 2016 年の売上高を 120 万ドルと予測し、2015 年には 2016 年の売上高を 110 万ドルと予測したとします。
しかし、2014 年の (以前の) 予測は、2016 年の売上高を測定する必要があるものであることが判明しました。言い換えれば、実際の売上とそれに関連する予想売上予測との関係を明示的に指定する必要があります。したがって、「ドリルアクロス」は機能しません。なぜなら、どの予測と比較するのが正しいか分からないからです。
本質的に、事実は別の事実に明示的に関連付ける必要があるように思われますが、(文献によると) 禁止されているのはどれですか?
では、これらの実装のうち、標準的に最適なものはどれでしょうか?
(同じ粒度で) fact_salesとfact_sales_projectionを作成します。ファクトをファクトにリンクするために、sales_projection_key を fact_sales に含めます (これはおそらく良い考えではありません)。
fact_salesとdim_sales_projectionを (同じ粒度で)作成するため、サポートするファクトと同じ数値が含まれていても、予測ディメンションを呼び出します。再び、fact_sales に sales_project_key を含めますが、これで問題ありません。これは、意味的にはディメンションであるためです。
「Actual」または「Projected」のいずれかであるSalesTypeというディメンションを使用して、 fact_salesを作成するだけです。「実際の」販売レコードから正しい「予測された」販売レコードへの自己結合キーを使用して、実際の販売と予測された販売の両方を同じテーブルに含めます。
fact_salesを作成するだけで、予測と実際の売上を含むファクト列を追加します。これにより、投影データのかなりの重複が発生しますが、実際のデータが「重要な」投影と並べて保持されます。
これらのうち、#3 が最善の解決策ではないことは確かです。#1、#2、または #4 のどれが最適かについて、私はよく悩みましたが、(私にとっては) #1 は #2 よりも優れたアイデアのように思えます。
どんな入力でも大歓迎です。また、この種の質問が "Stack Overflow" フォーラムと "Database Administrators" フォーラムのどちらに適しているかは完全にはわかりません。