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

DAX需求:带月份切片器的累计完成率计算问题

累计用户完成率DAX公式修正方案

问题说明

需计算所有用户在各月份的累计完成率,但现有DAX公式存在逻辑错误:筛选十月时,公式会将截至十月完成的用户数除以排除十一月完成用户后的总用户数,而非全部用户总数。已建立dim_date表与业务数据表的关联(关联字段:dim_date[Date] ↔ 业务数据表[Completion Date]),dim_date表包含月份编号(1、2、3……)。

业务数据示例

IDCompletion_statusCompletion Date
10
20
30
40
50
6111/1/2022
7111/1/2022
8111/1/2022
9111/2/2022
10111/1/2022
11111/6/2022
12111/4/2022
13111/2/2022
14110/13/2022
15110/14/2022
16110/14/2022
17110/13/2022
18110/15/2022
19110/13/2022
20110/13/2022
21110/13/2022
22110/13/2022
23110/18/2022
24110/13/2022
25110/13/2022
26110/13/2022
27110/13/2022
2819/10/2022
2919/8/2022

当前错误DAX公式

Completion% = 
VAR comp rate = SUM(Table[completion_status]) / count(Table[ID])
Return

CALCULATE(Table[Completion%],filter(ALL(Dim_Date),Dim_Date[Month Number] <= MAX(Dim_Date[Month Number])))

期望结果

  • 筛选九月时:2/29 ≈7%
  • 筛选十月时:16/29≈55%
  • 筛选十一月时:24/29≈83%

修正后的DAX公式

累计完成率 = 
VAR 总用户数 = CALCULATE(COUNT('业务数据表'[ID]), ALL('业务数据表'))
VAR 当前累计完成数 = CALCULATE(
    SUM('业务数据表'[Completion_status]),
    FILTER(
        ALL('dim_date'),
        'dim_date'[Month Number] <= MAX('dim_date'[Month Number])
    )
)
RETURN
DIVIDE(当前累计完成数, 总用户数, 0)

公式说明

  1. 总用户数:通过ALL('业务数据表')清除所有筛选条件,确保获取全部用户的总数(示例中为29),避免日期筛选影响分母数值。
  2. 当前累计完成数:利用FILTER(ALL('dim_date'), ...)筛选出截至当前选中月份及之前的所有完成记录,累计求和得到完成用户数。
  3. DIVIDE函数:安全处理除法运算,当分母为0时返回0,避免出现计算错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:25:41