如何优化 MDX 应该根据选择的半年有条件地在两个 Measure 之间做出决定(涉及 SCOPE,Descendants Statements)

How to optimize MDX that should conditionally decide between two Measures based on the half Year choosen (involving SCOPE, Descendants Statements)

[条件预测成本] 是根据名为 "Cost" 和 "Forecast Cost" 的度量通过以下范围语句生成的。

这些语句工作正常,但速度太慢。特别是如果在报告中选择了整年(甚至更多年)。等待时间可能超过 5 分钟。 知道如何优化此 MDX 吗?

SCOPE ([Measures].[Conditional Forecast Cost]);           
THIS =    (IIF([DIM Date].[Half Year].&[1],[Measures].[Cost], [Measures].[Forecast Cost]));
END SCOPE;

SCOPE ([DIM Date].[Iso Month].[All].children, [Measures].[Forecast Costs]);           
    THIS =     SUM(
                  Descendants(
                               [DIM Date].[Iso Month].CurrentMember, 
                               [DIM Date].[Iso Month]
                             ), 
                    [Measures].[Conditional Forecast Cost]
                   );   
END SCOPE;

背景资料:

第一个语句代表基本逻辑。

只要我们按月报告就可以正常工作。

因此,带有后代函数的第二个 SCOPE 语句强制引擎从较低的月度级别进行聚合。 到目前为止这行得通,但速度真的很慢。

附加信息:

  1. 请显示 MEASURES 的 MDX 脚本。[成本]。
  2. 您的 IIF 描述了两个 子多维数据集 => SCOPE 作业。将其转换为这样的形式(简化):

    MEASURES.[Conditional Forecast Cost] = [Measures].[Forecast Cost]
    SCOPE([DIM Date].[Half Year].&[1])
        MEASURES.[Conditional Forecast Cost] = [Measures].[Cost];
    END SCOPE;
    
  3. 你有递归(非常糟糕!):[条件预测成本]调用[预测成本],然后[预测成本]调用[条件预测成本]!你必须不递归地重写它!

yabele.blogspot.com, www.xing.com/profile/Yuri_Abele