目前很多客户的数据量很大,千万、亿级别,导致查询比较慢,为了解决这个问题,产品可通过配置聚合表来提高性能。
1、目前只支持多维引擎的的聚合表,SQL引擎还暂未支持。 |
1、需要在系统运维/公共设置/高级系统选项设置:CONFIG_CENTER_SHOW_ENABLE=true。
2、在多维引擎中配置olap配置项:mondrian.rolap.aggregates.Use=true、mondrian.rolap.aggregates.Read=false
以产品内置的“订单模型”为例,如下图所示:
基于这个模型创建报表,如下图,为了更好的说明,加了很多维度进行查询),假设它的性能很慢,需要2-3分钟才能打开,现在我们要对其进行性能优化:
具体操作步骤
1、在对应的数据源上建预聚合表,表结构如下, 需要注意看下面对字段注释说明:
CREATE TABLE agg_1_orderdetails( CategoryName VARCHAR(255), ProductName VARCHAR(255), OrderDate_Year VARCHAR(255), OrderDate_Month VARCHAR(255), ShipRegion VARCHAR(255), ShipProvince VARCHAR(255), ShipCity VARCHAR(255), Discount double, Quantity long, UnitPrice DECIMAL(10,4), viewName VARCHAR(255), // 事实表的真名 fact_count INT // 这个是必填的,olap要求一定要 ); |
3、配置预聚合表
界面路径:在系统监控>配置中心:
选项说明:
选项 | 选项值 |
---|---|
Data ID | datamodel |
Group | PreAggregations |
配置类型 | Json |
配置说明 | 非必填 |
配置内容 | 需要遵循这个格式定义, 需要注意看下面对字段注释说明:
|
配置好之后,重启一下BI。
4、重新查询报表,查询速度明显提高。
5、重新创建报表,勾选预聚合用到的字段 ShipRegion,ShipCity,Discount
在系统监控中,查看运行的Schema信息:
在多维引擎监控中查看MDX生产的sql语句如果查询的是上面定义的预聚合表,那么说明命中了预聚合,否则没有命中: