DAX多列分组汇总报错求助:表达式非有效表表达式
DAX多列分组汇总报错求助:表达式非有效表表达式
嗨,我来帮你分析下这个报错的原因,以及对应的解决办法~
你遇到的问题核心很明确:你的DAX公式最后返回的是一个标量值(也就是sumx(tab1,[Totals])计算出的单个数值),但你应该是把它当成表表达式来使用了(比如在Power BI的「新建表」功能里,或者试图把它作为可视化的表数据源)。而DAX对表表达式的要求是必须返回一个表结构,标量值不符合这个要求,所以才会抛出「表达式不是有效表表达式」的错误。
根据你的需求,我分两种场景给你解决方案:
场景1:你需要生成分组后的明细汇总表
如果你的目标是得到包含Proj Ref、Deliverer、各级交付人、Period这些分组维度,以及对应分组金额合计的完整表,那你只需要直接返回tab1变量即可,不需要后续的SUMX计算:
Summarise = VAR tab1 = SUMMARIZE( 'Table', 'Table'[Proj Ref], 'Table'[Deliverer], 'Table'[Level 2 Deliverer], 'Table'[Level 3 Deliverer], 'Table'[Period], "Totals", SUM('Table'[Amount]) ) RETURN tab1
把这个公式用在「新建表」操作里,就能得到你想要的分组汇总表啦。
场景2:你需要计算所有分组的总合计金额
如果你的目标是算出所有分组的金额总和(也就是整个表的总金额),那这个公式应该作为度量值来创建(而不是新建表),此时返回标量值是完全合法的。你的原公式本身逻辑没问题,只要调整使用场景就行:
Total Amount = VAR tab1 = SUMMARIZE( 'Table', 'Table'[Proj Ref], 'Table'[Deliverer], 'Table'[Level 2 Deliverer], 'Table'[Level 3 Deliverer], 'Table'[Period], "Totals", SUM('Table'[Amount]) ) VAR a = SUMX(tab1, [Totals]) RETURN a
不过这里提个小优化:其实这个场景下直接用SUM('Table'[Amount])就能得到完全一样的结果,除非你有额外的过滤或分组逻辑需要先通过SUMMARIZE处理~
备注:内容来源于stack exchange,提问作者Yolanda CB
相关产品推荐
相关产品推荐

