我试图弄清楚如何创建一个计算度量,该度量仅在我的事实表中产生唯一事实的计数。我的事实表基本上从历史的角度存储事件。但是我需要该措施来过滤掉多余的事件。
以销售额为例(由于 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 中是否有可能或事件性能良好?