首页 > 解决方案 > 在度量中使用 LOOKUPVALUE 函数的替代方法?

问题描述

我有一个方法可以成功计算每个月的计划收入累计金额:

Revised Revenue :=
CALCULATE (
    SUM ( Rev_Revised[Revenue] ),
    Data_Types[Data Types] = "Projected"
)
Cumulative Revised Revenue :=
IF (
    MIN ( MonthDate[MonthDate] )
        <= CALCULATE ( MAX ( Rev_Revised[MonthDate] ), ALL ( Rev_Revised ) ),
    CALCULATE (
        [Revised Revenue],
        FILTER (
            ALL ( MonthDate[MonthDate] ),
            MonthDate[MonthDate] <= MAX ( MonthDate[MonthDate] )
        )
    )
)

当在数据透视表中与 Running Total In... 结合使用时,它看起来像这样:

图 1

我现在需要做的是创建一个新的度量,将收入捕获百分比乘以每个月的累积金额(这就像对实际收集收入的滞后的预测),这些百分比可以在相关表中找到:

图 2

在度量中使用LOOKUPVALUE显然会引发错误,因为它不会产生一个值。我可以轻松地在执行此计算的数据透视表下创建自己的附加行,但我真的希望它在数据模型中执行。有任何想法吗?

编辑:我现在能找到的最接近的解决方案是我的支出计划数据集中的一个计算列,用于查找每一行的百分比:

Monthly Rev Capture :=
LOOKUPVALUE (
    Rev_Capture[Revenue Capture],
    Rev_Capture[MonthDate], Rev_Revised[MonthDate]
)

然后对此进行衡量:

Rev Capture Amount :=
[Cumulative Revised Revenue] * AVERAGE ( Rev_Revised[Monthly Rev Capture] )

但这在数据透视表中计算不正确。这是它的样子,在表格下方显示了正确的手动计算以供验证:

在此处输入图像描述

我需要的是类似于其中之一的措施,但当然这些都失败了:

Rev Capture Total:=
[Cumulative Revised Revenue]*RELATED(Rev_Capture[Revenue Capture])
Rev Capture Total v2:=
     [Cumulative Revised Revenue]*LOOKUPVALUE(Rev_Capture[Revenue Capture],
MonthDate[MonthDate],
Rev_Capture[MonthDate])

标签: exceldaxpowerpivot

解决方案


您的 v2 度量看起来很接近,但由于它不是计算列,因此您不能只引用列而不使用聚合函数,例如AVERAGEor MAXVALUES因为查找函数需要单个值来查找。

试试这样:

Rev Capture Total v2 :=
[Cumulative Revised Revenue]
    * LOOKUPVALUE (
        Rev_Capture[Monthly Rev Capture],
        Rev_Capture[MonthDate], SELECTEDVALUE ( MonthDate[MonthDate] )
    )

如果您的过滤器上下文只有一个月,SELECTEDVALUE将返回与其他聚合器相同的/// SUMMAX但如果过滤AVERAGEVALUES上下文中有多个值,则返回空白,因为不只有一个选项。


推荐阅读