データ ウェアハウスにいくつかのエンティティがあります。
Person - personId、dateFrom、dateTo などの属性を使用して、姓、生年月日などを変更できます - 徐々に変化するディメンション
ドキュメント- documentId、番号、タイプ
住所- addressId、city、street、house、flat
(Person と Document) の関係は 1 対多、(Person と Address) の関係は多対多です。
私の目標は、次の質問に答えることができる履歴ファクト テーブルを作成することです。
- 定義された日付に定義された住所に住んでいたのは、どの文書を持ったどの人物ですか?
2, 定義された住所には、定義された時間間隔でどのような居住者の履歴がありますか?
これはDWが設計したものだけではなく、DWの設計で最も難しいことだと思います。
たとえば、personId=1 の Miss Brown と documentId=1 および documentId=2 のドキュメントは、2005 年 1 月 1 日から 2010 年 2 月 2 日まで addressId=1 のアドレスに存在し、その後 addressId=2 に移動しました。 2010 年 2 月 3 日から現在の日付まで住んでいます (NULL?)。しかし、彼女は 2006 年 4 月 5 日から姓を Mrs Green に変更し、2007 年 6 月 7 日から documentId=1 の最初のドキュメントを documentId=3 に変更しました。personId=2、documentId=4 の Mr Black は、2010 年 2 月 3 日から現在の日付まで addressId=1 に住んでいます。
addressId=1 で、時間間隔が 2000 年 1 月 1 日から現在までである質問 2 のクエリで期待される結果は、次のようになります。
行:
last_name="Brown", documentId=1, dateFrom=01/01/2005, dateTo=04/04/2006
last_name="Brown", documentId=2, dateFrom=01/01/2005, dateTo=04/04/2006
last_name="Green", documentId=1, dateFrom=04/05/2006, dateTo=06/06/2007
last_name="Green", documentId=2, dateFrom=04/05/2006, dateTo=06/06/2007
last_name="Green", documentId=2, dateFrom=06/07/2007, dateTo=02/01/2010
last_name="Green", documentId=3, dateFrom=06/07/2007, dateTo=02/01/2010
last_name="Black", documentId=4, dateFrom=02/03/2010, dateTo=NULL
複合キー (personId、documentId、addressId、dateFrom) を使用してファクト テーブルを作成するというアイデアがありましたが、このテーブルをロードして、この構造で期待される結果を得る方法がわかりません。
どんな助けでも喜んでします!