0

使用累积的快照事实,我在表格立方体中扮演多个角色扮演日期维度。

用户希望能够查看在给定时间段内发生任何日期事件的时间(与工具中非常自然的所有日期事件相反)。

这本质上是一个 OR 语句。

我尝试添加另一个日期维度实例,然后将所有角色扮演维度加入其中(如下所示),但没有取得多大成功。 在此处输入图像描述

未完全显示,但还指出了与维度相关的两个事实表。

如何从根本上将 OR 条件应用于数据透视表中的多个维度?

手头的问题是检索给定月份中收到、退回或开票的订单数量。如:

Time Period = January 2016
Received Count = 20
Returned Count = 16
Invoiced Count = 32

因此,ReceivedDateSID = 20160101 和 ReturnedDateSID =20160115 和 InvoicedDateSID = 20160130 的事实记录应在每个度量中计算一次。

4

1 回答 1

0

一种性能很好但需要 3 倍以上内存的简单方法是:

  1. 拥有一个 DimDate
  2. 有 FactReceipt、FactReturn、FactInvoice。FactReceipt 在 ReceiptDateKey 上加入 DimDate。FactReturn 在 ReturnedDateKey 上加入 DimDate。FactInvoice 在 InvoiceDateKey 上加入 DimDate。
  3. 您甚至可以在定义这些事实表的 SQL 视图上放置 where 子句。例如,您只需要 FactReturn 中返回的 1% 的订单。

对于大量复杂的 DAX,我个人更喜欢这种方法。任何时候,一个度量(如返回计数)只对一个角色扮演日期维度有意义,我认为这种方法。

您也可以考虑隐藏除一个事实表之外的所有事实表,并将所有计算量度放在一个主事实表中。这可能会减少您的用户的困惑。尽管那时钻取不起作用。

于 2016-02-08T01:19:41.427 回答