你是不是经常碰到这种情况:进入报告筛选器都会加载很长时间,每次都很焦虑?本文将会介绍几种常用的筛选器优化方法。

筛选器优化 - 图1

我们首先要理解每次筛选器加载都是一次查询,从数据的角度筛选器跟图表没有区别,但是筛选器的设计不同,我们可以支持一些定向优化。接下来从数据查询,计算优化,产品使用三个方式进行讲解。

1、筛选器一般作用在维度上,数据一般是有限的,例如订单表里的城市字段,如果设置列表筛选器直接进行筛选,要对订单表中每行信息进行扫描,再进行去重获取到最后列表,这个过程是非常缓慢并且十分消耗性能,所以可以将所需维度值单独抽取出来,创建一个新的模型,在报告上通过跨模型筛选实现数据过滤。

2、很多时候日期字段是以字符串或者数值类型存储在数据库中,我们在BI上需要将该字段转换为日期进行数据筛选,产品的默认策略是每次查询时都会应用日期转换函数,这个函数会造成性能损耗,这时候我们可以主动设置为使用原数据类型进行查询

筛选器优化 - 图2

3、如果你使用的是树形筛选器,鉴于维度值组合太多,产品上支持设置数据预加载,设置预加载之后产品将会提前加载部分数据,这样每次点击筛选器时不需要强制查询,性能会好很多。

筛选器优化 - 图3

4、当然如果数据量确实较大,同时提前计算以及预加载都无法达到用户需求(比方说用户画像分析场景下的用户账号筛选),此时会推荐使用文本筛选器,尽量避免使用列表筛选器。文本筛选器完全通过输入实现数据查询,可以将外部文本上的数据直接粘贴过来实现数据筛选。

5、如果筛选维度可以枚举,此时也可以通过直接设置筛选器的默认值实现数据筛选,此时点击筛选器时产品将不会直接查询,而是直接使用给定的数据进行筛选。

筛选器优化 - 图4

6、最后非常推荐每个筛选器都要设置默认值,设置默认值可以避免进入报告时数据全量查询,节约时间,提高效率