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

Power BI中基于双度量的特定条件累计求和度量值创建

Power BI 累计求和度量值实现方案

需求梳理

  • 基于两个核心度量值完成累计求和:
    • 十进制度量值:提供唯一数值,作为累计的数值判断依据
    • 四舍五入度量值:用于分组,每组仅保留最小十进制值参与累计
  • 累计规则:仅累加相同四舍五入值组内,最小十进制值对应的求和列数据

原代码分析

你当前的代码仅基于十进制值做了简单的范围筛选,没有处理四舍五入分组取最小的逻辑,所以需要调整:

VAR CurrentRowValue = [Measure Value]
VAR c = 
CALCULATE(
    SUM(Fact_Table[Sum Column]),
    FILTER(
        SUMMARIZE (
            Fact,
            "PT", [Final_Price_Index],
            "ROUNDEDPT", [Measure Value (Rounded Off)]
        ),
        [PT] <= CurrentRowValue
    )
)
RETURN c

修改后的实现代码

// 获取当前行的十进制值与四舍五入值
VAR CurrentDecimal = [Measure Value]
VAR CurrentRounded = [Measure Value (Rounded Off)]

// 按四舍五入值分组,提取每组的最小十进制值
VAR GroupedMinDecimals = 
    SUMMARIZE(
        Fact,
        [Measure Value (Rounded Off)],
        "MinDecimal", MIN([Measure Value])
    )

// 筛选符合累计条件的分组:
// 1. 四舍五入值小于当前行的分组,全部纳入
// 2. 四舍五入值等于当前行的分组,仅当组内最小十进制值≤当前行十进制值时纳入
VAR ValidCumulativeGroups = 
    FILTER(
        GroupedMinDecimals,
        [Measure Value (Rounded Off)] < CurrentRounded
        || (
            [Measure Value (Rounded Off)] = CurrentRounded
            && [MinDecimal] <= CurrentDecimal
        )
    )

// 关联筛选后的分组到原始表,计算累计求和
VAR CumulativeTotal = 
    CALCULATE(
        SUM(Fact_Table[Sum Column]),
        TREATAS(
            SELECTCOLUMNS(ValidCumulativeGroups, "RoundedVal", [Measure Value (Rounded Off)], "MinDecVal", [MinDecimal]),
            [Measure Value (Rounded Off)], [Measure Value]
        )
    )

RETURN CumulativeTotal

逻辑说明

  1. 分组取最小:通过SUMMARIZE按四舍五入值分组,直接提取每组的最小十进制值,确保每组只保留符合规则的单个值,避免重复计算。
  2. 精准筛选:分两类筛选需要累计的分组,严格匹配你要求的“仅累加相同四舍五入值中的最小十进制数值”规则。
  3. 高效关联求和:用TREATAS将筛选后的分组结果映射回原始表上下文,精准计算对应行的求和列总和,性能比直接筛选原始行更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 11:45:28