1 概述
预计算:即把某些耗时的操作(例如JOIN、聚合)的结果保存下来,以便在查询时直接复用,从而避免这些耗时的操作,最终达到加速查询的目的。
预计算原理:其核心原理是借助高速缓存数据库的物化视图技术,在数据模型创建预计算时,触发数据抽取操作,将预计算结果插入或更新到缓存库。后续报表层查询时,若符合命中规则,可直接从预计算表取数,避免复杂的实时计算,大幅缩短查询响应时间。
数据模型编辑界面支持预计算配置,一个数据模型可以建立多个预计算。
信息 |
---|
1、目前只有数据模型抽取模式才支持设置预计算。1、目前只有数据模型抽取模式才支持设置预计算。 2、目前预计算支持的高速缓存库:SmartbiMpp产品默认使用高速缓存库CH、StarRocks。 3、只有数据模型的抽取计划成功执行完成后,新创建或者修改的预计算才会生效。 4、预计算只支持选择原始度量,不支持计算度量、计算成员、命名集。 4、具体功能限制可查看:6 功能限制章节。 |
1 概述
预计算:即把某些耗时的操作(例如JOIN、聚合)的结果保存下来,以便在查询时直接复用,从而避免这些耗时的操作,最终达到加速查询的目的,它是解决性能的一个举措。
预计算原理:其核心原理是借助高速缓存数据库的物化视图技术,在数据模型创建预计算时,触发数据抽取操作,将预计算结果插入或更新到缓存库。后续报表层查询时,若符合命中规则,可直接从预计算表取数,避免复杂的实时计算,大幅缩短查询响应时间。
数据模型编辑界面支持预计算配置,一个数据模型可以建立多个预计算。
2 预计算适用场景
适用于如下场景:
- 模式固定、且执行频次高的查询;
- 查询包含非常耗时的操作,比如聚合、连接操作等;查询包含非常耗时的操作,比如聚合、快速计算、大表关联等;
- 查询仅涉及表中的很小部分数据。
适合事实表数据行数很大的情况,比如千万级别。
3 功能介绍
3.1 开启功能前提条件
...
...
...
3.2 进入预计算管理界面
3.3 示例说明
以产品自带的“订单模型”为例:
去创建透视分析,查询各个区域、省份、城市各个月份的销售额、同期销售额、环比等:
...
1、打开预计算管理:点击 “添加预计算” 按钮:
2、弹出 “预计算配置” 对话框,去创建预计算
选项 | 说明 | ||
---|---|---|---|
预计算名称 | 必填项;且在整个数据模型中具有唯一性,不能重复;取名建议与最终查询用途意思相近,这样方便维护。 | ||
别名 | 非必填,如未填写,别名与预计算名称一致。 | ||
描述 | 非必填,描述主要为了更好的记录该预计算的用途,防止后面不知道该预计算的作用,可以在描述这里详细记录。 | ||
事实表 | 事实表(预计算原始表)下拉框中仅显示模型中有度量的事实表,维表不会显示 这里是以事实表为中心,根据数据模型中设置的关系(基数、筛选方向),会动态构建出一个查询 核心子图 ,预计算可以针对该查询 核心子图 中的所有字段。
| ||
预计算字段 | 点击添加字段会弹添加字段框: 以树控件方式展示以选中事实表为中心构建的查询子图中的所有表及字段,分为 “维度” 和 “度量” 节点。
|
3、根据步骤1的说明,填写好预计算信息,给它命名为“区域省份城市销售额查询加速”,配置如下:
...
4、点击 确定,回到预计算管理界面;在这里可以查看所有的创建的预计算:
选项 | 说明 |
---|---|
状态 | 会自动检测,如果发现异常会显示“有错误”,没有异常则显示“正常”。 比如:修改了基数关系,原本维表与事实表之间是一对多,后面改成了多对一,状态会显示“有错误”: |
删除 | 点击 “删除” 按钮,系统会弹窗提示用户,删除预计算后,之前能命中该预计算的查询将从原始数据取数,查询速度可能降低。 |
编辑 | 点击 “编辑” 按钮,会打开 “预计算配置” 对话框,此时 “预计算名称” 输入框变灰色,不可修改,其他操作与新建时相同。 |
4 预计算命中规则
字段匹配限制:报表查询的字段与预计算的匹配要求较为严格。
- 如果报表查询的字段或过滤条件与预计算仅维度字段匹配,或者部分字段吻合,均无法命中预计算。只有当报表查询的字段完全包含在预计算中,或者完全匹配创建好的预计算时,才能命中。这在实际使用中,可能会因为查询条件的细微差异导致无法利用预计算,降低了预计算的命中率。
- 如果查询的字段都匹配创建好的预计算中,使用度量的快速计算也能命中预计算。如果查询的字段、过滤条件都匹配创建好的预计算中,使用度量的快速计算也能命中预计算。
- 聚合方式变更影响:前端改了聚合方式,将无法命中已设置好的预计算。在实际业务分析中,用户可能会根据不同的分析需求频繁变更聚合方式,如从求和改为求平均值,这就导致每次变更聚合方式都可能无法使用之前创建的预计算,需要重新创建预计算以适应新的聚合方式。
- 多事实表模型,如果查询条件中包含多个事实表度量,并且预计算存在多个,会命中多个预计算。
5 如何判断是否命中了预计算
基于 3.3 示例说明 创建的透视分析报表,查询之后:
...
如果高速缓存库是StarRocks,命中成功之后:
锚 | ||||
---|---|---|---|---|
|
6 功能限制
1、目前预计算功能仅在抽取模式下支持,直连模式暂不支持。这意味着采用直连数据源方式构建的数据模型无法使用预计算功能来提升查询性能。对于一些对数据实时性要求极高,且依赖直连模式获取最新数据的业务场景,无法通过预计算优化查询速度。
2、缓存库支持限制:现阶段新引擎 1、目前预计算功能仅在抽取模式下支持,直连模式暂不支持。这意味着采用直连数据源方式构建的数据模型无法使用预计算功能来提升查询性能。对于一些对数据实时性要求极高,且依赖直连模式获取最新数据的业务场景,无法通过预计算优化查询速度。
2、缓存库支持限制:现阶段新引擎 MPP 库仅适配了 CH(ClickHouse)和 StarRocks 这两个缓存库,如果企业使用的是其他类型的缓存库,无法使用该预计算功能。
3、汇总依据限制:预计算目前不支持属性、唯一计数的计算。在实际业务场景中,若需要统计唯一客户数量、唯一产品 3、汇总依据限制:预计算目前不支持属性、唯一计数的计算。在实际业务场景中,若需要统计唯一客户数量、唯一产品 ID 数量等涉及唯一计数的指标,或者对某些属性进行特殊计算,预计算功能无法直接满足需求。
...
5、更新性能影响:预计算跟着模型的抽取进行抽数,可能会导致抽数变慢。当数据量较大且预计算任务较多时,抽取过程会消耗大量的系统资源,延长抽取时间,进而影响整个数据处理流程的效率。而且在数据模型发生变更时,如关系调整、字段删除等,检测预计算是否正常以及更新预计算的过程可能会出现异常,导致预计算无法及时准确地反映数据变化。
6、目前预计算仅支持在单个数据模型内进行创建和使用,无法跨数据模型或跨数据库进行预计算操作。对于企业中存在多个数据模型,且需要对不同模型的数据进行联合分析的场景,预计算功能无法提供有效的支持。例如,销售数据存储在一个数据模型中,客户数据存储在另一个数据模型中,若要对销售数据和客户数据进行关联分析并使用预计算优化性能,当前功能无法实现。6、目前预计算仅支持在单个数据模型内进行创建和使用,无法跨数据模型或跨数据库进行预计算操作。