ファクト テーブル内の一意のファクトのみをカウントする計算メジャーを作成する方法を見つけようとしています。私のファクト テーブルは基本的に、歴史的な観点からイベントを格納します。しかし、冗長なイベントを除外する手段が必要です。
販売を例として使用する (OLAP に関するすべての資料では、常に販売を例として使用するため):
ファクト テーブルには、販売の EVENTS が格納されます。販売が最初に行われると、ファクト テーブルの列である一意の販売参照があります。ただし、独自のセールは修正 (アイテムの追加または返品) または完全にキャンセルすることができます。ファクト テーブルは、販売に対するこれらの変更を異なる行として格納します。
SSAS を使用してカウント メジャーを作成すると、すべての販売イベントのカウントが取得されます。これは、変更が加えられるたびに、一意の販売が複数回カウントされることを意味します (一部のレポートではこれが望ましい)。ただし、イベントではなく、一意の販売参照をカウントするだけでなく、一意の販売数を生成するメジャーも必要です。ユーザーが日付でフィルタリングすると、その日付にまだ存在する一意の売上が表示されます (その日付までに売上がキャンセルされた場合、カウントにまったく表示されない場合)。
MDX/SSAS でこれを行うにはどうすればよいですか? 時間ディメンションに基づいて販売に対する最新の変更を見つけるクエリのサブセットからカウント クエリを機能させる必要があるようです。SQL では次のようになります
SELECT COUNT(*) FROM SalesFacts FACT1 WHERE Event <> 'Cancelled' AND
Timestamp = (SELECT MAX(Timestamp) FROM SalesFact FACT2 WHERE FACT1.SalesRef=FACT2.SalesRef)
。