当您编写 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/