在度量中使用 LOOKUPVALUE 函数的替代方法?
Alternative to LOOKUPVALUE function for use within a measure?
我有一个方法可以成功计算每个月的累计计划收入:
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] )
)
)
)
当在枢轴 table 中与 运行 Total In... 一起使用时,它看起来像这样:
我现在需要做的是创建一个新的衡量标准,将收入捕获百分比乘以每个月的累计金额(这就像对实际收取收入的滞后性的预测),这些百分比可以在相关 table:
在度量中使用 LOOKUPVALUE
显然会引发错误,因为它不会产生一个值。我可以轻松地在执行此计算的数据透视表 table 下创建我自己的附加行,但我真的希望它在数据模型中执行。有什么想法吗?
编辑:
我现在能想到的最接近的解决方案是我的支出计划数据集中的计算列,它查找每一行的百分比:
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] )
但是在枢轴 table 中计算不正确。这是它的样子,在 table 下方显示了正确的手动计算以进行验证:
我需要的是类似于其中一个的措施,但当然这些都失败了:
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])
您的 v2 度量看起来很接近,但由于它不是计算列,您不能只引用列而不使用像 AVERAGE
或 MAX
或 VALUES
这样的聚合函数,因为查找函数需要查找单个值。
这样试试:
Rev Capture Total v2 :=
[Cumulative Revised Revenue]
* LOOKUPVALUE (
Rev_Capture[Monthly Rev Capture],
Rev_Capture[MonthDate], SELECTEDVALUE ( MonthDate[MonthDate] )
)
如果您的过滤器上下文只有一个月份,SELECTEDVALUE
将 return 与 SUM
/MAX
/AVERAGE
/[ 等其他聚合器相同=13=] 但如果过滤器上下文中有多个值,则会 return 为空白,因为不只有一个选项。
我有一个方法可以成功计算每个月的累计计划收入:
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] )
)
)
)
当在枢轴 table 中与 运行 Total In... 一起使用时,它看起来像这样:
我现在需要做的是创建一个新的衡量标准,将收入捕获百分比乘以每个月的累计金额(这就像对实际收取收入的滞后性的预测),这些百分比可以在相关 table:
在度量中使用 LOOKUPVALUE
显然会引发错误,因为它不会产生一个值。我可以轻松地在执行此计算的数据透视表 table 下创建我自己的附加行,但我真的希望它在数据模型中执行。有什么想法吗?
编辑: 我现在能想到的最接近的解决方案是我的支出计划数据集中的计算列,它查找每一行的百分比:
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] )
但是在枢轴 table 中计算不正确。这是它的样子,在 table 下方显示了正确的手动计算以进行验证:
我需要的是类似于其中一个的措施,但当然这些都失败了:
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])
您的 v2 度量看起来很接近,但由于它不是计算列,您不能只引用列而不使用像 AVERAGE
或 MAX
或 VALUES
这样的聚合函数,因为查找函数需要查找单个值。
这样试试:
Rev Capture Total v2 :=
[Cumulative Revised Revenue]
* LOOKUPVALUE (
Rev_Capture[Monthly Rev Capture],
Rev_Capture[MonthDate], SELECTEDVALUE ( MonthDate[MonthDate] )
)
如果您的过滤器上下文只有一个月份,SELECTEDVALUE
将 return 与 SUM
/MAX
/AVERAGE
/[ 等其他聚合器相同=13=] 但如果过滤器上下文中有多个值,则会 return 为空白,因为不只有一个选项。