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

Power BI中DAX CALCULATETABLE/SUMMARIZE添加过滤器报错求助

修复DAX中CALCULATETABLE/SUMMARIZE的筛选错误

错误根源

你碰到的错误:

Function SUMMARIZE expects a column name as argument number 6

核心问题是SUMMARIZE函数的参数使用错误。SUMMARIZE的语法要求是:SUMMARIZE(<表>, <分组列1>, <分组列2>, ..., "<计算列名>", <计算表达式>),你把FILTER直接塞到了SUMMARIZE的参数列表里,这完全不符合它的参数规则。

两种可行的修复方案

方案1:在CALCULATETABLE中添加筛选条件

CALCULATETABLE的第二个及以后的参数就是用来定义筛选上下文的,把筛选条件放在这里是最规范的写法:

StudentAbsenceXXXX = CALCULATETABLE (
    SUMMARIZE (
        'Attendance2425',
        'Attendance2425'[AdmissionNo],
        'Students'[Year Group(s)],
        "Student Sessions Present",
            CALCULATE (
                COUNTROWS ( 'Attendance2425' ),
                'Attendance2425'[Mark Meaning] IN { "Present", "Educational Activity" }
            )
    ),
    -- 基础筛选条件
    'Attendance2425'[Mark Meaning] = "Educational Activity",
    -- 添加年级筛选(按需启用,替换成你的目标年级)
    -- 'Students'[Year Group(s)] = "10年级"
)

方案2:先筛选表再传入SUMMARIZE

如果需要先对Attendance2425表做预筛选,再进行分组汇总,可以把筛选后的表作为SUMMARIZE的第一个参数:

StudentAbsenceXXXX = CALCULATETABLE (
    SUMMARIZE (
        -- 先筛选出符合条件的记录
        FILTER('Attendance2425', 'Attendance2425'[Mark Meaning] = "Educational Activity"),
        'Attendance2425'[AdmissionNo],
        'Students'[Year Group(s)],
        "Student Sessions Present",
            CALCULATE (
                COUNTROWS ( 'Attendance2425' ),
                'Attendance2425'[Mark Meaning] IN { "Present", "Educational Activity" }
            )
    )
    -- 额外添加年级筛选(按需启用)
    -- , 'Students'[Year Group(s)] = "10年级"
)

优化建议

  • 多值判断用IN替代多个||,代码更简洁易维护
  • 年级筛选直接在CALCULATETABLE的筛选参数中添加即可,不需要改动SUMMARIZE的分组逻辑

内容的提问来源于stack exchange,提问作者Peter Beckett

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 07:33:25