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

PowerBI DAX实现:按位置与领域求和仅计算重复阶段首行得分

DAX实现按Location+Domain求和,重复Phase仅计首行Domain score

原始数据

LocationDomainPhaseAnswerDomain score
loc1A111
loc1A210.5
loc1A200.5
loc1A300
loc1A400
loc2A111
loc2A211
loc2A211
loc2A300
loc2A400

预期输出

LocationDomainPhaseAnswerDomain scoreEnd score
loc1A1111.5
loc1A210.51.5
loc1A200.51.5
loc1A3001.5
loc1A4001.5
loc2A1112
loc2A2112
loc2A2112
loc2A3002
loc2A4002

DAX实现方案

可以通过以下两种方式实现需求:

方式1:分步计算(易理解)

步骤1:标记每个Phase分组的首行

创建计算列IsFirstRowInPhase,识别每个Location+Domain+Phase分组中的第一行:

IsFirstRowInPhase = 
VAR CurrentGroup = [Location] & "|" & [Domain] & "|" & [Phase]
VAR RowNumber = 
    RANKX(
        FILTER('YourTableName', [Location] & "|" & [Domain] & "|" & [Phase] = CurrentGroup),
        [Answer], -- 若Answer不唯一,替换为表中唯一标识行的列即可
        ,
        ASC,
        DENSE
    )
RETURN IF(RowNumber = 1, 1, 0)

步骤2:计算最终End score

创建计算列End score,按Location+Domain分组,仅对每个Phase首行的Domain score求和:

End score = 
CALCULATE(
    SUMX(
        FILTER('YourTableName', [IsFirstRowInPhase] = 1),
        [Domain score]
    ),
    ALLEXCEPT('YourTableName', 'YourTableName'[Location], 'YourTableName'[Domain])
)

方式2:单公式合并写法

无需额外标记列,直接用一个计算列完成逻辑:

End score = 
VAR CurrentLocation = [Location]
VAR CurrentDomain = [Domain]
RETURN
CALCULATE(
    SUM('YourTableName'[Domain score]),
    FILTER(
        ALL('YourTableName'),
        'YourTableName'[Location] = CurrentLocation &&
        'YourTableName'[Domain] = CurrentDomain &&
        RANKX(
            FILTER(
                'YourTableName',
                'YourTableName'[Location] = 'YourTableName'[Location] &&
                'YourTableName'[Domain] = 'YourTableName'[Domain] &&
                'YourTableName'[Phase] = 'YourTableName'[Phase]
            ),
            'YourTableName'[Answer],
            ,
            ASC,
            DENSE
        ) = 1
    )
)

关键逻辑说明

  • 使用RANKX为每个Location+Domain+Phase分组的行生成序号,确保仅首行被纳入求和范围。
  • 通过ALLEXCEPT或上下文筛选,限定求和范围为当前行对应的Location+Domain分组。
  • 若表中无唯一标识行的列(如示例中的Answer),可添加索引列作为RANKX的排序依据。

内容的提问来源于stack exchange,提问作者Mark Wekking

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:58:11