我想知道如何創建一個計算出的度量,該度量僅在事實表中生成唯一事實的計數。我的事實表基本上是從歷史的角度存儲事件。但我需要採取措施來濾除冗餘事件。
以銷售額爲例(由於OLAP周圍的所有材料總是使用銷售額作爲示例):
事實表存儲銷售活動。首次銷售時,它有一個獨特的銷售參考,它是事實表中的一列。然而,一個獨特的銷售可以修改(項目添加或返回)或完全取消。事實表將這些更改存儲爲不同的行。
如果我使用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)
是否有可能或事件高性能有子查詢的MDX?
順便說一句,這不是在SQL做計數的性能方法。 eventID的明確計數(特別是如果被索引的話)會好得多。或'Row_number over ...'類型的方法。上述情況將會導致數據量大增。 – piers7 2011-03-24 08:49:23