MDX基于IF和大于的计算度量

时间:2018-03-19 15:00:46

标签: ssas mdx olap-cube mdx-query

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

我分别从事实A和事实B中有两列实际单位未来单位但是在相同的粒度级别。我还有需求单位来自事实B

我的要求是:

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)    

enter image description here

我无法在数据源视图级别加入这两个事实并执行 计算那里因为它们是一张非常巨大的表,所以我觉得 表现会很慢。如果你说在做计算 数据源视图级别是我们唯一的方式,请让我 知道。

你有这个吗?

1 个答案:

答案 0 :(得分:0)

当计算总计MDX时,总结A,总结B,然后比较它们。

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

CASE WHEN B>A THEN A ELSE B END

然后根据新列创建Sum度量。

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