2017-04-27 5 views
0

次元モデリングとロールプレイに関する質問。 「ロールプレイング」という住所ディメンションがあります。 CRMシステムを含むさまざまなソースからアドレスを受け取ります。住所は会社、個人などの住所など、異なるタイプのものであってもよい。したがって、ロールプレイングアドレス次元からは、単一の住所を異なる住所で会社の住所と住所とタグ付けすることができる。アドレスディメンションとロールを扱う複数のファクトでそれを再生する

異なるファクトテーブルがあり、アドレスデータを保持する異なるキーを持っています。 Fact_Salesには、Customer_Address_Key、Company_Head_Office_Address_Keyなどのキーがあります。だから私たちは、これらの事実の中でアドレスを演じるのは一種の役割だと信じています。

質問:

当社のリードデータアーキテクトは、この周りに懸念を持っています。 •私たちは多くのシステムから多くのアドレスを取得しています。どのようにしてこれらのアドレスがどこから来たのか、そしてどのタイプのアドレスがファクトテーブルに行くのではないのかを特定します。

私はまだ事実を知ることをお勧めしますが、地面にしっかりと足を置く前に、そこの広いコミュニティに相談したいと思います。

Address_Key、Address_Type_Key、およびSource_Keyの組み合わせを定義する別のテーブルがあります。

あなたが任意の更なる明確化や画像など

乾杯 ニシンが必要な場合は私に知らせてください

答えて

2

それはあなたがアドレスの種類との列を含めるだけでなければならないことをあなたが持っている状況でのように聞こえますアドレスの次元自体のアドレスの元なので、それは単独で立つので、それがどんなものであるかを知るために事実を経由する必要はありません。前述したように、キーを持つ別個のテーブルは必要ありません。データは次元で安全に非正規化されます。余談として

多くの人が独立しているアドレステーブルを持っていますが、キンボールグループからのアプローチだけではスタンド多目的次元として「住所」や場所の寸法を有する持つことではないでしょう - それは、何か他のもの(会社、顧客、または「配送場所」など)を記述する内容の一部を提供します。代わりにディメンション(Customerなど)を使用し、そのディメンション内に適切な名前の住所フィールド(CustomerAddress1、CustomerAddress2、CustomerCity)を指定します。ビューの背後の便宜のためにアドレスを一元的に管理することも、ビューやその他のETLを使用して形成される他のディメンションを使用することもできますが、スター・スキーマの提示ではアドレス表は個別に表示されません。アドレスは、同じものと呼ばれ、同じことを意味するという点で依然として適合しています。あなたはディメンションの属性としてソースを含めることが非常に合理的である

-1

をやったとして、人々の

しかしたくさんの別々のアドレス・テーブルで行きます。より大きな問題は、複数のソースがある場合に、どのように顧客の「現在の」アドレスを選択するかということです。それは物事が難しくなる場所です。

キャプチャ元のソースに関係なく、ビジネス全体で同じことを意味するためには、現在のカスタマーアドレスが必要です。私はこれを適合次元と呼んでいます。すべてのアドレスソースを同じ構造に適合させる必要があるため、それらを単一の次元として使用することができます。

あなたの事実の大部分において、アドレスの発信元は無関係です。あなたはそれが現在のアドレスであることを知る必要があります。あなたは、顧客アドレスのソースの分析を提供できるより小さなモデルを持っているかもしれません。

ハード部分は、アドレスが複数のソースにあるときに最も信頼できるソースを決定しています。ソースと最終更新日を考慮する必要があります。言い換えれば、より信頼性の低いソースに最新のアップデートがある場合は、プライマリソースが依然として優先されます。

通常、タイプはアドレスの属性にすぎません。ただし、住所が複数の物(物流、船積み、請求書など)に使用できる場合は、ロールプレイング関係によって定義する必要があります。住所に関するその他の分析については、都市/州&を別の次元に分解して、地理的な場所別に分類する必要がある場合は除外することができます。 City & Stateを単一のエンティティとして使用することをお勧めします。 CityをStateとは別のものとして扱うと、複数の州に存在する都市をスライスすると面白い結果が得られます。

関連する問題