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
相关产品推荐
相关产品推荐

