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

DAX查询优化:如何过滤SUMMARIZE结果中Total为空值的记录?

解决DAX中过滤空Total值的问题

你的问题很常见——用SUMMARIZE聚合后需要剔除那些没有对应客户记录的姓名。核心原因是当某个name在ftm表中没有匹配的p_key时,DISTINCTCOUNT(ftm[p_key])会返回BLANK(),我们需要把这些行过滤掉。这里有两种实用的解决方案:

方法1:用FILTER包裹现有SUMMARIZE

直接在你的聚合结果外层套一个FILTER,筛选出Total不为空的行:

summarizedCAM = 
FILTER (
    SUMMARIZE ( 
        d_cam, 
        d_cam[name], 
        "Total", DISTINCTCOUNT(ftm[p_key]) 
    ),
    NOT ISBLANK([Total])
)

这个逻辑很直观:先生成所有姓名的聚合结果,再把Total为空的行剔除。

方法2:用SUMMARIZECOLUMNS(更高效)

SUMMARIZECOLUMNS是专门为聚合场景设计的函数,支持直接添加过滤条件,性能通常比SUMMARIZE+FILTER更好。我们可以先过滤ftm表中有效的p_key记录,再进行聚合,从源头上避免生成空Total的行:

summarizedCAM = 
SUMMARIZECOLUMNS (
    d_cam[name],
    FILTER ( ftm, NOT ISBLANK(ftm[p_key]) ), -- 先过滤掉ftm中p_key为空的记录
    "Total", DISTINCTCOUNT(ftm[p_key])
)

如果ftm[p_key]本身存在空值,DISTINCTCOUNT会自动忽略它们,所以这个方法还能减少不必要的计算量。

两种方法都能达到你的需求,如果你处理的数据集较大,更推荐第二种方法哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 14:17:30