データベースユーザーとして、仕事中のテーブルのデータを解釈する際に問題があります。私がデータチームに質問したとき、ソリューションアーキテクトは、「タイプ6」テーブルであるため、この方法で目的を達成したと教えてくれました。私の限られたグーグルから有効な倉庫管理戦略?タイプ6?
、私はタイプ6は、次のようになりますと思う:
+--------------+------------------+------------------+------------+------------+---------------------+
| Customer_Key | Customer_Attrib1 | Customer_Attrib2 | Start_Date | End_Date | Record Updated Date |
+--------------+------------------+------------------+------------+------------+---------------------+
| 123 | 1 | A | 1/1/2001 | 6/8/2004 | 6/9/2004 |
+--------------+------------------+------------------+------------+------------+---------------------+
| 123 | 1 | A | 6/9/2004 | 4/11/2016 | 4/12/2016 |
+--------------+------------------+------------------+------------+------------+---------------------+
| 123 | 1 | A | 4/12/2016 | 4/3/2017 | 4/4/2017 |
+--------------+------------------+------------------+------------+------------+---------------------+
| 123 | 2 | B | 4/4/2017 | 5/18/2017 | 5/19/2017 |
+--------------+------------------+------------------+------------+------------+---------------------+
| 123 | 2 | B | 5/19/2017 | 12/31/9999 | 5/19/2017 |
+--------------+------------------+------------------+------------+------------+---------------------+
問題の活動は、それが2017年5月18日に1から2に変更する方法Customer_Attrib1、です。
私はcustomer_attrib1は、開始日と終了日を使用することにより、時間の任意の時点であるかを把握することができますので、私はこのスタイルが好き:
select customer_attrib1
from table
where customer_key=123
and '2017-03-01' between start_date and end_date;
しかし...
をテーブル自体、実際に延滞で更新され、次のように表示されます。
+--------------+------------------+------------------+------------+------------+---------------------+
| Customer_Key | Customer_Attrib1 | Customer_Attrib2 | Start_Date | End_Date | Record Updated Date |
+--------------+------------------+------------------+------------+------------+---------------------+
| 123 | 2 | A | 1/1/2001 | 6/8/2004 | 5/19/2017 |
+--------------+------------------+------------------+------------+------------+---------------------+
| 123 | 2 | A | 6/9/2004 | 4/11/2016 | 5/19/2017 |
+--------------+------------------+------------------+------------+------------+---------------------+
| 123 | 2 | A | 4/12/2016 | 4/3/2017 | 5/19/2017 |
+--------------+------------------+------------------+------------+------------+---------------------+
| 123 | 2 | B | 4/4/2017 | 5/18/2017 | 5/19/2017 |
+--------------+------------------+------------------+------------+------------+---------------------+
| 123 | 2 | B | 5/19/2017 | 12/31/9999 | 5/19/2017 |
+--------------+------------------+------------------+------------+------------+---------------------+
私がどれだけ問題を抱えているか見てみましょうe customer_attrib1は2016年の3月中でしたか?
注:そこはがprevious_customer_attrib1列があるが、それはまた、質量、私は私が上にそれを追加しなかった理由である全体のポイントを取得するのに十分小さなテーブルを、維持したい1の値に更新されます。
大きな質問:有効な倉庫管理戦略ですか?これは実際にタイプ6とは何ですか?あるいは、私のソリューションアーキテクトが間違っています。
続きを読む:customer_attrib1が別のテーブルの外部キーであった場合の回答は異なりますか?
データベースの状態/日付に応じて、「customer_attrib1が2016年3月の間に何だったか」と言うと、 2番目のテーブルを使用するのとどのように違いますか?各レコード更新日現在、さまざまなものがあります。あなたは「このような」の意味を説明していませんが、更新または訂正が行われた場合はレコードの更新日は何でも構いません。いいえ、「いつでもcustomer_attrib1が何であるか把握できません。開始日と終了日 "が表示されます。 PSどのようにタイプ6ですか? – philipxy
タイプ6のテーブルのいくつかのフィールドは常に現在の値を示します(これらはタイプ1のフィールドで、変更で上書きされます)。例:データウェアハウスには現在の連絡先電話番号のみが含まれています。古い電話番号または不正な番号への呼び出しを防止します。彼らが 'Customer_Attrib1'に古い値を保持しない理由をデータチームに確認することをお勧めします。彼らは特定の行動/結果を防止しようとしているかもしれません。 –
私は@リッチに同意します。タイプ5を過ぎると、その名前は業界全体で一貫して使用されません。データチームは、タイプ6の定義を提供できる必要があります。 –