页面树结构

版本比较

标识

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

1 概述

1.1 背景

SmartBI使用了SQL引擎来处理和执行SQL查询。SQL(Structured Query Language)是一种标准的数据库查询语言,用于在关系型数据库中进行数据操作和查询。

...

  1. 查询优化:SQL引擎能够分析查询语句,并尽可能地优化执行计划,以提高查询效率和性能。它会考虑索引、统计信息、表大小等因素,选择最佳的查询路径和执行顺序。

  2. 数据连接:SQL引擎支持连接多个数据表或数据源,可以进行联合查询、子查询等复杂查询操作。用户可以通过SQL语句来指定数据连接方式和条件,实现数据的关联和合并。

  3. 数据过滤和排序:SQL引擎允许用户在查询中使用WHERE子句来进行数据过滤,以获取符合特定条件的数据。同时,还可以使用ORDER BY子句对结果进行排序,以便按照特定字段进行升序或降序排列。

  4. 聚合计算:SQL引擎支持常见的聚合函数,如SUM、COUNT、AVG等,可以对数据进行汇总和统计计算。用户可以利用这些聚合函数来计算某个维度下的总和、平均值、最大值、最小值等指标。

...

另外产品还支持多维引擎,详情可查看:多维引擎介绍。




信息
iconfalse

如果原来没有开启SQL引擎,开启之后,基于数据模型展现的效果会有点差异:1、如果原来没有开启SQL引擎,开启之后,基于数据模型展现的效果会有点差异:

1、SQL引擎并不会做压缩空行的操作,在压缩空行的情况下,假如事实表有null数据也会显示(多维引擎会压缩掉)。2、SQL引擎并不会做压缩空行的操作,在压缩空行的情况下,假如事实表有null数据也会显示(多维引擎会压缩掉)。

2、SQL引擎默认不会对所有维度进行排序,只有显示指定字段排序后才会加order by(多维引擎默认会按照轴上所有维度升序排序)。

3、SQL引擎不支持MDX字段(计算度量、命名集、计算成员)。

4、SQL引擎暂不支持合计小计、排名。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.2 SQL引擎适合的查数场景

  • 查清单明细:如果数据量很大,并且是想查询原始数据的明细。
  • 查汇总数据:指标在数仓或使用SQL语句已经处理好了,就是想通过表格或组件查询简单的汇总数据,无需二次计算的比如同期、前期计算。

1.3 满足什么样的条件才会走SQL引擎

注意
title前提条件

1、开启SQL引擎是系统级别的,一旦开启,基于数据模型的所有报表满足条件都会走SQL引擎。

2、仪表盘的 “明细表” 新即席查询“ 默认走SQL引擎。

3、V11上满足条件的交叉表、透视分析、模型查询支持走SQL引擎:

  • 条件:不显示分类汇总,没有排名、计算度量、计算成员、命名集。

4、不支持的计算:只要涉及多维计算的都不支持;
                         如果在报表层查数时,只勾选了原始度量, 可以走SQL引擎;如果勾选了计算度量(基于原始度量进行加工生成的含有mdx表达式,+、-、*、/)、
                         计算成员计算命名集,排名快速计算暂不支持走SQL引擎。
3、在V11版本,支持走SQL引擎说明:

  • 对于交叉表、透视分析及模型查询,只要不包含排名、计算成员、命名集、计算度量都支持走SQL引擎;其中计算度量如果表达式仅涉及加(+)、减(-)、乘(*)、除(/),或者仅使用case when/IIF函数,也支持走SQL引擎(仅有clickhouse、mysql支持,其他库仍然不支持),前提是要开启:数据模型引擎V2.0、 
    以及在运维设置/系统选项/高级设置中设置USE_NEW_ENGINE_PREPROCESS=true。
  • 复杂表头结构、合计与小计也支持走SQL引擎的。

4、不支持走SQL引擎的情况:当前版本下,涉及多维计算(如排名、计算度量基于MDX函数表达式,计算成员、命名集、快速计算)的场景暂时不支持SQL引擎。

5、SQL引擎支持的模型结构:单事实表、星型模型、多事实模型(了解模模型结构可查阅:模型结构介绍)支持走SQL引擎。


信息
1、如果遇到满足走SQL引擎的条件,但是还是走的多维引擎,可能是由于有一些数据库不支持full

1、在多事实模型下:如果遇到满足走SQL引擎的条件,但是还是走的多维引擎,可能是由于有一些数据库不支持full join(目前已知不支持full join的数据库有:HSQL、MariaDB、MySQL、Rapids、SelectDB、StarRocks),

这时,如果还要走SQL引擎,需要开启系统选项: DATAMODEL


     这时,如果还要走SQL引擎,需要开启系统选项: DATAMODEL_QUERY_SQL_ENGINE_FIRST_GRAPH_BASE=

true

true。

2、关于系统选项(DATAMODEL


2、关于系统选项DATAMODEL_QUERY_SQL_ENGINE_FIRST_GRAPH_

BASE)说明:

BASE说明:

SQL

引擎子图以第一个为基准,不再使用full

引擎子图以第一个为基准,不再使用full join ,而是将子图通过left

join连接,这样数据会以第一个子图为准,在某些场景下,相对于full

join连接,这样数据会以第一个子图为准,在某些场景下,相对于full join会少一些数据,相当于退化的支持多事实模型。

注意:此系统选项开启,不管数据库是否支持full join,都会使用left

join

join。


2 具体操作

2.1 怎么开启SQL引擎

在 系统选项 > 高级设置把DATAMODEL_QUERY_OPEN_SQL_ENGINE 设置成true意为开启。如下图:


2.2 怎么判断报表是否走了SQL引擎?

基于数据模型做的仪表盘、电子表格、即席查询、web电子表格,如果在开启双引擎以及满足条件下,会自动走SQL引擎进行取数。 那怎么判断是否走了双引擎呢?

1)看耗时分析

  • 如果数据源名称是Mondrian,可以判断走的是OLAP; 如果是源库名称,判断为走SQL引擎

2)看系统监控

2.3  如何快速关闭SQL引擎?

...


SQL引擎 与 多维引擎性能简单对比
SQL引擎 与 多维引擎性能简单对比

2.

...

3  SQL引擎 与 多维引擎性能简单对比

服务器配置

CPU

内存

硬盘

网络

8核

4G

没有限制

千兆网络

...

场景1单事实模型 1000w 数据 禁用缓存
场景说明"多维引擎"查询时间(ms)       "SQL查询" 时间 SQL引擎(ms)

1维度+1度量

20741ms20741

11327ms

2维度+1度量

11327ms

219625ms

11327

3维度+0度量

失败(超时)

约等于0

2维度+1分组字段

失败(超时)

约等于0

2维度+2度量+1度量过滤

 失败(超时)

240480ms240480

1维度+1度量+1维度提示

失败(超时)

16049ms16049

2维度+2度量(1个维度升序,1个度量降序)

失败(超时)

226425ms226425


场景2单事实模型 100w 数据  禁用缓存
场景说明
"
多维引擎
"查询时间
(ms)     
 "SQL查询" 时间
 SQL引擎(ms)

2维度

42237ms

42237

约等于0

2维度+1度量

45082ms14140ms

2维度+2度量

46380ms

46380

14156ms

14156

1维度+1度量+1维度提示

1160ms

1160

1055ms

1055

2维度+1分组字段+1度量过滤

59797ms

59797

15893ms

15893

1维度+1度量+维度过滤

36921ms

36921

55ms

55

2维度+2度量+1度量聚合过滤

72060ms

72060

16725ms

16725

2维度+2度量+1度量 (1个维度升序,1个度量降序)

193627ms

13806ms

193627

13806


交叉表/透视分析显示小计/合计性能
交叉表/透视分析显示小计/合计性能

2.4  交叉表/透视分析显示小计/合计:SQL引擎 与 多维引擎性能简单对比

场景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

失败