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
逻辑说明
- 分组取最小:通过
SUMMARIZE按四舍五入值分组,直接提取每组的最小十进制值,确保每组只保留符合规则的单个值,避免重复计算。 - 精准筛选:分两类筛选需要累计的分组,严格匹配你要求的“仅累加相同四舍五入值中的最小十进制数值”规则。
- 高效关联求和:用
TREATAS将筛选后的分组结果映射回原始表上下文,精准计算对应行的求和列总和,性能比直接筛选原始行更优。
内容的提问来源于stack exchange,提问作者Rahul Roy
相关产品推荐
相关产品推荐

