2.19 PowerBI数据建模-新客户及销量

加入 PowerBI自己学 知识星球:下载源文件,边学边练;遇到问题,提问交流,有问必答。

新客户意味着新业务的产生和业务的增长,因此销售会追踪新客户数量与销量,甚至会追踪新客户的其他相关指标。

解决方案

本质上讲,新客户分析属于时间相关分析。新客户是指当期有购进,当期以前没有购进,只要通过日期的平移,把当期和当期以前两个日期区间表达出来即可。时间智能函数DATESBETWEEN可以解决这个问题,它可以返回一个包含一列日期的表,从指定开始日期到指定结束日期的日期区间,然后将此区间用作 CALCULATE 函数的筛选条件。

在客户表中为新客户打标记,就可以通过分析新客户的相关指标了。

举例

有一张销售表,求2022年的新客户数量、新客户首次购进日期、新客户销量,并展示2022年新老客户对比2021年的销量增长贡献。

模型

销量表

度量值

销量:

Sales = SUM('Fact_Sales'[SalesVolume])

购进客户数:

#Customer_Active =

CALCULATE(DISTINCTCOUNT(Fact_Sales[Customer]), FILTER('Fact_Sales', [SalesVolume]>0))

新客户数量:

#New_Customer =

VAR _vm_CurrentEndDate = MAX('Dim_Date'[Date]) // 当期结束日期

VAR _vm_PreviousEndDate = MIN(Dim_Date[Date])-1  // 上期结束日期

VAR _vm_Customer_ToCurrent =   // 截止当前所选日期区间末的购进客户数

    CALCULATE([#Customer_Active],

        DATESBETWEEN(Dim_Date[Date],

            BLANK(),      // 空表示日期区间从日期表的第一天开始

            _vm_CurrentEndDate) // 以当期结束日期作为日期区间的结束

    )

VAR _vm_Customer_ToPrevious =  // 截止当前所选日期区间前一天的购进客户数

    CALCULATE([#Customer_Active],

        DATESBETWEEN(Dim_Date[Date],

            BLANK(),

            _vm_PreviousEndDate)

    )

VAR _vm_New_Customer =   // 以上前者减去后者得到所选日期区间内的新客户数

    _vm_Customer_ToCurrent-_vm_Customer_ToPrevious

RETURN

IF(_vm_New_Customer=0, BLANK(), _vm_New_Customer) // 无新客户返回空

新客户首次购进日期:

Listed_Date =

CALCULATE(MIN(Fact_Sales[Date]), FILTER(VALUES(Dim_Customer[Customer]), [#New_Customer]=1))

新客户销量:

Sales_New_Customer = CALCULATE([Sales], FILTER(VALUES(Dim_Customer[Customer]), [#New_Customer]=1))

老客户数量:

#Old_Customer =

VAR _vm_PreviousEndDate = MIN(Dim_Date[Date])-1

VAR _vm_Customer_ToPrevious = 

    CALCULATE([#Customer_Active],

        DATESBETWEEN(Dim_Date[Date],

            BLANK(),

            _vm_PreviousEndDate)

    )

RETURN _vm_Customer_ToPrevious

老客户销量:

Sales_Old_Customer  =

CALCULATE([Sales], FILTER(VALUES(Dim_Customer[Customer]), [#Old_Customer]=1))

2022年的新客户数量、新客户首次购进日期、新客户销量,在矩阵中,如下。因为2021年之前无数据,因此2021年的客户均为新客户。

在柱状图中,新客户数量、老客户数量、新客户销量、老客户销量,如下:

如果需要区分新老客户的销量增长贡献,需要在客户表中新建列,标记新老客户,然后用于坐标轴。

新老客户计算列:

Customer_Type_2022 =

VAR _vm_CurrentYear = 2022 // 如果需要动态取当前年可以用YEAR(TODAY())

RETURN

IF(

    CALCULATE([#New_Customer],

        Dim_Date[Year]=_vm_CurrentYear

    )=1,   // 按照指定时间段返回客户对应的新客户数量

    "New",

    "Old"

)

2022年新老客户对比2021年销量增长贡献,如下:

拓展

在VAR过程表中生成总客户表、老客户表,然后使用EXCEPT函数(可以理解表之间做减法)生成新客户表,最后使用新客户表去给客户数、销量等计算做筛选条件也是书写新客户相关度量值的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值