Ssas 同一累积事实表中的独立计数

Ssas 同一累积事实表中的独立计数,ssas,mdx,data-warehouse,business-intelligence,dimensional-modeling,Ssas,Mdx,Data Warehouse,Business Intelligence,Dimensional Modeling,因此,我有一个销售事实表,它基于事务生命周期模型(或累积事实快照表),有很多不同的日期键列(如销售日期、退款日期等)。我对每个日期列做了不同的度量,即非空销售日期键列的和是[销售数量],非空退款日期键列的和是[退款数量],等等。每个日期键列都与不同的日期键维度相关。销售日期维度和退款日期维度都是角色扮演维度,都基于相同的DimDate表。还有其他非基于日期的维度,但为了这个示例,我将保持简单-storeType还有另一个维度(零售、电子商务等) 当我浏览多维数据集时(大多数用户都会通过excel

因此,我有一个销售事实表,它基于事务生命周期模型(或累积事实快照表),有很多不同的日期键列(如销售日期、退款日期等)。我对每个日期列做了不同的度量,即非空销售日期键列的和是[销售数量],非空退款日期键列的和是[退款数量],等等。每个日期键列都与不同的日期键维度相关。销售日期维度和退款日期维度都是角色扮演维度,都基于相同的DimDate表。还有其他非基于日期的维度,但为了这个示例,我将保持简单-storeType还有另一个维度(零售、电子商务等)

当我浏览多维数据集时(大多数用户都会通过excel浏览和浏览多维数据集),我可以将[Number of Sales]和[Number of Returns]拖到columns]部分,然后在rows部分拖动StoreType维度,它会正确显示数据,如下所示:


                 Number of Sales   Number of Refunds
----------------------------------------------------
Retail           10                8
eCommerce        5                 2
这很好,因为我没有应用任何日期过滤器,所以它会显示所有内容。我已经确认了事实表中的数据,事实上,这些数字是正确的

但是我想对[Number of Sales]和[Number of Returns]都应用相同的日期过滤器-因此我将这两个维度拖到过滤器区域,并对两者应用相同的日期过滤器-当然,两列的数字都是相同的:


                 Number of Sales   Number of Refunds
----------------------------------------------------
Retail           5                 4
eCommerce        5                 4
。。因为我认为,通过有效地将一个日期应用于两个日期维度,我将向下过滤到同一组行(因为它们来自同一个表)。我知道这是不正确的,因为我可以从事实表中查询各个行,并查看它们具有不同的值

基本上,我想将这两列显示在一起,但实际上它们没有任何共同之处。我甚至可能在每个列上有两个不同的日期过滤器,即显示2010财年的所有销售额和2011财年的所有退款。这也是用户完全可以浏览的,因此必须在不必进行复杂的MDX查询的情况下提供度量

我想我可以创建另一个事实表来在事务事实表中容纳相同的数据,然后我可以对其进行单独计数——但让两个单独的事实表或多或少地对同一事物进行计数是没有意义的


你知道怎么做吗?救命

听起来您可能需要对聚合列应用case语句。大致如下:

SELECT StoreType
     , SUM(CASE WHEN SalesCol IS NOT NULL THEN 1 ELSE NULL END) AS NumSales
     , SUM(CASE WHEN RefundCol IS NOT NULL THEN 1 ELSE NULL END) AS NumRefunds
FROM FactTable
WHERE SaleDate BETWEEN Date1 AND Date2
GROUP BY 1