如何将SSRS中的求和表达式正确转换为Power BI可用的DAX公式
问题原因说明
你遇到的
The SUM function only accepts a column reference as an argument报错,核心原因是DAX语法中SUM函数仅支持传入整列引用作为参数,不支持直接传入IF判断这类表达式。同时你原公式还存在表名笔误:内层IF引用的Query[TypeRecord]遗漏了表名后缀1,应为Query1[TypeRecord]。
正确写法
原SSRS表达式的逻辑是:逐行判断发送日期早于当天、且记录类型为1时,累加对应吨数。Power BI中优先推荐使用度量值实现(匹配SSRS聚合运算的使用场景,支持随报表筛选上下文动态计算),两种常用写法如下:
- 写法1:
SUMX迭代函数(和原SSRS逻辑完全对应,可读性高)
符合条件吨数汇总 = SUMX ( 'Query1', IF ( 'Query1'[DateSend] < TODAY () && 'Query1'[TypeRecord] = 1, 'Query1'[Tons], 0 ) )
- 写法2:
CALCULATE修改筛选上下文(性能更优,适合大数据量场景)
符合条件吨数汇总 = CALCULATE ( SUM ( 'Query1'[Tons] ), 'Query1'[DateSend] < TODAY (), 'Query1'[TypeRecord] = 1 )
如果你确实需要创建计算列(每行存储全表符合条件的静态汇总值),可以使用如下写法:
New Column = CALCULATE ( SUM ( 'Query1'[Tons] ), FILTER ( ALL ( 'Query1' ), 'Query1'[DateSend] < TODAY () && 'Query1'[TypeRecord] = 1 ) )
内容的提问来源于stack exchange,提问作者user15500092
相关产品推荐
相关产品推荐

