2

我对 SSAS 很陌生,完全不知道如何解决这个问题。我有一个称为阈值的维度。在阈值维度中有以下成员:

[门槛年份]、[门槛1金额]、[门槛2金额]、[门槛3金额]

我还有一个措施叫【合格佣金】、【Tier1 Amount】、【Tier2 Amount】、【Tier3 Amount】

除此之外,还有一个称为 [Statement Dates] 的时间维度

所以基本上这就是我想要做的。我想创建一个计算成员,当最终用户从 [Statement Dates] 中选择一个时间范围时,我想总结 [Qualifying Commission] 并将其与相应年份的阈值金额进行核对。如果它大于 [Threshold1 Amount],我希望它返回 [Tier1 Amount] 度量,其逻辑适用于阈值 2 和 3。

有人可以给我一张关于我需要做什么的路线图吗?如果我需要重组底层数据库中的数据来完成这项工作,那么知道这将非常有帮助。在此先感谢您的帮助。

4

2 回答 2

2

好吧,让我们假设这[Qualifying Commission]是一个加法度量,这意味着总和由 SSAS 为我们处理。

从本质上讲,我们只需要找到我们所处的任何一年[Statement Dates]来获得我们的门槛。

所以,让我们把它分成几块。我们要做的第一件事就是找到我们的权利[Threshold Year]

create set [Current Threshold] as
    iif([Statement Dates].[YQM].CurrentMember IS [All]
        ,[Threshold Year].[All]
        ,StrToSet("[Threshold Year].[" + 
            Ancestor([Statement Dates].[YQM].CurrentMember
            , [Statement Dates].[YQM].[Year]).Name +  
        "]"))

接下来,我们将应用此阈值来获得正确的数字:

create member currentcube.[Measures].[Threshold Amount] as
    case
        when [Qualifying Commission] > 
                 [Current Threshold].Item(0).Properties("Threshold1 Amount") then
            [Measures].[Tier1 Amount]
        when [Qualifying Commission] > 
                 [Current Threshold].Item(0).Properties("Threshold2 Amount") then
            [Measures].[Tier2 Amount]
        when [Qualifying Commission] > 
                 [Current Threshold].Item(0).Properties("Threshold3 Amount") then
            [Measures].[Tier3 Amount]
        else 0
    end

瞧,你正在用煤气做饭。

于 2009-08-20T12:35:55.080 回答
0

您还应该考虑使用范围运算符。当您需要实现条件求和时,它可以帮助提高性能。

范围运算符来自 MSDN

于 2009-08-28T00:27:21.940 回答