Power BI中Running total计算列按IP筛选时失效问题
解决DAX累计求和(Running Total)按IP筛选时的异常问题
现有包含
Time、IP、Delta列的Connections表,创建累计求和列的DAX表达式如下:Running total = VAR currentTime = [Time] RETURN CALCULATE ( SUM ( [Delta] ), Connections[Time] <= currentTime, Connections )该表达式在无筛选时正常运行,但按
IP筛选后,累计求和起始值不为0(示例为5),原因是求和时包含了其他IP的Delta值。
修正后的DAX表达式
方式一:明确限定当前IP维度
Running total = VAR currentTime = [Time] VAR currentIP = [IP] RETURN CALCULATE ( SUM ( [Delta] ), Connections[Time] <= currentTime, Connections[IP] = currentIP, ALLSELECTED(Connections[IP]) )
方式二:使用ALLEXCEPT保留IP筛选上下文
Running total = VAR currentTime = [Time] RETURN CALCULATE ( SUM ( [Delta] ), Connections[Time] <= currentTime, ALLEXCEPT(Connections, Connections[IP]) )
问题原因与修正逻辑
- 原表达式仅对时间范围做了限制,但未隔离
IP维度的筛选上下文,导致按IP筛选时,求和范围仍包含所有IP中符合时间条件的Delta值。 - 两种修正方式核心逻辑一致:
- 方式一通过新增
Connections[IP] = currentIP条件,明确限定仅对当前行所属IP的历史时间数据求和; - 方式二用
ALLEXCEPT函数保留IP列的筛选状态,移除其他列的筛选干扰,确保累计求和仅在当前IP范围内计算。
- 方式一通过新增
内容的提问来源于stack exchange,提问作者Rasmond
相关产品推荐
相关产品推荐

