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

DAX按组统计符合筛选条件的行:Power BI正确计算UserLog表增减用户数

DAX逻辑调整方案

问题原因

原写法的核心问题是LastUpdate度量值没有限定到单个用户维度,计算的是当前筛选上下文下所有用户的最大非UPDATED操作时间,而非每个用户自己的最新非UPDATED操作时间,因此过滤条件无法精准排除用户非最新的ADDED记录。

正确DAX实现

新增用户数度量值

AddedCount = 
COUNTROWS(
    FILTER(
        -- 提取当前筛选上下文下所有不重复的用户ID
        VALUES(UserLog[userId]),
        VAR CurrentUserId = UserLog[userId]
        -- 计算当前用户的最新非UPDATED操作时间
        VAR UserLastNonUpdateDate = CALCULATE(MAX(UserLog[LogDate]), UserLog[userId] = CurrentUserId, UserLog[Action] <> "UPDATED")
        -- 匹配该用户在最新操作时间的操作类型
        VAR UserLastAction = CALCULATE(SELECTEDVALUE(UserLog[Action]), UserLog[userId] = CurrentUserId, UserLog[LogDate] = UserLastNonUpdateDate)
        -- 仅最后操作是ADDED的用户计入统计
        RETURN UserLastAction = "ADDED"
    )
)

删除用户数度量值

仅需修改最后判断条件即可:

DeletedCount = 
COUNTROWS(
    FILTER(
        VALUES(UserLog[userId]),
        VAR CurrentUserId = UserLog[userId]
        VAR UserLastNonUpdateDate = CALCULATE(MAX(UserLog[LogDate]), UserLog[userId] = CurrentUserId, UserLog[Action] <> "UPDATED")
        VAR UserLastAction = CALCULATE(SELECTEDVALUE(UserLog[Action]), UserLog[userId] = CurrentUserId, UserLog[LogDate] = UserLastNonUpdateDate)
        RETURN UserLastAction = "DELETED"
    )
)

注意事项

  • 如果存在同一用户同一时间产生多条非UPDATED操作记录的场景,建议新增主键排序逻辑,比如用LASTNONBLANKVALUE(UserLog[LogId], UserLog[Action])替代SELECTEDVALUE,避免出现空值。
  • 外部时间筛选器会自动生效,无需额外在度量值中限定时间范围,继承的上下文会自动限定统计范围为你选择的时间段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:36:05