在项目开发过程中,经常会遇到HANA模型运行效率的问题;
以我们项目为例,HANA平台要求模型运行时间不能超过10秒,但是在大数量和计算逻辑复杂的情况下(例如:ERP中的BKPF和BSEG量表的年数据总量超过20亿条),HANA模型的运行时间基本上都在1分钟以上。在不关联其它表,单单是几个板块的BKPF和BSEG表UNION ALL,运行时间都超过1分钟。鉴于这种情况,项目组对HANA模型是否存在优化空间,进行了分析和探讨,也请教了HANA平台的专家对HANA的优化给出可行性建议。
最终的分析结果,最简单、最高效的优化方法就是减少数据量,当然这个方法基本上不用说,没什么技术含量,仅仅是数量级的减少。对我们程序员来说,当然不能满足这么简单粗暴的方法。
经过讨论,制定几条优化的方向:
1.将复杂的可视化模型通过SQL SCIRPT替换;
2.现有的模型都是通过计算视图实现的。查看了相关资料后,发现HANA的属性视图、分析视图、计算视图对应不同的处理机制。属性视图擅长大数据量的关联。分析视图适合逻辑运算。计算视图是在效果上可以理解为集合属性和分析视图的两种功能。于是采用将数据量比较大的关联和汇总通过属性视图实现。
3.拆分大的模型为几个小的模型组合。
4.图形化和SQL SCRIPT结合使用;
5.模型落地;
确定了方向后,项目组开始针对以上几点进行验证;
首先,将复杂的可视化模型全部用SQL实现,实验的结果并不理想。于是上网查相关资料,发现可视化模型和SQL模型的处理机制不一样,HANA对可视化模型的运算速度要高于SQL的运行效率。而我们将S