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

DAX新客、流失客计算在矩阵表失效,汇总行正常求助

解决DAX新增客户计数在表格/矩阵中失效的问题

问题根源

原公式存在两个核心问题:

  • ALL(Deposits[Source.Date].[Month], ...)仅清除了日期字段的部分层级筛选,表格/矩阵的日期上下文仍会限制currentCustomers和currentDate的范围,导致pastCustomers无法正确获取当前周期之前的所有历史客户。
  • MAX(Deposits[Source.Date])在行列上下文里,返回的是当前单元格切片后的最大日期,而非整个时间范围截止到当前周期的日期,不符合“新增客户为当期首次出现客户”的统计逻辑。

修正方案

方案1:基于原表日期列修正

替换原公式中的ALL参数,彻底清除日期列的所有筛选上下文:

NTB = 
VAR CurrentPeriodCustomers = VALUES(Deposits[CIF ID])
VAR CurrentEndDate = MAX(Deposits[Source.Date])
VAR HistoricalCustomers = 
    CALCULATETABLE(
        VALUES(Deposits[CIF ID]),
        ALL(Deposits[Source.Date]), -- 清除整个日期列的筛选
        Deposits[Source.Date] < CurrentEndDate
    )
VAR NewCustomers = EXCEPT(CurrentPeriodCustomers, HistoricalCustomers)
RETURN COUNTROWS(NewCustomers)

方案2:使用独立日期表(推荐)

若模型中有独立日期表,用日期表字段筛选逻辑更稳定:

NTB = 
VAR CurrentPeriodCustomers = VALUES(Deposits[CIF ID])
VAR CurrentEndDate = MAX('Date'[Date])
VAR HistoricalCustomers = 
    CALCULATETABLE(
        VALUES(Deposits[CIF ID]),
        ALL('Date'),
        'Date'[Date] < CurrentEndDate
    )
VAR NewCustomers = EXCEPT(CurrentPeriodCustomers, HistoricalCustomers)
RETURN COUNTROWS(NewCustomers)

方案3:年度维度专用统计

如果是按年度统计新增客户,可简化逻辑:

年度新增客户 = 
VAR CurrentYear = MAX(Deposits[Source.Date].[Year])
VAR CurrentYearCustomers = VALUES(Deposits[CIF ID])
VAR PriorYearsCustomers = 
    CALCULATETABLE(
        VALUES(Deposits[CIF ID]),
        ALL(Deposits[Source.Date]),
        Deposits[Source.Date].[Year] < CurrentYear
    )
RETURN COUNTROWS(EXCEPT(CurrentYearCustomers, PriorYearsCustomers))

调试技巧

  • 在表格中添加临时计算列,比如当前周期客户数 = COUNTROWS(VALUES(Deposits[CIF ID]))、历史客户数 = COUNTROWS(HistoricalCustomers),查看每个单元格的数值是否符合预期,定位问题环节。
  • 确认CIF ID是唯一标识客户的字段,无重复或空值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:21:31