0

したがって、トランザクションライフサイクルモデル(またはファクトスナップショットテーブルを累積)に基づいて、非常に多くの異なる日付キー列(売上日付、払い戻された日付など)。私はそれぞれの日付の列に対して異なる測定を行いました。つまり、空でない販売日のキー列の合計は[販売数]で、空でない払い戻しの日付キー列の合計は[払い戻し数]などです。日付キーの列のうちのいくつかは、異なる日付キーの次元に関連しています。売上日付ディメンションと払い戻された日付ディメンションは、同じDimDateテーブルに基づくロールプレイディメンションです。他の非日付ベースのディメンションもありますが、この例では、storeType(小売、eコマースなど)の別のディメンションがあります。同一の累積ファクトテーブルから別々の独立したカウント

キューブをブラウズするとほとんどのユーザーはExcelを使用してキューブをブラウズして探索します)[売上高]と[払い戻し数]を列セクションにドラッグして、行セクションにStoreTypeディメンションをドラッグしてデータを適切に表示できます

 

       Number of Sales Number of Refunds 
---------------------------------------------------- 
Retail   10    8 
eCommerce  5     2 
 

日付フィルタを適用していないため、すべて表示されるため、これは問題ありません。私はFactテーブルのデータを託しましたが、実際には数字は正しいです。

しかし、[売上高]と[払い戻し数]の両方に同じ日付フィルタを適用したいので、両方のディメンションをフィルタ領域にドラッグし、同じ日付フィルタを両方に適用します。もちろん、数字は列の両方のために、すべて同じです。

 

       Number of Sales Number of Refunds 
---------------------------------------------------- 
Retail   5     4 
eCommerce  5     4 
 

..私は効果的に、両方の日付ディメンションに向けて1つの日付を適用することによって、と思うので、私はということで(行の同じセットにダウンフィルタリングしています彼らは同じテーブルのものです)。私はこれが間違っていることを知っています。なぜなら、私はファクトテーブルから個々の行を照会し、それらが異なる値を持つことができるからです。

基本的には、2つの列を一緒に表示することですが、実際には共通点はありません。 2011年度のすべての売上を表示し、2011年度のすべての払い戻しを表示することもできます。これもユーザーが完全に参照できるため、複雑なMDXクエリを実行します。

トランザクションファクトテーブルに同じデータを格納するために別のファクトテーブルを作成することができますが、個別に数えることはできますが、2つの別個のファクトテーブルを持つことは同じではありません。

どうすればいいですか?助けて!!

答えて

0

集計の列にcase文を適用する必要があるようです。この行の何か:

SELECT StoreType 
    , SUM(CASE WHEN SalesCol IS NOT NULL THEN 1 ELSE NULL END) AS NumSales 
    , SUM(CASE WHEN RefundCol IS NOT NULL THEN 1 ELSE NULL END) AS NumRefunds 
FROM FactTable 
WHERE SaleDate BETWEEN Date1 AND Date2 
GROUP BY 1 
関連する問題