1.サロゲート キーは常に YYYYMMDD の形式で使用することをお勧めします。これは常に連続するためです。
2.日付ディメンションの代理キーを削除し、代わりに実際の日付を使用します。
最初のオプションを使用します。実際の日付を使用すると、より多くのディスクが使用され、インデックス作成の効率が低下し、結合の効率が低下します。また、日付タイプを使用する場合、「不明な日付」、「日付はまだ利用できません」、「カレンダーの日付範囲より前の日付」、「カレンダーの日付範囲より後の日付」をどのように表しますか?
カレンダー ディメンションのこれらすべての異なる「不明」タイプのメンバーに対して「01-01-1900」を使用することはできません。理想的には、すべての代理キーは無意味である必要があります。そうしないと、レポート ユーザーがディメンションを無視したくなる可能性があります。ディメンションは、カレンダー ディメンション、その日が属する週、月、年、曜日名などのディメンションに豊富さを追加します。レポーターは、代理キーを匿名化することによってディメンションを使用するように強制する必要があります。
ファクトとディメンション間の左外部結合を強制的に実行するため、データ ウェアハウスのプレゼンテーション レイヤーに null を含めないでください。スター スキーマの要点は、クエリのパフォーマンスを向上させることです。外部結合を行うことは、この原則に直接反します。null は常に -1、-2 などの未知のメンバー キーに置き換えてください (「実際の」メンバー キーが 1 から始まり、そこから順番に上がると仮定します)。
キャットコールの編集
カレンダーの最も早い日付がキー 1 を取得し、次の日付がキー 2 を取得するなど、代理キーを使用することをお勧めします。スター スキーマでは、ファクトは代理キー (すべて小さい整数またはメジャー) で構成されます。日付 1 が何を表しているかを確認するには、ディメンションに参加する必要があります。サロゲートはどれも何の意味もありません。それがデータマートを構築する方法です。ユーザーは、「01-01-1900」が「日付が利用できない」を意味し、「01-01-1901」が「不明」を意味し、「01-01-1902」が早い日付などを意味することをどのように確認する必要がありますか? これらのキャプションを次元に格納し、事実にサロゲート -3、-2、-1 を持たせたほうがよいのではないでしょうか。その後、レポートに「不明」または「早期日付」というキャプションが表示されます。代理キーとして日付型を使用するのは単純な間違いであり、有用性が制限されます。ソリューションの効率と柔軟性。私はこれを経験を通して知っています。