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

Power BI新建列函数问题:同组状态批量判定异常

问题分析

原DAX公式的核心错误在于判断逻辑未针对当前行所属的proposalsid组,而是对整个表的所有组进行全局判断:只要存在任意一个组包含"Approved"记录,所有行都会返回"Approved",完全忽略了单个组的独立状态判断。

正确解决方案

以下两种DAX写法均可实现需求,逻辑清晰且高效:

写法一:基于计数判断

NewStatusColumn = 
VAR CurrentProposalID = 'Agents Portal'[proposalsid]
-- 判断当前组是否存在Approved记录
VAR HasApproved = 
    CALCULATE(
        COUNTROWS('Agents Portal'),
        ALL('Agents Portal'),
        'Agents Portal'[proposalsid] = CurrentProposalID,
        'Agents Portal'[uwprop_statusname] = "Approved"
    ) > 0
-- 判断当前组是否全为Rejected(即无非Rejected记录)
VAR AllRejected = 
    CALCULATE(
        COUNTROWS('Agents Portal'),
        ALL('Agents Portal'),
        'Agents Portal'[proposalsid] = CurrentProposalID,
        'Agents Portal'[uwprop_statusname] <> "Rejected"
    ) = 0
RETURN
    IF(HasApproved, "Approved", IF(AllRejected, "Rejected", BLANK()))

写法二:基于组内状态集合判断

NewStatusColumn = 
VAR CurrentGroupStatuses = 
    CALCULATETABLE(
        VALUES('Agents Portal'[uwprop_statusname]),
        ALLEXCEPT('Agents Portal', 'Agents Portal'[proposalsid])
    )
RETURN
    -- 组内存在Approved则返回Approved
    IF("Approved" IN CurrentGroupStatuses, "Approved",
       -- 组内只有Rejected一种状态则返回Rejected
       IF(COUNTROWS(CurrentGroupStatuses) = 1 && "Rejected" IN CurrentGroupStatuses, "Rejected",
          BLANK()))
关键逻辑说明
  1. 两种写法均先锁定当前行所属的proposalsid组,而非全局所有组
  2. 优先判断组内是否存在"Approved"(因为只要有一条Approved,整个组就标记为Approved)
  3. 若没有Approved,再判断组内是否全部为Rejected
  4. 其余情况返回BLANK()(可根据需求调整为其他默认值)

内容的提问来源于stack exchange,提问作者Nika Chaduneli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 04:05:07