SmartBI使用了SQL引擎来处理和执行SQL查询。SQL(Structured Query Language)是一种标准的数据库查询语言,用于在关系型数据库中进行数据操作和查询。
SmartBI的SQL引擎具有以下功能和特点:
查询优化:SQL引擎能够分析查询语句,并尽可能地优化执行计划,以提高查询效率和性能。它会考虑索引、统计信息、表大小等因素,选择最佳的查询路径和执行顺序。
数据连接:SQL引擎支持连接多个数据表或数据源,可以进行联合查询、子查询等复杂查询操作。用户可以通过SQL语句来指定数据连接方式和条件,实现数据的关联和合并。
聚合计算:SQL引擎支持常见的聚合函数,如SUM、COUNT、AVG等,可以对数据进行汇总和统计计算。用户可以利用这些聚合函数来计算某个维度下的总和、平均值、最大值、最小值等指标。
SmartBI的SQL引擎是在底层进行数据操作和查询的核心组件。它能够解释、执行和优化复杂的SQL查询,帮助用户从多个数据源中获取所需的数据,并支持各种数据分析和报表生成需求。
另外产品还支持多维引擎,详情可查看:多维引擎介绍。
1、如果原来没有开启SQL引擎,开启之后,基于数据模型展现的效果会有点差异: 2、SQL引擎并不会做压缩空行的操作,在压缩空行的情况下,假如事实表有null数据也会显示(多维引擎会压缩掉)。 3、SQL引擎默认不会对所有维度进行排序,只有显示指定字段排序后才会加order by(多维引擎默认会按照轴上所有维度升序排序)。 4、SQL引擎不支持MDX字段(计算度量含有mdx函数、命名集、计算成员)。 5、SQL引擎V2.0可查看SQL引擎V2.0介绍。 |
问题:如果mpp为ClickHouse,导出时若数据超过5万行,会分页导出,limit分页取数返回数据顺序不固定,导致取数重复或缺失。 解决方案:同Olap,SQL引擎增加默认排序功能,并通过系统选项控制(默认不启用),默认排序为升序,优先级低于用户设置的排序,仅维度与层次字段会添加默认排序。 系统选项:DATAMODEL_QUERY_SQL_ENGINE_ENABLE_DEFAULT_ORDERBY=true 影响范围:SQL引擎 |
1、开启SQL引擎是系统级别的,一旦开启,基于数据模型的所有报表满足条件都会走SQL引擎。 2、仪表盘的 “明细表” 、”新即席查询“ 默认走SQL引擎。 3、在V11版本,支持走SQL引擎说明:
4、不支持走SQL引擎的情况:当前版本下,涉及多维计算(如排名、计算度量基于MDX函数表达式,计算成员、命名集、快速计算)的场景暂时不支持SQL引擎。 5、SQL引擎支持的模型结构:单事实表、星型模型、多事实模型(了解模模型结构可查阅:模型结构介绍)支持走SQL引擎。 |
1、在多事实模型下:如果遇到满足走SQL引擎的条件,但是还是走的多维引擎,可能是由于有一些数据库不支持full join(目前已知不支持full join的数据库有:HSQL、MariaDB、MySQL、Rapids、SelectDB、StarRocks), 2、关于系统选项DATAMODEL_QUERY_SQL_ENGINE_FIRST_GRAPH_BASE说明: SQL 引擎子图以第一个为基准,不再使用full join ,而是将子图通过left join连接,这样数据会以第一个子图为准,在某些场景下,相对于full join会少一些数据,相当于退化的支持多事实模型。 注意:此系统选项开启,不管数据库是否支持full join,都会使用left join。 |
在 系统选项 > 高级设置把DATAMODEL_QUERY_OPEN_SQL_ENGINE 设置成true意为开启。如下图:
基于数据模型做的仪表盘、电子表格、即席查询、web电子表格,如果在开启双引擎以及满足条件下,会自动走SQL引擎进行取数。 那怎么判断是否走了双引擎呢?
1)看耗时分析
2)看系统监控
服务器配置
CPU | 内存 | 硬盘 | 网络 |
---|---|---|---|
8核 | 4G | 没有限制 | 千兆网络 |
具体说明:
场景1 | 单事实模型 1000w 数据 禁用缓存 | |
---|---|---|
场景说明 | 多维引擎(ms) | SQL引擎(ms) |
1维度+1度量 | 20741 | 11327 |
3维度+0度量 | 失败(超时) | 约等于0 |
2维度+1分组字段 | 失败(超时) | 约等于0 |
2维度+2度量+1度量过滤 | 失败(超时) | 240480 |
1维度+1度量+1维度提示 | 失败(超时) | 16049 |
2维度+2度量(1个维度升序,1个度量降序) | 失败(超时) | 226425 |
场景2 | 单事实模型 100w 数据 禁用缓存 | |
---|---|---|
场景说明 | 多维引擎(ms) | SQL引擎(ms) |
2维度 | 42237 | 约等于0 |
2维度+2度量 | 46380 | 14156 |
1维度+1度量+1维度提示 | 1160 | 1055 |
2维度+1分组字段+1度量过滤 | 59797 | 15893 |
1维度+1度量+维度过滤 | 36921 | 55 |
2维度+2度量+1度量聚合过滤 | 72060 | 16725 |
2维度+2度量+1度量 (1个维度升序,1个度量降序) | 193627 | 13806 |
场景1 | 单事实表 10W数据量 | ||
场景说明 | 汇总列数 | SQL引擎(ms) | 多维引擎(ms) |
1维度、1度量 | 1 | 4087 | 5919 |
2维度、2度量 | 1 | 3776 | 6746 |
2 | 7765 | 12347 | |
3维度、2度量 | 1 | 3345 | 7352 |
2 | 5563 | 11129 | |
3 | 8716 | 21134 |
场景2 | 单事实表 100W数据量 | ||
场景说明 | 汇总列数 | SQL引擎(ms) | 多维引擎(ms) |
1维度、1度量 | 1 | 66925 | 90984 |
2维度、2度量 | 1 | 50838 | 89064 |
2 | 103786 | 194893 | |
3维度、2度量 | 1 | 36183 | 71094 |
2 | 66119 | 123100 | |
3 | 148629 | 204473 |
场景 | 单事实表 1000W数据量 | ||
场景说明 | 汇总列数 | SQL引擎(ms) | 多维引擎(ms) |
1维度、1度量 | 1 | 150189 | 100542 |
2维度、2度量 | 1 | 474766 | 失败 |
3维度、2度量 | 1 | 551400 | 失败 |