答案 0 :(得分:2)
可以在计算列中使用过滤器。只是不要期望它们对切片器做出响应。在这种情况下,不使用FILTER
函数来支持简单的CALCULATE
参数可能会更有效地进行计算:
TotalIncurredMaxDate =
VAR MaxDate =
CALCULATE (
MAX ( Table1[DateCreated] ),
ALLEXCEPT ( Table1, Table1[ControlNo], Table1[ClaimID] ),
Table1[TotalIncurred] > 0
)
RETURN
IF ( Table1[DateCreated] = MaxDate, Table1[TotalIncurred], 0 )
答案 1 :(得分:1)
计算的列具有当前行的“行上下文”,并且没有过滤器上下文,因为它们是在模型加载期间应用任何过滤器之前计算的。但是您可以在计算中创建过滤器。 EG
TotalIncurredMaxDate =
var claimId = Table1[ClaimID]
var controlNo = Table1[ControlNo]
var maxDate = calculate(
max(Table1[DateCreated]),
filter (
all (Table1),
Table1[ClaimID]=claimId
&& Table1[ControlNo] = controlNo
&& Table1[TotalIncurred] > 0
)
)
var retval = if(Table1[DateCreated] = maxDate, Table1[TotalIncurred], 0)
return retval