背景在做同环比分析时,有时希望根据不同的日期范围,动态计算某些指标的同环比。 例如: 当日期筛选范围为2024年1月~2024年2月时,时间区间为2个月,这时如果希望计算: 【期间销售额环比】:2024年1月和2月的【销售额】求和/2023年11月和12月的【销售额】求和 【期间销售额年同比】:2024年1月和2月的【销售额】求和/2023年1月和2月的【销售额】求和 当日期筛选范围为2024年1月~2024年3月时,时间区间为3个月,这时则希望计算: 【期间销售额环比】:2024年1月-3月的【销售额】求和/2023年10月-12月的【销售额】求和 【期间销售额年同比】:2024年1月-3月的【销售额】求和/2023年1月-3月的【销售额】求和 这种场景下,用BI内置的“高级计算-同环比”无法实现,但可以用全局参数通过新建计算字段的方式来实现。 实操案例最终效果:https://demo.guandata.com/share/b85b58d2447bf4ab08bd87f1/page/n1e47e89d81454b2b98a0237
从这里可以看到,当筛选不同的月份区间时,左侧橙色标题卡片中的“上期销售额(月度)”和“上年同期销售额”的数值会与右侧的校验卡片中的数值一致(当校验卡片的日期筛选范围分别为“上期”和“上年同期”时),满足预期效果。 实现步骤:一、新建两个日期类型的全局参数新建全局参数需要管理员权限,没有管理员权限的分析师可以在系统中已建好的日期类型参数中挑选两个借用,这个案例中借用了体验中心中已有的【查询日期】和【结束日期】两个参数 全局参数的帮助文档:https://docs.guandata.com/product/bi/426345766664011776? 二、新建“本期”、“上期”、“上年同期”字段
这里我们要对【销售额】进行同环比分析,因此三个字段分别为: 本期销售额(月度):CASE WHEN ( [订单日期] >= [DYNAMIC_PARAMS.查询日期] and [订单日期] <= LAST_DAY([DYNAMIC_PARAMS.结束日期]) ) THEN [销售额] ELSE 0 END 说明:因为这里用到的底表为订单明细表,因此可以按照【订单日期】字段是否在两个参数日期之间来判断是否为“本期数据” 上期销售额(月度):CASE WHEN ( [订单日期] >= ADD_MONTHS([DYNAMIC_PARAMS.查询日期], (MONTH([DYNAMIC_PARAMS.查询日期]) - month([DYNAMIC_PARAMS.结束日期])-1)) and [订单日期] <= LAST_DAY(ADD_MONTHS([DYNAMIC_PARAMS.结束日期], (MONTH([DYNAMIC_PARAMS.查询日期]) - month([DYNAMIC_PARAMS.结束日期])-1))) ) THEN [销售额] ELSE 0 END 说明:与【本期销售额(月度)】逻辑类似,不过这里需要根据将统计区间向前平移,如果日期筛选范围为N个月,就要向前平移N个月(N=期末月份-期初月份+1) 上年同期销售额:CASE WHEN ( [订单日期] >= ADD_MONTHS([DYNAMIC_PARAMS.查询日期], -12) and [订单日期] <=LAST_DAY( ADD_MONTHS([DYNAMIC_PARAMS.结束日期], -12)) ) THEN [销售额] ELSE 0 END 三、新建“本期/上期”、“本期/上年同期”字段作为区间环比和年同比字段本期/上期:sum([本期销售额(月度)])/sum([上期销售额(月度)]) 本期/上年同期:sum([本期销售额(月度)])/sum([上年同期销售额]) 四、新建可视化图表,放入相关指标五、新建日期筛选器,并与参数联动新建筛选器:
筛选器与参数联动
六、配置结束后,即可实现预期的不同日期区间的同环比分析场景。 |