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

使用SUMMARIZECOLUMNS创建计算表在SSAS Tabular Cube中无列显示的问题求助

SUMMARIZECOLUMNS创建计算表在SSAS Tabular Cube中无列显示的问题求助

嘿,我来帮你捋捋这个问题!你碰到的情况确实有点让人困惑——DAX Studio里能正常跑的代码,到Tabular Editor里创建计算表就没列了,核心问题出在你的DAX代码的筛选逻辑和语法细节上。

先看你原来的代码:

SUMMARIZECOLUMNS (
'Client Date'[Month],    
'Client Date'[Year],    
FILTER ('Client Date','Client Date'[Date]=MONTH(NOW())),
"Buy", [Count Sales]
)
ORDER BY 'Client Date'[Year]

这里有两个关键错误导致了空表(所以看不到列):

  1. 类型不匹配的筛选条件
    'Client Date'[Date]是日期类型的列,而MONTH(NOW())返回的是1-12的数字(比如当前是10月就返回10)。你用=把日期和数字直接比较,永远不会有匹配的行,自然整个计算表就是空的——空表在Tabular Editor里就会显示没有列。

  2. 筛选器的写法可以更规范(可选,但影响性能)
    虽然FILTER作为SUMMARIZECOLUMNS的筛选参数语法上允许,但对于这种简单的列值匹配,用TREATAS会更高效,尤其是当Client Date表很大的时候。

下面是修正后的代码,你可以直接复制到Tabular Editor里测试:

SUMMARIZECOLUMNS (
    'Client Date'[Month],    
    'Client Date'[Year],
    -- 筛选出当前年份+当前月份的行,避免跨年份的同月份数据混入
    FILTER (
        'Client Date',
        MONTH('Client Date'[Date]) = MONTH(NOW()) &&
        YEAR('Client Date'[Date]) = YEAR(NOW())
    ),
    "Buy", [Count Sales]
)
ORDER BY 'Client Date'[Year]

如果想要更高效的版本,可以换成TREATAS:

SUMMARIZECOLUMNS (
    'Client Date'[Month],    
    'Client Date'[Year],
    -- 直接匹配当前年份和月份的列值,性能更优
    TREATAS({YEAR(NOW())}, 'Client Date'[Year]),
    TREATAS({MONTH(NOW())}, 'Client Date'[Month]),
    "Buy", [Count Sales]
)
ORDER BY 'Client Date'[Year]

至于为什么DAX Studio里能运行出结果,大概率是你在DAX Studio运行时,上下文里有额外的筛选(比如手动选了某个日期范围),或者你在DAX Studio里的代码其实是正确的,复制到Tabular Editor时不小心写错了筛选条件。

把修正后的代码粘贴到Tabular Editor的表达式编辑器里验证,应该就能看到预期的3列和对应数据啦!

备注:内容来源于stack exchange,提问作者Linus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 10:13:01