在 Power BI 中创建计算列时如何使用过滤器?
How to use filter when creating calculated column in Power BI?
过滤器不能用于计算列,那么我如何简单地在 DAX 中创建一个列,该列将根据最大值 claimID
和最大值 DateCreated
选择一个值?
结果应该是这样的:
计算列具有当前行的 "row context",并且没有过滤器上下文,因为它们是在应用任何过滤器之前在模型加载期间计算的。但是您可以在计算中创建过滤器。 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
可以在计算列中使用过滤器。只是不要指望他们对切片器有反应。在这种情况下,不使用 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 )
过滤器不能用于计算列,那么我如何简单地在 DAX 中创建一个列,该列将根据最大值 claimID
和最大值 DateCreated
选择一个值?
结果应该是这样的:
计算列具有当前行的 "row context",并且没有过滤器上下文,因为它们是在应用任何过滤器之前在模型加载期间计算的。但是您可以在计算中创建过滤器。 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
可以在计算列中使用过滤器。只是不要指望他们对切片器有反应。在这种情况下,不使用 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 )