摘要
CALCULATE 筛选器参数一个迭代器. 找到合适的粒度对控制结果和性能至关重要。本文描述了创建复杂DAX筛选器的可用选项
注意:
本文是描述的是参数为表筛选器时的情景,不考虑那些Directive参数(例如ALL, USERELATIONSHIP, CROSSFILTER,…),这些函数是不通过返回一列值修改筛选上下文。
CACULATE中筛选器的基本原理
当CALCULATE中的筛选器参数全部都是表表达式,例如返回值为一张表中的一列或者多列,甚至是一整张表时:
CALCULATE (
<expression>,
table<column> = <value>
)
实际上上述的表表达式会被转换为:
CALCULATE(
<expression>,
FILTER(
ALL( table[column]),
Table[column] = <value>
)
)
上述筛选器参数转换的过程,对于CALCULATE和CALCULATETABLE是相同的。下面我们将用通用语法描述这两个函数中的筛选器参数:
CALCULATE(
<scalar expression>,
<filter1>,
<filter2>,
…..,
<filterN>
)
CALCULATETABLE(
<table expression>,
<filter1>,
<filter2>,
…..,
<filterN>
)
筛选器参数可以是逻辑表达式,也可是表表达式。
Table[column] = <value>
Filter( … )
ALL (