1 概述
1.1 背景
SmartBI使用了SQL引擎来处理和执行SQL查询。SQL(Structured Query Language)是一种标准的数据库查询语言,用于在关系型数据库中进行数据操作和查询。
SmartBI的SQL引擎具有以下功能和特点:
查询优化:SQL引擎能够分析查询语句,并尽可能地优化执行计划,以提高查询效率和性能。它会考虑索引、统计信息、表大小等因素,选择最佳的查询路径和执行顺序。
数据连接:SQL引擎支持连接多个数据表或数据源,可以进行联合查询、子查询等复杂查询操作。用户可以通过SQL语句来指定数据连接方式和条件,实现数据的关联和合并。
数据过滤和排序:SQL引擎允许用户在查询中使用WHERE子句来进行数据过滤,以获取符合特定条件的数据。同时,还可以使用ORDER BY子句对结果进行排序,以便按照特定字段进行升序或降序排列。
聚合计算:SQL引擎支持常见的聚合函数,如SUM、COUNT、AVG等,可以对数据进行汇总和统计计算。用户可以利用这些聚合函数来计算某个维度下的总和、平均值、最大值、最小值等指标。
SmartBI的SQL引擎是在底层进行数据操作和查询的核心组件。它能够解释、执行和优化复杂的SQL查询,帮助用户从多个数据源中获取所需的数据,并支持各种数据分析和报表生成需求。
另外产品还支持多维引擎,详情可查看:多维引擎介绍。
1.2 SQL引擎适合的查数场景
- 查清单明细:如果数据量很大,并且是想查询原始数据的明细。
- 查汇总数据:指标在数仓或使用SQL语句已经处理好了,就是想通过表格或组件查询简单的汇总数据,无需二次计算的比如同期、前期计算。
1.3 满足什么样的条件才会走SQL引擎
前提条件
1、开启SQL引擎是系统级别的,一旦开启,基于数据模型的所有报表满足条件都会走SQL引擎。
2、仪表盘的 “明细表” 、”新即席查询“ 默认走SQL引擎。
3、V11上满足条件的交叉表、透视分析、模型查询支持走SQL引擎:
- 条件:不显示分类汇总,没有排名、计算度量、计算成员、命名集。
4、不支持的计算:只要涉及多维计算的都不支持;
如果在报表层查数时,只勾选了原始度量, 可以走SQL引擎;如果勾选了计算度量(基于原始度量进行加工生成的含有mdx表达式,+、-、*、/)、
计算成员、计算命名集,排名、快速计算暂不支持走SQL引擎。
5、SQL引擎支持的模型结构:单事实表、星型模型、多事实模型(了解模模型结构可查阅:模型结构介绍)支持走SQL引擎。
2 具体操作
2.1 怎么开启SQL引擎
在 系统选项 > 高级设置把DATAMODEL_QUERY_OPEN_SQL_ENGINE 设置成true意为开启。如下图:
2.2 怎么判断报表是否走了双引擎?
基于数据模型做的仪表盘、电子表格、即席查询、web电子表格,如果在开启双引擎以及满足条件下,会自动走SQL引擎进行取数。 那怎么判断是否走了双引擎呢?
1)看耗时分析
- 如果数据源名称是Mondrian,可以判断走的是OLAP; 如果是源库名称,判断为走SQL引擎
2)看系统监控
2.3 如何快速关闭双引擎?
- 在系统选项 > 高级设置把系统 DATAMODEL_QUERY_OPEN_SQL_ENGINE 设置成false或者删除DATAMODEL_QUERY_OPEN_SQL_ENGINE 设置项。
2.4 SQL引擎 与 多维引擎性能简单对比
服务器配置
CPU | 内存 | 硬盘 | 网络 |
---|---|---|---|
8核 | 4G | 没有限制 | 千兆网络 |
具体说明:
场景1 | 单事实模型 1000w 数据 禁用缓存 | |
---|---|---|
场景说明 | "多维引擎"查询时间 | "SQL查询" 时间 |
1维度+1度量 | 20741ms | 11327ms |
2维度+1度量 | 11327ms | 219625ms |
3维度+0度量 | 失败(超时) | 约等于0 |
2维度+1分组字段 | 失败(超时) | 约等于0 |
2维度+2度量+1度量过滤 | 失败(超时) | 240480ms |
1维度+1度量+1维度提示 | 失败(超时) | 16049ms |
2维度+2度量(1个维度升序,1个度量降序) | 失败(超时) | 226425ms |
场景2 | 单事实模型 100w 数据 禁用缓存 | |
---|---|---|
场景说明 | "多维引擎"查询时间 | "SQL查询" 时间 |
2维度 | 42237ms | 约等于0 |
2维度+1度量 | 45082ms | 14140ms |
2维度+2度量 | 46380ms | 14156ms |
1维度+1度量+1维度提示 | 1160ms | 1055ms |
2维度+1分组字段+1度量过滤 | 59797ms | 15893ms |
1维度+1度量+维度过滤 | 36921ms | 55ms |
2维度+2度量+1度量聚合过滤 | 72060ms | 16725ms |
2维度+2度量+1度量 (1个维度升序,1个度量降序) | 193627ms | 13806ms |