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

Power BI中活跃用户计算问题:DAX度量值结果低于预期

每月活跃用户统计DAX问题修复

问题背景

  • 事实表Program包含program_start_date字段,通过user_key与维度表Users关联
  • 需求:统计每月活跃用户,规则为用户从注册日registered_at到最后登录日lastlogin_createdat期间的每个月均视为活跃(例:用户2023年1月注册、9月最后登录,则1-9月每个月都算作活跃)
  • 使用以下DAX度量值计算时,结果用户数低于预期:
Active Users = 
COUNTROWS(
    FILTER(
        'Users',
        'Users'[registered_at] <= MAX('Program milestone'[program_start_date])
            && 'Users'[lastlogin_createdat] >= MIN('Program milestone'[program_start_date])
            && 'Users'[lastlogin_createdat] <= MAX('Program milestone'[program_start_date])
    )
)

问题分析

原DAX逻辑存在核心错误:
当筛选单个月份时,MIN('Program milestone'[program_start_date])和MAX('Program milestone'[program_start_date])均指向当月日期,导致条件强制要求用户最后登录日必须落在当月内,这与“活跃区间内的每个月都统计”的需求完全不符,会遗漏大量注册在当月之前、最后登录在当月之后的活跃用户。

修复后的DAX度量值

假设已建立标准日期维度表Date(包含Date字段用于切片月份),使用以下度量值:

Active Users = 
VAR CurrentMonthStart = STARTOFMONTH(Date[Date])
VAR CurrentMonthEnd = ENDOFMONTH(Date[Date])
RETURN
COUNTROWS(
    FILTER(
        'Users',
        // 用户注册日不晚于当月月底,且最后登录日不早于当月月初
        'Users'[registered_at] <= CurrentMonthEnd
            && 'Users'[lastlogin_createdat] >= CurrentMonthStart
    )
)

逻辑说明

对于当前筛选的月份,只要用户的活跃区间(注册日至最后登录日)与该月份存在重叠,就将其统计为当月活跃用户,完全匹配需求中的规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 15:22:17