页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

1 背景

在当前业务场景中,许多客户的数据规模已达到千万甚至亿级别的庞大体量。如此海量的数据在查询过程中,往往会因数据处理量过大而导致查询速度缓慢,严重影响业务效率与用户体验。
为解决这一问题,Smartbi 产品提供了预聚合表(直连) 的解决方案,通过配置预聚合表可显著提升大数据量下的查询性能。需要注意的是,该功能目前仅支持多维引擎的聚合表,SQL 引擎暂未适配。


1.1 前提条件

1、需要在系统运维/公共设置/高级系统选项设置:CONFIG_CENTER_SHOW_ENABLE=true。

2、在多维引擎中配置olap配置项:mondrian.rolap.aggregates.Use=true、mondrian.rolap.aggregates.Read=false。

2 示例说明

以产品内置的“订单模型”为例,如下图所示:

基于这个模型创建报表,如下图,为了更好的说明,加了很多维度进行查询),假设它的性能很慢,需要2-3分钟才能打开,现在我们要对其进行性能优化:

...

界面路径:在系统监控>配置中心:

选项说明:

选项选项值
Data IDdatamodel必填,datamodel(只能填写这个)
GroupPreAggregations必填,PreAggregations(只能填写这个)
配置类型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"
      }]
    }
  }
]

...