0

我正在编辑我想要的问题。

我有两列Actual Units,Fact A 和 Fact B 的Future Units ,但粒度相同。我也有Fact B 的Demand Units

我的要求是:

1. Projected Units = Coalesce(Actual Units,Future Units)    
2. Stock Units = IF(Projected Units > Demand Units,Demand Units,Projected 
Units)
3. Stock Rate = (Stock Units/Demand Units)    

在此处输入图像描述

我不能在数据源视图级别加入这两个事实并在那里进行
计算,因为它们是一个非常大的表,所以我认为性能会很慢。如果您说在数据源视图级别进行计算是我们唯一的方法,请告诉我。

你得到这个了吗?

4

1 回答 1

0

在计算总计时,MDX 是对 A 求和,对 B 求和,然后比较它们。

如果您希望在行级别进行计算(检查是否 B>A),则编辑数据源视图并将新的计算列添加到您的度量值组所基于的表中。计算的列应为:

CASE WHEN B>A THEN A ELSE B END

然后基于该新列创建一个 Sum 度量。

与任何以非常详细的粒度计算此值的完全 MDX 方法相比,这种方法的性能要好得多。如果您的事实表有 500,000 行或更少,并且您的退化维度与您需要计算的粒度相同,我们可以在 MDX 中完成。但由于您关心 SQL 查询性能,我假设这些表很大。请记住,SQL 在处理时执行一次。MDX 在查询时在每个查询中计算。所以尽可能在 SQL 中做一些昂贵的事情。

于 2018-03-20T06:03:08.250 回答