...
smartbi的报表通过业务逻辑处理生成的SQL因为要处理各种情况,为了业务上的统一性,拼出来的SQL语句往往比较复杂,嵌套的层级比较多。一是会降低查询效率,二是SQL不便于阅读, 所以在查询过程中对生成的SQL语句做了简化处理。
信息 | ||
---|---|---|
| ||
1、如果多维引擎需要开启SQL简化:需要开启1、在运维设置/系统选项 开启简化SQL的开关:COMMONS_SQL_OPEN_SIMPLIFY_SQL=true;一旦开启,所有基于数据模型的报表查询满足条件都会简化SQL语句。 3、如果多维引擎需要开启SQL简化:需要开启 OLAP 中的配置项 mondrian.simplifySql=true 来控制是否启用简化SQL功能,默认不开启;并且新增日志 smartbiolap_fatal.log 用于记录在调用简化SQL功能中抛出异常的日志,可以在OLAP系统监控的导出日志中找到这个文件。2、目前SQL简化已做兼容测试的库有:STARROCKS 、GBASE8T 、 SHENTONG 、 CIRRODATA 、GREENPLUM 、DB2_V9 、POSTGRESQL 、VASTBASEG100_PG 、KINGBASE 、VERTICA 、SELECTDB 、 HANA 、CLICKHouse、 YMATRIX 、OCEANBASE 、 IMPALA 、DAMENG 、MSSQL 、GBASE8S_V84 、 MYSQL。没有兼容适配的库,不会走SQL简化。 4、目前SQL简化已做兼容测试的库有:gaussDB(DWS)、达梦8、informix、oracle、oceanbase(oracle)(信创版支持)、mysql、impala、hive、SQLServer、星环。后续会继续适配。 |
2 简化SQL需要的条件
- 要有子查询,且子查询不是union的,还要有from子句
子查询里面不能有distinct,limit,group by,聚合函数。
where子句、having子句、select子句没有子查询(暂未支持,后续可以支持)
...