リレーショナル データ ウェアハウス / SSAS 2008 R2 / SQL Server 2008 R2
ファクト テーブルよりもキューブのデータが少ない: すべてのロールプレイング日付ディメンションに対応するメンバーを持つファクトのみが考慮されます。
ファクト テーブルよりも「キューブ」のデータの方が少ないことに気付きました。ファクト テーブルの "Line Items" の数SELECT Count(*) FROM [FactSales]
が、キューブの "Line Item Count" メジャーに対応していません。
そのため、彼が含むべき事実の 1% 未満しか保持していません。何日ものデータが欠落しています。
だから私はいくつかの研究をしました。最初に最も考えられる原因を除外しました (たとえば、「すべて」のメンバーではない既定のメンバーをチェックアウトする、処理オプションをチェックアウトする、など)。問題を考える前に、まずモデルとファクト テーブルの詳細について説明します。
リレーショナル データ ウェアハウスは、ファクト テーブルが販売データを保持するスター スキーマに従います。1 つの日付ディメンションを指す複数の外部キーがあります。この日付ディメンションは、SSAS ではいくつかのロールプレイング ディメンションによって表されます。これらの FK はすべて NOT NULL です。日付ディメンションには、不明なメンバーがあります (基になるテーブル内)。したがって、日付ディメンション キー (Int) の Null 処理は「エラー」に設定されます。ディメンションの使用法が適切に設定されている (Null 処理: エラー)。
最後に確認することは、ファクト テーブルとそのディメンションに基づいて、キューブで取得したのと同じカウントのライン アイテムを返すクエリを作成できるかどうかです。
最後にクエリ (Q1) です。
SELECT COUNT(*) --cut-set
FROM Fact AS F
INNER JOIN DimDate
ON F.Date1Key = Date.DateKey
AND F.Date2Key = Date.DateKey
AND F.Date3Key = Date.DateKey
もちろん、それは間違っています。次のようになります (Q2):
SELECT COUNT(*) --complete Set
FROM FactSales AS F
INNER JOIN DimDate AS DimDate1
ON F.Date1Key = DimDate1.DateKey
INNER JOIN DimDate AS DimDate2
ON F.Date2Key = DimDate2.DateKey
INNER JOIN DimDate AS DimDate3
ON F.Date3Key = DimDate3.DateKey
しかし、それは明らかにデータ (Q2) SSAS がキューブに示しているものではありません。残念ながら、SSAS は Q1 Test-query によって返されたデータを示しています。したがって、Q1 はデータの小さなサブセットにすぎません。各 Date-Dimensions (Date1、Date2、Date3) に対応するメンバーを持つファクトのみが考慮されます。
なぜこれが起こるのかわかりません。これは非常に基本的なことなので、基本的には SSAS でうまくいくはずです。それに加えて、同じデータ ウェアハウス ソリューションの以前のバージョンでもうまく機能しました (ロールプレイングの日付ディメンションが既にありました)。
構成が間違っていると思います(プロパティに関係なく)。誰にもアイデアがありますか?
乾杯パトリック