複数のファクトテーブルを持つデータウェアハウスの設計
-
26-09-2020 - |
質問
データウェアハウスには新しいです。まず、データウェアハウスツールキットのコピーよりも正確に正確に、メールボックス(カタツムリメール:P)への道です。しかし、私はすでにこのものをすべて勉強しているものでネットで見つけたものです。
ネット上で見つけられないものは、しかし、あなたがDWに複数の事実を持っているように思われるときに何をするべきかです。私の訴訟(保険)では、定期的に発生する払い戻しがあります。 1つのクライアントには3ヶ月間、その後同じ月に10人がいない可能性があります。他の手で、私は「購読料」(正しい英語の用語は何であるかわからないが、あなたはポイントを手に入れるが、あなたはポイントを得る)、それは毎月または3ヶ月ごとに発生する。それは私にとっては明らかに2つの明確な事実のようです。
これら2つは、クライアントや「保険商品」のように、いくつかの寸法で緩やかに結合されています。今、私は2つの異なるレポートを生産してからDWの外でレポートを接続する必要があります。または単一の降下DWに合うようにこれを設計する方法があります。または私はこれらの2つの事実を1つに組み合わせるべきですか?私はおそらく払い戻しの粒度を失うだろう。
何人かのブログは常に一つのファクトテーブルを持っていると常に述べた。他の人は、Sの事実表とは何ですか。しかし、それらの間にリンクがあるかどうかの明確な指示はありません。
DWデザインのその正確な部分に関するいくつかの参照を知っていますか?
解決
あなたの質問を後ろ向きにしてください。
データウェアハウスには、複数のファクトテーブルを持つことができます。ただし、ファクトテーブル間の結合を最小限に抑えたいと思います。さまざまなファクトテーブルで事実情報を複製するのは大丈夫です。
述べたオブジェクトの:
払い戻しは事実です。タイムスタンプは返金事実の寸法です。
購読料は事実です。タイムスタンプは購読料事実の寸法です。
払い戻しは複数回発生する可能性があります。各顧客に1つの購読料があると思います。それで、私たちはこれまでのところ、顧客、および顧客の払い戻しの2つの事実表を持っているように見えます。
(例として)最大3枚目の払い戻しがあることを知っていた場合は、顧客の払い戻しファクトテーブルを排除し、顧客テーブルに3枚の払い戻し列を入れることができます。
あなたも保険に言及しています。顧客は複数のポリシーを持つことができます。だから我々は第3の事実の表を持っています。
データウェアハウスは、通常、スタースキーマを使用して設計されています。スタースキーマは基本的に1つ以上のディメンションテーブルに接続されている1つのファクトテーブルです。私たちはすでに3つのファクトテーブルを定義しているので、おそらくデータウェアハウスに複数の星を持っているでしょう。
他のヒント
私は古い投稿に答えていることに気づいていますが、私は提供された答えのどちらかに満足していません。どちらの質問に答えてもいません。
スキーマは1つ以上の事実を持つことができますが、これらの事実は任意の重要な関係によってリンクされていません。正規化/トランザクションデータベースに照会されるように、単一のクエリでファクトテーブルに参加しないのはベストプラクティスです。多くの結合などの性質のために - 試みられた場合、結果は正しくないでしょう。
あなたが探している答えは、基本的にあなたが各ファクトテーブル(スキーマ)を別々に照会して結果をマージすることを意味することを意味するのを意味します。これは、SQLまたは好ましくはデータウェアハウスを参照している可能性があるReporting / Analyticsツールを介して行われることがあります。これを行う方法に関する答えを複製する代わりに、私はみんなに2つの非常に良い記事に指示します: