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

Power BI中如何编写DAX计算仅执行过事件B的用户数量

统计仅触发事件'B'的用户数DAX方案

假设存储用户行为记录的表名为UserEvents,包含User(用户ID)、Event(事件名称)两个字段,可通过以下DAX实现需求,示例数据下计算结果为1,匹配预期。

度量值写法(最常用,适配Power BI报表可视化)

仅执行B事件用户数 = 
COUNTROWS(
    FILTER(
        -- 先取所有去重用户列表
        VALUES(UserEvents[User]),
        -- 筛选条件1:用户存在事件B的记录
        CALCULATE(COUNTROWS(UserEvents), UserEvents[Event] = "B") > 0
        -- 筛选条件2:用户不存在任何非B事件的记录
        && CALCULATE(COUNTROWS(UserEvents), UserEvents[Event] <> "B") = 0
    )
)

逻辑说明

遍历所有去重后的用户,逐个校验行为,仅同时满足以下两个条件的用户会被计数:

  • 必须有至少1条事件为'B'的行为记录
  • 不能有任何事件不是'B'的行为记录

统计符合要求的用户总行数,即为所求结果。

可选简洁写法

如果偏好更短的代码,也可通过事件拼接的逻辑实现:

仅执行B事件用户数 = 
SUMX(
    VALUES(UserEvents[User]),
    -- 将单个用户的所有去重事件拼接为字符串,仅当结果为"B"时计数1
    IF(CONCATENATEX(DISTINCT(UserEvents[Event]), UserEvents[Event], "") = "B", 1, 0)
)

DAX查询写法(适配DAX Studio直接输出结果)

如果需要直接写查询返回标量结果,可使用如下语句:

EVALUATE
ROW(
    "仅执行B事件用户数",
    COUNTROWS(
        FILTER(
            VALUES(UserEvents[User]),
            CALCULATE(COUNTROWS(UserEvents), UserEvents[Event] = "B") > 0
            && CALCULATE(COUNTROWS(UserEvents), UserEvents[Event] <> "B") = 0
        )
    )
)

结果校验

对照示例数据逐用户校验:

  • 用户1:存在A/B/C/D四类事件,不符合
  • 用户2:存在A/B两类事件,不符合
  • 用户3:仅存在B类事件,符合
    最终统计结果为1,和预期一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 21:09:58