最近接到一个需求,有一张很早的个性化报表,该项目点早期的功能是一个母产品对应一个子产品,该报表以母产品的维度进行统计。
报表展示的字段分为两部分,一部分是条款相关信息(母产品和子产品定义界面上设置的信息),一部分是费用、收益等金额(母子产品上都可能产生)。
现该项目点功能调整,一个母产品可以对应多个子产品,所以报表也要做相应的调整。
调整1:
修改原始报表,还是以母产品的维度进行统计,从子产品上取的条款字段,需要特殊处理(有些字段取任意一个,有些字段取ID最小的一个子产品的,有些字段根据所有产品的属性做特殊判断),费用、收益等金额字段,部分需要所有母子产品的金额累计,部分要根据子产品的某些属性判断是否统计。
调整2:
新增一张报表,以子产品的维度进行统计。
难点:
1、 该报表的SQL比较复杂,500行以上的一句SQL(WITH AS),且中间使用了自定义视图,视图的逻辑也比较复杂,难以看懂;
2、 该报表没有原始的需求文档,测试和产品手上的文档均不全,且不是最新的;
3、 业务比较难理解,SQL中的一些表和取值逻辑对应什么业务,无法得知;
4、 SQL中使用的视图,是以母产品的维度进行统计,无法区分子产品,而部分金额字段,需要根据子产品上的属性来判断是否统计;
5、 该报表还有一些明显的BUG需要修改(数据重复等)。
总而言之,SQL看不懂,报表需求不了解,有些字段难以拆解,测试说当时测这个报表花了很多精力,改过很多版。现需要在两三天时间内完成,很凌乱。
一开始想从需求出发,修改报表,发现不现实。一来,业务角度上来讲就已十分复杂难懂,更别说表的取数逻辑;二来,测试和需求人员,对某些字段的理解,跟SQL的实际取值逻辑也有出入,有的是测试忘了某些字段的取数逻辑已经做过修改,有的是需求人员觉得现有SQL逻辑不对,需要做新的修改。
所以只能先从SQL角度,保证每一段取值的统计维度是母产品or子产品,进行修改。遇到个别字段有疑问,再跟需求人员确认。
1、 先把原始报表的问题修复:数据重复的问题,需求人员指定要改的字段;
2、 每一段WITH块,都一分为二,一块是原逻辑,以母产品为维度进行分组处理,一块是以子产品的维度进行分组处理;
3、 增加一个视图,区分母子产品;
4、 遇到拆分不了的字段,再详细了解需求和表逻辑,沟通清楚后再修改;
5、 母产品的报表,用母产品为维度的各WITH块进行关联,子产品的报表则用子产品维度的;
6、 整合需求文档。