【问题标题】:Using FILTER() in DAX在 DAX 中使用 FILTER()
【发布时间】:2021-12-29 11:30:15
【问题描述】:

在 Power BI 中使用 CALCULATE() 函数应用筛选器的最佳做法是什么? 使用 FILTER() 如下: 最昂贵的非有机 = CALCULATE(MAX(dProduct[Amount]), FILTER(dProduct, dProduct[IsOrganic]="N"))

或者,使用如下的直接布尔表达式: 最昂贵的非有机 = CALCULATE(MAX(dProduct[Amount]),'dProduct'[IsOrganic]="N")

【问题讨论】:

    标签: filter powerbi dax


    【解决方案1】:

    当您编写 CALCULATE 语句时,所有过滤器参数都是表表达式,例如一个或多个列或整个表的值列表。例如,当你写:

    CALCULATE (
        <expression>,
        table[column] = <value> 
    )
    

    实际上您编写的过滤器表达式转换为:

    CALCULATE (
        <expression>,
        FILTER (
            ALL ( table[column] ),
            table[column] = <value> 
        )
    )
    

    对于 CALCULATE 和 CALCULATETABLE 的所有过滤器参数,此行为都是相同的。

    你的第一句话很糟糕。

    CALCULATE(MAX(dProduct[Amount]), FILTER(dProduct, dProduct[IsOrganic]="N"))
    

    在您的示例中使用过滤器的正确方法:

    CALCULATE(MAX(dProduct[Amount]), FILTER(ALL(dProduct[IsOrganic]), dProduct[IsOrganic]="N"))
    

    因为您提供了一个完整的 EXPANDED 表作为过滤器(您从 dProduct 和相关表中推送了许多列)。

    阅读这篇文章: https://www.sqlbi.com/articles/expanded-tables-in-dax/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-10
      • 2011-04-13
      • 2018-11-03
      • 1970-01-01
      • 1970-01-01
      • 2016-05-08
      相关资源
      最近更新 更多