You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DAX使用变量封装KEEPFILTERS筛选规则触发语法错误求助

错误原因

KEEPFILTERS语法要求必须直接作为CALCULATE/CALCULATETABLE的顶层筛选参数,你当前将包含KEEPFILTERS的表达式封装到变量后再传入CALCULATE,不符合语法规则,因此触发报错。

优化修正方案

你可以将公共筛选条件提到外层CALCULATE中统一声明,既保留筛选规则复用的效率优化效果,也符合DAX语法要求,修正后的代码如下:

GB 1-2 Login Counts =  
RETURN
CALCULATE(
    SWITCH(
        MAX(GBvsProg[Filter Order]),
        1, CALCULATE(COUNT(D_STUDENTS[GO_LOGIN_CAT]), KEEPFILTERS(D_STUDENTS[PROGRESS_GO_PASSRATECAT] = "Failing 100%")),
        2, CALCULATE(COUNT(D_STUDENTS[GO_LOGIN_CAT]), KEEPFILTERS(D_STUDENTS[PASSING_GO_PASSRATECAT] = "Failing 100%")),
        3, CALCULATE(COUNT(D_STUDENTS[GO_LOGIN_CAT]), KEEPFILTERS(D_STUDENTS[PROGRESS_GO_PASSRATECAT] = "Passing 0-49%")),
        4, CALCULATE(COUNT(D_STUDENTS[GO_LOGIN_CAT]), KEEPFILTERS(D_STUDENTS[PASSING_GO_PASSRATECAT] = "Passing 0-49%")),
        5, CALCULATE(COUNT(D_STUDENTS[GO_LOGIN_CAT]), KEEPFILTERS(D_STUDENTS[PROGRESS_GO_PASSRATECAT] = "Passing 50-74%")),
        6, CALCULATE(COUNT(D_STUDENTS[GO_LOGIN_CAT]), KEEPFILTERS(D_STUDENTS[PASSING_GO_PASSRATECAT] = "Passing 50-99%")),
        7, CALCULATE(COUNT(D_STUDENTS[GO_LOGIN_CAT]), KEEPFILTERS(D_STUDENTS[PROGRESS_GO_PASSRATECAT] = "Passing 100%")),
        8, CALCULATE(COUNT(D_STUDENTS[GO_LOGIN_CAT]), KEEPFILTERS(D_STUDENTS[PASSING_GO_PASSRATECAT] = "Passing 100%"))
    ) + 0,
    -- 公共筛选条件统一在外层声明,复用且符合语法要求
    KEEPFILTERS(D_STUDENTS[GO_LOGIN_CAT] <> ""),
    KEEPFILTERS(D_STUDENTS[GO_LOGIN_CAT] = "1-2")
)

如果你希望保留变量声明的写法,也可以将纯布尔筛选逻辑存入变量,在CALCULATE顶层参数中用KEEPFILTERS包裹变量即可,示例:

GB 1-2 Login Counts =  
var ds_glc_not_empty = D_STUDENTS[GO_LOGIN_CAT] <> ""
var ds_glc_eq_12 = D_STUDENTS[GO_LOGIN_CAT] = "1-2"

RETURN
SWITCH(MAX(GBvsProg[Filter Order]),
    1, CALCULATE(COUNT(D_STUDENTS[GO_LOGIN_CAT]), KEEPFILTERS(ds_glc_not_empty), KEEPFILTERS(ds_glc_eq_12), KEEPFILTERS(D_STUDENTS[PROGRESS_GO_PASSRATECAT] = "Failing 100%")),
    -- 其余分支按照相同规则修改即可
) + 0

内容的提问来源于stack exchange,提问作者Chicken Sandwich No Pickles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 16:24:04