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

Power BI服务中DAX度量值报错:SummarizeColumns无法使用的解决咨询

问题:Power BI服务版筛选特定院校时DAX度量值报错

背景

报表内有矩阵视觉对象,用于统计三个学年中各五分位(Quintile)未完成资格认证人员的占比,核心需求是提取最新学年数据中的最大占比。基础数据包含学生所属的School和College信息。

原DAX代码在以下场景正常运行:

  • Power BI桌面版(全量数据、页面筛选器限定特定院校)
  • Power BI服务版(全量数据)

但在Power BI服务版中,当页面筛选器限定特定院校时,卡片视觉对象会抛出报错。

报错内容

Couldn't load the data for this visual
MdxScript(Model) (122, 9) Calculation error in measure 'Data'[KM MAX IMD NC %]: SummarizeColumns() and AddMissingItems() may not be used in this context.

原DAX代码

KM IMD MAX % = 

VAR queryYear = Data[KM Current Year]
VAR valueTable = 
    SUMMARIZECOLUMNS(
        Data[IMD Quintile],
        FILTER(
            Data,
            Data[Academic Year Name] = queryYear
        ),
        FILTER(
            Data, [IMD Quintile] <> BLANK()
        ),
        FILTER(
            Data,[Ethnicity] <> BLANK()
        ),
        "Fraction", CALCULATE(DISTINCTCOUNT(Data[Student Number]),FILTER(Data, [Completion] = "Not Completed")) / DISTINCTCOUNT(Data[Student Number])
    )
RETURN

    MAXX( SELECTCOLUMNS(valueTable,[Fraction]), [Fraction] )

解决方案

问题根源是SUMMARIZECOLUMNS的上下文兼容性限制:Power BI服务版在复杂筛选上下文(如页面级院校筛选)中,无法正确处理SUMMARIZECOLUMNS与外部筛选的交互,而桌面版引擎的容错逻辑更宽松。

替换为CALCULATETABLE+SUMMARIZE的组合,确保筛选上下文正确传递,同时优化计算逻辑:

KM IMD MAX % = 
VAR queryYear = MAX(Data[KM Current Year])
VAR valueTable = 
    CALCULATETABLE(
        SUMMARIZE(
            Data,
            Data[IMD Quintile],
            "Fraction", 
                DIVIDE(
                    CALCULATE(DISTINCTCOUNT(Data[Student Number]), Data[Completion] = "Not Completed"),
                    DISTINCTCOUNT(Data[Student Number]),
                    0
                )
        ),
        Data[Academic Year Name] = queryYear,
        Data[IMD Quintile] <> BLANK(),
        Data[Ethnicity] <> BLANK()
    )
RETURN
    MAXX(valueTable, [Fraction])

核心优化说明

  • 用CALCULATETABLE包裹SUMMARIZE,外部筛选(如院校筛选)能正确传递到内部计算,兼容服务版的上下文处理逻辑
  • 将原SUMMARIZECOLUMNS的多个独立FILTER合并为CALCULATETABLE的筛选参数,逻辑更简洁且避免上下文冲突
  • 改用DIVIDE函数处理除法,自动处理分母为0的异常情况
  • queryYear使用MAX(Data[KM Current Year])确保在任何筛选上下文下都能获取单一的最新学年值,避免原代码中直接引用列可能导致的多值冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 08:03:15