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

如何使用DAX实现收入的Expansion、Recurrent、New Customer及收入损失的Reduction、Churn分解?

如何使用DAX实现收入的Expansion、Recurrent、New Customer及收入损失的Reduction、Churn分解?

嘿,我来帮你搞定这个DAX的收入分解需求!先理清楚你的业务逻辑,咱们一步步写对应的度量值就行~

首先假设你的数据模型已经搭好:有标记为日期表的日期维度、客户维度表,还有包含Client(客户)、Date(日期)、Revenue(收入)的事实表。咱们先写一个基础度量来获取客户上月的收入,后面的分解都要用到它:

Previous Month Revenue = 
CALCULATE(
    SUM('Fact Table'[Revenue]),
    DATEADD('Date Table'[Date], -1, MONTH)
)

这个度量的作用是,在当前的日期上下文里,计算每个客户上一个月的收入总和,用DATEADD来把日期往前推一个月。

接下来逐个实现你需要的分解项:

收入增长类分解

New Customer(新客户收入)

新客户的逻辑是上月没收入、本月有收入,那本月的收入全部算新客户收入:

New Customer Revenue = 
VAR CurrentMonthRevenue = SUM('Fact Table'[Revenue])
VAR PrevMonthRevenue = [Previous Month Revenue]
RETURN
IF(
    ISBLANK(PrevMonthRevenue) && NOT(ISBLANK(CurrentMonthRevenue)),
    CurrentMonthRevenue,
    0
)

Recurrent(经常性收入)

只要客户上月和本月都有收入,取两者中较小的那个值作为经常性收入:

Recurrent Revenue = 
VAR CurrentMonthRevenue = SUM('Fact Table'[Revenue])
VAR PrevMonthRevenue = [Previous Month Revenue]
RETURN
IF(
    NOT(ISBLANK(CurrentMonthRevenue)) && NOT(ISBLANK(PrevMonthRevenue)),
    MIN(CurrentMonthRevenue, PrevMonthRevenue),
    0
)

Expansion(扩张收入)

当本月收入比上月高时,两者的差值就是扩张收入:

Expansion Revenue = 
VAR CurrentMonthRevenue = SUM('Fact Table'[Revenue])
VAR PrevMonthRevenue = [Previous Month Revenue]
RETURN
IF(
    NOT(ISBLANK(CurrentMonthRevenue)) && NOT(ISBLANK(PrevMonthRevenue)) && CurrentMonthRevenue > PrevMonthRevenue,
    CurrentMonthRevenue - PrevMonthRevenue,
    0
)

收入损失类分解

Reduction(收入减少)

如果本月收入比上月低,两者的差值就是减少的收入:

Reduction Revenue = 
VAR CurrentMonthRevenue = SUM('Fact Table'[Revenue])
VAR PrevMonthRevenue = [Previous Month Revenue]
RETURN
IF(
    NOT(ISBLANK(CurrentMonthRevenue)) && NOT(ISBLANK(PrevMonthRevenue)) && CurrentMonthRevenue < PrevMonthRevenue,
    PrevMonthRevenue - CurrentMonthRevenue,
    0
)

Churn(客户流失收入)

上月有收入但本月完全没有,那上月的收入就是流失的收入:

Churn Revenue = 
VAR CurrentMonthRevenue = SUM('Fact Table'[Revenue])
VAR PrevMonthRevenue = [Previous Month Revenue]
RETURN
IF(
    ISBLANK(CurrentMonthRevenue) && NOT(ISBLANK(PrevMonthRevenue)),
    PrevMonthRevenue,
    0
)

你可以把这些度量放到报表里,按客户和月份分组查看,就能清晰看到每个客户的收入构成和损失情况啦~

备注:内容来源于stack exchange,提问作者Marcelo Navarro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 09:03:12