页面树结构

版本比较

标识

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


信息

1、目前只有数据模型抽取模式才支持设置预计算。1、目前只有数据模型抽取模式才支持设置预计算。

2、目前预计算支持的高速缓存库:SmartbiMpp产品默认使用高速缓存库CH、StarRocks

3、只有数据模型的抽取计划成功执行完成后,新创建或者修改的预计算才会生效。

4、预计算只支持选择原始度量,不支持计算度量、计算成员、命名集。

4、具体功能限制可查看:6 功能限制章节。

1 概述

预计算:即把某些耗时的操作(例如JOIN、聚合)的结果保存下来,以便在查询时直接复用,从而避免这些耗时的操作,最终达到加速查询的目的,它是解决性能的一个举措。

预计算原理:其核心原理是借助高速缓存数据库的物化视图技术,在数据模型创建预计算时,触发数据抽取操作,将预计算结果插入或更新到缓存库。后续报表层查询时,若符合命中规则,可直接从预计算表取数,避免复杂的实时计算,大幅缩短查询响应时间。预计算原理:其核心原理是借助高速缓存数据库的物化视图技术,在数据模型创建预计算时,触发数据抽取操作,将预计算结果插入或更新到缓存库。后续报表层查询时,若符合命中规则,可直接从预计算表取数,避免复杂的实时计算,大幅缩短查询响应时间。

数据模型编辑界面支持预计算配置,一个数据模型可以建立多个预计算。


2 预计算适用场景

适用于如下场景:

  • 模式固定、且执行频次高的查询;
  • 查询包含非常耗时的操作,比如聚合、快速计算等;查询包含非常耗时的操作,比如聚合、快速计算、大表关联等;
  • 适合事实表数据行数很大的情况,比如千万级别。

3 功能介绍

3.1 开启功能前提条件

使用预计算功能前,需确保开启数据模型 V2.0 以及 SQL 简化功能。

1、需要在系统选项/高级设置:将 OLAP_QUERY_NEW_ENGINE_BUILD_MDX 设置为 true,COMMONS_SQL_OPEN_SIMPLIFY_SQL 设置为 true。
2、同时,OLAP 引擎也需开启 SQL 简化开关,即在配置项设置: mondrian.simplifySql 设置为 true。

只有完成这些配置,预计算功能才能正常运行。

3.2 进入预计算管理界面

数据模型有 “直连” 和 “抽取” 两种模式,目前仅 “抽取” 模式支持预计算。在 “抽取” 模式下,操作入口:

  • 位于工具栏的抽取菜单中,点击 “预计算管理” 菜单项,即可进入预计算管理界面。
  • 在关系视图中的表/查询右键菜单:

3.3 示例说明

以产品自带的“订单模型”为例:

去创建透视分析,查询各个区域、省份、城市各个月份的销售额、同期销售额、环比等:

...

1、打开预计算管理:点击 “添加预计算” 按钮:

2、弹出 “预计算配置” 对话框,去创建预计算

选项说明
预计算名称必填项;且在整个数据模型中具有唯一性,不能重复;取名建议与最终查询用途意思相近,这样方便维护。
别名非必填,如未填写,别名与预计算名称一致。
描述非必填,描述主要为了更好的记录该预计算的用途,防止后面不知道该预计算的作用,可以在描述这里详细记录。
事实表

事实表(预计算原始表)下拉框中仅显示模型中有度量的事实表,维表不会显示

这里是以事实表为中心,根据数据模型中设置的关系(基数、筛选方向),会动态构建出一个查询 核心子图 ,预计算可以针对该查询 核心子图 中的所有字段。

信息
  • 什么叫“核心子图”?
    先要了解子图:
    子图(也可以理解为扩展表),也可以理解为数据模型中的每个表都可构建一个子图,A表的子图是以A表为中心,根据筛选方向即箭头指向它的,代表能筛选它(比如B-→A,即B可以筛选A)都会把它纳入子图中; 
    而核心子图,可以理解为以事实表为中心,所有基数关系为”一“都会被纳入到以事实表为中心的子图,简单的理解就是星型模型。


预计算字段

点击添加字段会弹添加字段框:

Image Modified

以树控件方式展示以选中事实表为中心构建的查询子图中的所有表及字段,分为 “维度” 和 “度量” 节点。

  • “维度” 节点:默认显示核心子图上所有的维表字段,不显示度量,展示原始字段、计算列、分组字段,且不显示隐藏的字段。
  • “度量” 节点:仅显示选中的”事实表“原始度量,同样不展示已隐藏的字段、计算度量、命名集、计算成员;并且也不会显示事实表所在核心子图其他表的度量。
  • 选择完字段后,点击【确定】:回到预计算主界面。
    Image Modified
    • 若 “预计算字段” 区域中无该字段,则添加;若已有则忽略;
    • 度量支持添加重复,支持切换汇总依据,主要是为了解决:在同一个报表需要查询指标的合计值、平均值的情况。

3、根据步骤1的说明,填写好预计算信息,给它命名为“区域省份城市销售额查询加速”,配置如下:

...

4、点击 确定,回到预计算管理界面;在这里可以查看所有的创建的预计算:

选项说明
状态

会自动检测,如果发现异常会显示“有错误”,没有异常则显示“正常”。

比如:修改了基数关系,原本维表与事实表之间是一对多,后面改成了多对一,状态会显示“有错误”:

Image Modified

删除点击 “删除” 按钮,系统会弹窗提示用户,删除预计算后,之前能命中该预计算的查询将从原始数据取数,查询速度可能降低。
编辑点击 “编辑” 按钮,会打开 “预计算配置” 对话框,此时 “预计算名称” 输入框变灰色,不可修改,其他操作与新建时相同。

5、创建好预计算之后,保存数据模型,并且去抽取数据模型。注意:只有数据模型的抽取计划成功执行完成后,新创建或者修改的预计算才会生效。

6、抽取成功之后,清空缓存,再去查看前面创建的透视分析报表,体感上是变快了的。

4 预计算命中规则

字段匹配限制:报表查询的字段与预计算的匹配要求较为严格。

  • 如果报表查询的字段或过滤条件与预计算仅维度字段匹配,或者部分字段吻合,均无法命中预计算。只有当报表查询的字段完全包含在预计算中,或者完全匹配创建好的预计算时,才能命中。这在实际使用中,可能会因为查询条件的细微差异导致无法利用预计算,降低了预计算的命中率。
  • 如果查询的字段都匹配创建好的预计算中,使用度量的快速计算也能命中预计算。如果查询的字段、过滤条件都匹配创建好的预计算中,使用度量的快速计算也能命中预计算。
  • 聚合方式变更影响:前端改了聚合方式,将无法命中已设置好的预计算。在实际业务分析中,用户可能会根据不同的分析需求频繁变更聚合方式,如从求和改为求平均值,这就导致每次变更聚合方式都可能无法使用之前创建的预计算,需要重新创建预计算以适应新的聚合方式。
  • 多事实表模型,如果查询条件中包含多个事实表度量,并且预计算存在多个,会命中多个预计算。



5 如何判断是否命中了预计算

基于 3.3 示例说明 创建的透视分析报表,查询之后:

...

如果高速缓存库是StarRocks,命中成功之后:


功能限制
功能限制

6 功能限制

1、目前预计算功能仅在抽取模式下支持,直连模式暂不支持。这意味着采用直连数据源方式构建的数据模型无法使用预计算功能来提升查询性能。对于一些对数据实时性要求极高,且依赖直连模式获取最新数据的业务场景,无法通过预计算优化查询速度。

...

5、更新性能影响:预计算跟着模型的抽取进行抽数,可能会导致抽数变慢。当数据量较大且预计算任务较多时,抽取过程会消耗大量的系统资源,延长抽取时间,进而影响整个数据处理流程的效率。而且在数据模型发生变更时,如关系调整、字段删除等,检测预计算是否正常以及更新预计算的过程可能会出现异常,导致预计算无法及时准确地反映数据变化。

6、目前预计算仅支持在单个数据模型内进行创建和使用,无法跨数据模型或跨数据库进行预计算操作。对于企业中存在多个数据模型,且需要对不同模型的数据进行联合分析的场景,预计算功能无法提供有效的支持。例如,销售数据存储在一个数据模型中,客户数据存储在另一个数据模型中,若要对销售数据和客户数据进行关联分析并使用预计算优化性能,当前功能无法实现。6、目前预计算仅支持在单个数据模型内进行创建和使用,无法跨数据模型或跨数据库进行预计算操作。