...
2、在多维引擎中配置olap配置项:mondrian.rolap.aggregates.Use=true、mondrian.rolap.aggregates.Read=false。
Image Removed
Image Added
2 示例说明
以产品内置的“订单模型”为例,如下图所示:
Image Removed
Image Added
基于这个模型创建报表,如下图,为了更好的说明,加了很多维度进行查询),假设它的性能很慢,需要2-3分钟才能打开,现在我们要对其进行性能优化:
Image Removed
Image Added
具体操作步骤
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、配置预聚合表
界面路径:在系统监控>配置中心:
Image Removed
Image Added
选项说明:
选项 | 选项值 |
---|
Data ID | datamodel,可以随便写 |
Group | PreAggregations,聚合表名称,集合当前示例定义为“agg_1_orderdetails” |
配置类型 | Json, 一定是json |
配置说明 | 非必填 |
配置内容 | 需要遵循这个格式定义, 需要注意看下面对字段注释说明: [
{
"id": "1", // 随意,没用的
"dataSourceId": "DS.nnorthwind",
"schema": "",
"name": "agg_1_orderdetails", //名称要唯一
"modelId": "be0d8c420bc41401276ee5f3fb4788dc",--模型ID
"viewName": "orderdetails", --事实表名字
"define": {
"dimensions": [{
"dimension": "CategoryName", //维度名称
"column": "CategoryName" //对应聚合表的列名
}, {
"dimension": "ProductName",
"column": "ProductName"
}, {
"dimension": "ShipRegion",
"column": "ShipRegion"
}, {
"dimension": "ShipCity",
"column": "ShipCity"
}, {
"dimension": "viewId",
"column": "viewId"
}],
"measures": [ {
"measure": "$fact_count$", // 内置,这个写死的
"column": "fact_count",
"aggregator": "COUNT" //唯一计数、平均值不支持
}, {
"measure": "Quantity_m", //度量名称
"column": "Quantity", //对应预聚合对应的列
"aggregator": "Count" //聚合方式
}, {
"measure": "UnitPrice_m",
"column": "UnitPrice",
"aggregator": "SUM"
}, {
"measure": "Discount_m",
"column": "Discount",
"aggregator": "SUM"
}]
}
}
]
|
配置好之后,重启一下BI。
4、重新查询报表,可以看到它的速度变快了,因为直接命中了聚合表的数据。
5、创建新报表,勾选预聚合用到的字段 ShipRegion,ShipCity,Discount
Image Removed
Image Added
在系统监控中,查看运行的Schema信息:
Image Removed
Image Added
在多维引擎监控中查看MDX生产的sql语句如果查询的是上面定义的预聚合表,那么说明命中了预聚合,否则没有命中:
Image Removed
Image Added