在筛选器参数修改过的上下文中计算表表达式。
语法
CALCULATETABLE( <表表达式>, [ <筛选器 1> ], [ <筛选器 2> ] … )
参数 | 属性 | 描述 |
表表达式 | 要计值的返回表的表达式 | |
筛选器参数 | 可选 | 定义筛选器的布尔表达式或返回表的表表达式 |
---- 筛选器参数示意 ---- CALCULATETABLE ( <table_expression>, table[column] = 10 //布尔表达式 ) CALCULATETABLE ( <table_expression>, FILTER ( //表表达式 ALL ( table[column] ), table[column] = 10 ) )
当筛选器参数使用布尔表达式的时候,用于判断的值需要遵循一定的限制,只能使用标量值或计算标量值的函数(比如 Date),但是:
- 不能引用度量值。
- 不能使用嵌套的 CALCULATETABLE 函数。
- 不能使用扫描表或返回表的任何函数,包括聚合函数
表表达式形式不受此限制。
返回值
表
一个完整的表或者具有一列或多列的表。
该表是表达式在修改后的筛选上下文环境中计算的结果。
备注
每个筛选器参数都可以删除筛选器(如 ALL、ALLEXCEPT、ALLNOBLANKROW)、还原筛选器(ALLSELECTED),或者使用一个表表达式,返回一列,多列或整个扩展表的值列表。
当筛选器参数是单列形式的条件判断表达式时,该表达式被嵌入到一个筛选引用列所有值的 FILTER 表达式中。例如,筛选器参数示意中的第一个表达式的高亮部分在内部被转换为第二个表达式的高亮部分,两种形式完全等价。
筛选器参数会覆盖同一列上已有的任何筛选器,你可以使用 KEEPFILTERS 改变这种默认行为。
CALCULATETABLE 和 CALCULATE 的行为相同,也是 DAX 中最重要的函数之一,你可以通过介绍 CALCULATE 的相关文章深入了解这个函数:
- MSDN 文档:CALCULATETABLE
- DAX Guide:CALCULATETABLE
说点什么