在Power BI中创建计算列时如何使用过滤器?

时间:2019-08-28 19:57:16

标签: powerbi dax powerbi-desktop

无法在计算的列中使用过滤器,那么如何在DAX中简单地创建一个列,该列将基于最大claimID和最大DateCreated选择一个值?

enter image description here

结果应如下所示:

enter image description here

2 个答案:

答案 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