判断一家门店经营好坏,通常会选择参照物进行比较,可以是不同时间区间和自身的同环比,也可以在同一个时间区间不同部门间横向比较,或是和某个标准、标杆比较。本节重点介绍对比分析中的一个关键点,计算口径的问题。
选择参照物最重要的一点就是保持计算口径的一致。比如用公司今年累计至今的营业额和去年同期对比,计算同比增长率为20%,这个数字很好地反映了公司整体规模的增长幅度,但能否真实地反映公司的经营业绩水平,说服力稍显不足。虽然营业额同比增长了20%,但由于公司扩张市场规模,门店数比同期增加了30%,增长的营业额全部是靠新开店贡献的,老店整体营业额反而比同期下跌了。所以在分析公司经营业绩水平时,一定要选择本期和同期同时存在的门店进行比较,才能准确得出结论。
这就涉及到可比店和不可比店的概念。可比店是指本年至今和去年同期的每一天均处于营业状态的门店,即两年均有完整的营业天数。不可比店是指去年开业但去年没有完整的营业天数,或者是今年开业的门店。根据开业年份的不同,不可比店又分为满年店和不满年店。满年店是指去年年中某时间开业或是今年元旦开业的门店,在本年有完整的营业天数,而去年同期没有完整营业天数。不满年店是今年元旦后开业的门店,今年没有完整的营业天数。简单来说,今年是2020年,那可比店就是指2019-1-1及之前开业的门店,这样,在2019年和2020年均有完整的营业额可做对比。满年店是指2019-1-1之后及2020-1-2之前开业的门店,这样在2020年有完整经营业绩,但2019年只有部分业绩,无法进行同期对比。不满年店是指2020-1-1之后开业的门店,在本年没有完整经营业绩。
基于可比店进行分析
可比店、满年店、不满年店可以在门店维表中打标,记录目前最新状态。在 Model-Dimstore
门店维表中新建计算列标注,用 PowerBI DAX 实现如下:
可比类型 =
VAR CurYear = YEAR( [最后报表日期] )
RETURN
SWITCH( TRUE(),
[开业时间] <= DATE( CurYear-1, 1, 1 ), "可比店",
[开业时间] <= DATE( CurYear, 1, 1 ), "满年店",
"不满年店"
)
在进行同比分析的时候,就要选择可比店且目前处于营业状态的门店。用 PowerBI DAX 实现如下:
代码语言:javascript复制销售额 可比店 营业中 =
CALCULATE (
[Core.销售额],
'Model-Dimstore'[可比类型] = "可比店",
'Model-Dimstore'[店铺状态] = "营业中"
)
销售额 可比店 营业中 PY View =
CALCULATE (
[销售额 可比店 营业中],
SAMEPERIODLASTYEAR ( 'Model-Dimdates'[Date] ),
'Model-Dimdates'[IsComparable] = TRUE ()
)
销售额 可比店 营业中 YOY% =
DIVIDE ( [销售额 可比店 营业中] - [销售额 可比店 营业中 PY View], [销售额 可比店 营业中 PY View] )
得到:
不难看出,对可比店进行 YOY% 计算,与不做这样的优化得到的结果差异很大。
可以看出所有店营业额同比增长率为13.11%,而可比店同比增长率为-6.18%,两者差异很大,对决策的影响也是相反的。其中,'Model-Dimdates'[IsComparable] = TRUE()
,保证同期的期间是在最后报表日期的同期之前的时间段(后期会有专门文章介绍)。
基于店效进行分析
分析完同期数据,可能还要进一步对各部门各省份进行横向比较,由于每个部门规模不同,就要通过店均营业额来统一规模口径,这又引入了店效的概念:
店效,指一段时间内平均单店营业额。
同样,为了进一步统一时间口径,店效分析也建议选择具有完整营业周期的门店。如果是计算本期店效和同期店效,建议选择可比店,这些店在本期和同期均有完整的营业天数。如果只计算本期店效,建议选择可比店和满年店,既保证在分析周期内有完整的营业天数,而且尽可能把更多的门店纳入分析范围。
用 PowerBI DAX 实现如下:
代码语言:javascript复制店效 可比店 =
VAR Num =
CALCULATE (
COUNTROWS ( 'Model-Dimstore' ),
'Model-Dimstore'[可比类型] = "可比店",
'Model-Dimstore'[店铺状态] = "营业中"
)
RETURN
DIVIDE ( [销售额 可比店 营业中], Num )
店效 可比店 PY View =
CALCULATE (
[店效 可比店],
SAMEPERIODLASTYEAR ( 'Model-Dimdates'[Date] ),
'Model-Dimdates'[IsComparable] = TRUE ()
)
店效 可比店 YOY% =
DIVIDE ( [店效 可比店] - [店效 可比店 PY View], [店效 可比店 PY View] )
得到:
通过横向比较各省份店效,可以看出,湖北省可比店店效最高,广西省最低。但从同比角度来看,增长最高的是福建省5.78%,增长最低的是广东省,下跌21.22%。
基于店天进行分析
那对于新开店如何分析呢,可能每家店的营业天数都不相同,或者说想要对比今年所有门店和去年所有门店的业绩,口径统一的问题有点棘手,此处我们引入一个更通用的概念,店天:
店天,是指一段时间内所有门店的营业天数
单店单日营业额 = 累计营业额 ÷ 店天
店效(所有店) = 单店单日营业额 * 营业天数
用 PowerBI DAX 实现如下:
代码语言:javascript复制店天 =
VAR MaxDay =
MAX ( 'Model-Factsales'[时间] )
VAR FirstDay =
STARTOFYEAR ( 'Model-Dimdates'[Date] )
RETURN
CALCULATE (
SUMX (
'Model-Dimstore',
DATEDIFF ( MAX ( 'Model-Dimstore'[开业时间], FirstDay ), MaxDay, DAY ) 1
),
'Model-Dimstore'[撤店日期] = BLANK (),
'Model-Dimstore'[开业时间] <= MaxDay
)
CALCULATE (
SUMX (
'Model-Dimstore',
DATEDIFF (
MAX ( 'Model-Dimstore'[开业时间], FirstDay ),
MIN ( 'Model-Dimstore'[撤店日期], MaxDay ),
DAY
) 1
),
'Model-Dimstore'[撤店日期] > FirstDay,
'Model-Dimstore'[开业时间] <= MaxDay
)
店效 所有店 =
VAR MaxDay =
MAX ( 'Model-Factsales'[时间] )
VAR FirstDay =
STARTOFYEAR ( 'Model-Dimdates'[Date] )
VAR Days =
DATEDIFF ( FirstDay, MaxDay, DAY ) 1
RETURN
DIVIDE ( [Core.销售额], [店天] ) * Days
店效 所有店 PY View =
CALCULATE (
[店效 所有店],
SAMEPERIODLASTYEAR ( 'Model-Dimdates'[Date] ),
'Model-Dimdates'[IsComparable] = TRUE ()
)
店效 所有店 YOY% =
DIVIDE ( [店效 所有店] - [店效 所有店 PY View], [店效 所有店 PY View] )
得到:
这样,通过店天的概念,我们成功解决了由于每家店营业天数不统一无法横向比较的问题,均统一成单店单日营业额,再乘以相应的营业天数,就是所有店店效,既可以纵向和同期比较,也可以横向和各部门比较。这里面有一点需要说明,店天的计算中未剔除重装店铺,一方面剔除重装时间,度量值会比较复杂,另方面重装一般半个月左右结束,对整体店效值的计算影响较小。
总结
本文经零售分析专家郑老师授权发布,用 PowerBI DAX 给出了对可比店,店效以及新开店的店天计算。
大家可以直接使用这套逻辑来放入自己的模型。