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

求仅在前3个月/最近3个月产生收入的客户营收总和(DAX)

计算两类客户的营收总和

基于你提供的现有DAX度量,我们可以通过提取日期范围、筛选客户维度来实现需求。以下是分步解决方案:

1. 提取周期起止日期(复用逻辑,避免重复代码)

先创建四个度量,分别定义两个周期的起止日期,方便后续复用:

-- Preceding 3 Month 周期起始日期
Preceding Period Start = 
VAR var1 = LASTDATE('Sales'[ShortDate])
VAR var2 = EDATE(var1, -2)
VAR var3 = CALCULATE(MIN(Dates[FinancialPeriodNo]), Dates[ShortDate] = var2)
VAR var4 = CALCULATE(MIN(Dates[CANUSAFinancialYearNo]), Dates[ShortDate] = var2)
VAR var5 = EDATE(CALCULATE(MIN(Dates[ShortDate]), Dates[FinancialPeriodNo] = var3 && Dates[FinancialYearNo] = var4), -1)
VAR var6 = EDATE(var5, -2)
RETURN var6
-- Preceding 3 Month 周期结束日期
Preceding Period End = 
VAR var1 = LASTDATE('Sales'[ShortDate])
VAR var2 = EDATE(var1, -2)
VAR var3 = CALCULATE(MIN(Dates[FinancialPeriodNo]), Dates[ShortDate] = var2)
VAR var4 = CALCULATE(MIN(Dates[CANUSAFinancialYearNo]), Dates[ShortDate] = var2)
VAR var5 = EDATE(CALCULATE(MIN(Dates[ShortDate]), Dates[FinancialPeriodNo] = var3 && Dates[FinancialYearNo] = var4), -1)
VAR var7 = CALCULATE(MIN(Dates[FinancialPeriodNo]), Dates[ShortDate] = var5)
VAR var8 = CALCULATE(MAX(Dates[ShortDate]), Dates[FinancialPeriodNo] = var7 && Dates[FinancialYearNo] = var4)
RETURN var8
-- Last 3 Month 周期起始日期
Last Period Start = 
VAR var1 = LASTDATE('Sales'[ShortDate])
VAR var2 = EDATE(var1, -2)
VAR var3 = CALCULATE(MIN(Dates[FinancialPeriodNo]), Dates[ShortDate] = var2)
VAR var4 = CALCULATE(MIN(Dates[CANUSAFinancialYearNo]), Dates[ShortDate] = var2)
VAR var5 = CALCULATE(MIN(Dates[ShortDate]), Dates[FinancialPeriodNo] = var3 && Dates[FinancialYearNo] = var4)
RETURN var5
-- Last 3 Month 周期结束日期
Last Period End = LASTDATE('Sales'[ShortDate])

2. 简化原有营收度量(可选,优化代码结构)

基于上面的日期度量,你可以简化原有的两个营收度量,让逻辑更清晰:

Preceding 3 Month Revenue = 
CALCULATE(
    SUM(Sales[RevenueGBP]),
    FILTER(ALL('Sales'),
        Sales[ShortDate] <= [Preceding Period End] && Sales[ShortDate] >= [Preceding Period Start]
    )
)
Last 3 Month Revenue = 
CALCULATE(
    SUM(Sales[RevenueGBP]),
    FILTER(ALL('Sales'),
        Sales[ShortDate] <= [Last Period End] && Sales[ShortDate] >= [Last Period Start]
    )
)

3. 计算目标客户营收总和

仅Preceding 3 Month有营收的客户总营收

Only Preceding 3 Month Revenue = 
CALCULATE(
    SUM(Sales[RevenueGBP]),
    -- 筛选出仅Preceding周期有营收的客户
    FILTER(
        VALUES(Customers[CustomerID]), -- 替换为你的客户唯一标识列(如客户编号)
        [Preceding 3 Month Revenue] > 0 && [Last 3 Month Revenue] = 0
    ),
    -- 限定Preceding周期的日期范围
    Sales[ShortDate] <= [Preceding Period End] && Sales[ShortDate] >= [Preceding Period Start]
)

仅Last 3 Month有营收的客户总营收

Only Last 3 Month Revenue = 
CALCULATE(
    SUM(Sales[RevenueGBP]),
    -- 筛选出仅Last周期有营收的客户
    FILTER(
        VALUES(Customers[CustomerID]), -- 替换为你的客户唯一标识列
        [Preceding 3 Month Revenue] = 0 && [Last 3 Month Revenue] > 0
    ),
    -- 限定Last周期的日期范围
    Sales[ShortDate] <= [Last Period End] && Sales[ShortDate] >= [Last Period Start]
)

关键说明

  • 务必将Customers[CustomerID]替换为你数据模型中实际的客户唯一标识字段(比如Customer[CustomerKey]或Customer[CustomerName])。
  • 如果不需要保留原有度量的复杂嵌套逻辑,使用提取后的日期度量可以大幅提升代码的可维护性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 03:21:07