web-dev-qa-db-ja.com

粒度の異なるメジャーグループの処理

次のファクトテーブルを持つ単純なデータウェアハウスがあるとします。

  • FactPurchase:購入したプロパティごとに1行、購入金額、金額など。
  • FactMonthlyStatus:プロパティごと、月ごとに1行。家賃支払い、維持管理費等.

FactPurchaseに適用されるディメンション(プロパティ、プロパティの種類、場所など)とFactMonthlyStatusに適用されるディメンション(占有状況、状態、月など)があります。

選択したディメンションに関係なく、これらの両方のテーブルのファクトを表示できるキューブをセットアップできるようにしたいと考えています。たとえば、今月支払われた家賃の合計を(ブラウザーグリッドでメジャーとして支払われた家賃をフィルターに入れることによって)表示している場合、プロパティタイプもディメンションとして表示できるようにしたいと思います。つまり、Xか月の物件タイプごとの家賃を確認できます。

SQLでは、これは簡単です。プロパティディメンションキーでFactPurchaseをFactMonthlyStatusに結合し、where句に月を入れ、プロパティタイプ別にグループ化し、支払った家賃を合計します。ただし、これをSSASで適切にモデル化する方法がわかりません。プロパティタイプのディメンションを両方のファクト(メジャーグループとして)に関連付ける必要があるようですが、そのディメンションはFactPurchaseに直接マップするだけです。 FactMonthlyStatusにはプロパティタイプのディメンションはありません。私はディメンションの使用法を多対多に試してみましたが、最初はうまくいくように見えますが、FactMonthlyStatusテーブルからブラウザーにディメンション(条件など)がある場合、期待どおりに、 -多くの状況。使用されているプロパティタイプと条件のすべての組み合わせであり、指定された月の時点で有効な組み合わせではありません。条件ディメンションとプロパティタイプディメンションの間に中間ディメンションがないため、参照も機能しません。ただし、中間的な事実があります。

2
siride

2つの異なるファクトテーブルのメジャーを、並べて表示するが粒度の異なるものにしたい場合、それは可能ですが完全ではありません。たとえば、FactPurchaseの購入金額のメジャーには、月に相当するものはありません。

これを行うには、両方のファクトテーブル間で関連するディメンションをできるだけ多く用意すると便利です。したがって、FactPurchaseに関連するプロパティタイプなどのディメンションがある場合は、FactMonthlyStatusでもそのディメンションを作成します。これは、これらを実際のFactMonthlyStatusテーブルに追加してETLプロセスで把握することによって、またはキューブにロードされるときにこれらのディメンションを参照するために結合を行うFactMonthlyStatusの上に位置するビューを作成することによって実行できます。ただし、月などのディメンションは、FactPurchaseよりも細かいレベルになります。

理解する必要のある主なことは、両方のファクトテーブルのメジャーが互いにどのように関連しているかです。あなたは家賃の現在の合計を維持しようとしていますか?それがあなたが不動産に支払ったものとどのように関連しているかを見てください?その場合は、FactPurchaseとFactMonthlyStatusの集計を組み合わせた単一のビューに基づいてキューブを作成し、それらがどのように比較されるかを確認することは意味があります。

1
njkroes