FineBI环比分析(三种情况)
使用BI版本6.0.5
一、应用场景(按日期筛选)
环比分析根据3种不同情况分开计算
1、从月初第1天开始,筛选时间段小于当月天数(适合月内时间过程环比)
对比对象:本月同一步长对比一个月前同一步长的数据。示例:
筛选日期:5月1日至5月10日。
对比数据:5月1日至5月10日对比4月1日至4月10日的数据。
2、整月筛选,筛选月份数大于等于1个月(适合季度和整月环比)
对比对象:根据筛选的月份数,对比开始月份前几个月份数据。示例:
筛选日期:4月1日至6月30日。
对比数据:4月1日至6月30日对比1月1日至3月31日的数据。
3、不从月初第1天筛选,筛选任意时间段(适合同步长相邻时间段环比)
对比对象:根据筛选的天数,对比筛选开始日期前同样步长的数据。示例:
筛选日期:5月20日至5月30日。
对比数据:5月20日至5月30日对比5月9日至5月19日的数据。
二、实际操作(按日期筛选)
1、新增时间参数并命名为开始时间和结束时间,并在日期区间组件中绑定开始时间和节数时间参数,用来计算筛选时间段。
2、计算筛选日期差和筛选月份差
筛选日期差:DATEDIF(开始时间,结束时间,"D")+1
筛选月份差:DATEDIF(开始时间,结束时间,"M")+1
得到日期差和月份差
3、计算环期金额-日和环期金额-月
环期金额-日:DEF(SUM_AGG(净销售额1),,)
注意DEF第二个参数这里根据表格中的维度进行分组,因为是固定维度,如果有多个维度分组,查询时不能将部分维度删除,否则计算结果不正确。
DEF第三个参数发货时间可以替换为原始表格中日期格式的字段,
DATEDELTA(开始时间,-筛选日期差)这里使用DATEDELTA用来得到筛选时间后几天日期,推算的时间长度通过筛选日期差来计算,因为是开始时间前的日期,所以筛选日期差前有负号-。DATEDELTA(结束时间,-筛选日期差)同理得到筛选结束时间前几天日期。
这里DEF的类似Excel中SUMIFS(销售额,业务员,业务员条件,日期>=开始日期,日期<=结束日期)
环期金额-日
环期金额月:DEF(SUM_AGG(净销售额1),,)
环期金额-月使用是为了确保当用户在筛选多个月时,得到的是月份数相同的相邻时间段销售额,比如4月1日至6月30日对比1月1日至3月31日的数据,这里使用MONTHDELTA第二参数为负值返回前几个月日期,筛选时间段使用筛选月份差,需要注意的是结束时间条件的设置。
DATE(YEAR(MONTHDELTA(结束时间,-筛选月份差)),MONTH(MONTHDELTA(结束时间,-筛选月份差))+1,1)-1
为了得到结束时间所在月份的最后一天,DATE(YEAR(MONTHDELTA(结束时间,-筛选月份差)),MONTH(MONTHDELTA(结束时间,-筛选月份差))+1,1),得到结束时间后几个月的日期,这里多加一个月,选择1日,这时候减去1天得到的就是前一个月的最后一天。
环期金额-月
4、环期金额整理
IF(AND(DAY(结束时间)=DAYSOFMONTH(结束时间),DAY(开始时间)=1),环期金额-月,环期金额-日)
当筛选的开始日期是1日,结束日期是当月最后一天,此时使用环期金额-月,否则使用环期金额-日。
环期金额
通过过滤条件得到净销售额-上月环期,这是为第一种月内环比做准备。
设置1月前同一步长
5、计算环比
IF(AND(DAY(开始时间)=1,筛选日期差<DAYSOFMONTH(结束时间)),(SUM_AGG(净销售额)-SUM_AGG(净销售额-上月环期))/SUM_AGG(净销售额-上月环期),IF(OR(SUM_AGG(环期金额)=null,SUM_AGG(环期金额)=0),"",(SUM_AGG(净销售额)-SUM_AGG(环期金额))/SUM_AGG(环期金额)))
第一层条件判断当筛选的开始日期是1日,筛选日期差不足1个月时,对比一个月前同一步长计算环比,第二层条件判断当环期金额为空则显示空值,否则对比环期金额计算环比。
因为净销售额-上月环期是通过过滤条件得到,因而不能在环期金额计算时套用条件判断,只能在计算环比指标时参与计算。
计算环比
6、呈现效果
注意我这里使用的是按业务员字段分组,如果有多维度汇总,对应计算环期金额-月和环期金额-日的DEF函数第二参数要对应分组才行。
月内环比(第1种情况)
多月环比(第2种和第3种情况)
以上五个步骤的设置可以完成环比指标计算的所有情况。
三、补充按年月筛选环比
如果过滤组件使用的是年月区间就简单许多,只需要考虑第2种和第3种情况即可。
环期数据(同一步长上一区间)
1月前全月
接待量环期计算,因为在FineBI6.0.5版本中存在使用同一步长上一区间时,如果筛选开始月份和结束月份都是同一个月,此时接待量环期会出现数值为空值的情况,所以我这里多加接待量上月补充当接待量环期出现空值的情况。
IF(SUM_AGG(接待量环期)=NULL,SUM_AGG(接待量上月),SUM_AGG(接待量环期))
最后计算环比
IF(OR(接待量环期对比=NULL,接待量环期对比=0),0,(SUM_AGG(接待量)-接待量环期对比)/接待量环期对比)
环比