我想知道如何创建一个计算出的度量,该度量仅在事实表中生成唯一事实的计数。我的事实表基本上是从历史的角度存储事件。但我需要采取措施来滤除冗余事件。
以销售额为例(由于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