页面树结构
转至元数据结尾
转至元数据起始

1 概述

Smartbi 数据模型引擎V2.0正式上线,它在稳定性、性能以及可扩展性上有全面革新,旨在为业务分析与决策支持提供更为强大、可靠的驱动力。

前提条件

由于数据模型引擎升级至V2.0后其抽取逻辑有所变更,因此若切换至新版本引擎,原有的数据模型需重新进行抽取方能确保数据查询的正常进行。若未主动执行此操作,在尝试访问依赖于该模型的报表时,系统将自动触发数据模型的抽取过程。

2 功能介绍

V2.0依然包含 SQL引擎和多维引擎:

  • SQL引擎:详情可查看SQL引擎介绍
  • 多维引擎:是基于V1.0重构而来的,V2.0比V1.0 更稳定、查数更快、扩展性更强。

注意:多维引擎V2.0跟1.0在实现上有部分差异,升级的用户主要重点关注。

2.1  如何开启引擎V2.0

  • 在系统运维/系统选/高级设置,设置:OLAP_QUERY_NEW_ENGINE_BUILD_MDX 如果为true代表开启,如为false代表关闭。(确保当前MPP库适配新引擎,否则设置项无效)
  • 2024年7月1号之后全新安装的版本,默认开启V2.0引擎;如果只是更换包,默认不开启V2.0引擎,之前走什么引擎还是依旧走对应的引擎,即老用户不默认开启V2.0引擎。

2.2  数据模型引擎V2.0 比V1.0 增强了哪些功能

1、前提:业务库适配


2、数据模型抽取方面

选项V1.0V2.0 
抽取整体逻辑

1、优化抽取逻辑,减少抽取可能产生的内存溢出问题。
2、通过抽取逻辑调整,提升查询效率。

按次抽取session级别的,不同用户抽取是不一样的,不同用户无法共享,而且session不过期是不会清理表。
  • 设定MPP表动态有效期:(默认30分钟会自动抽取,运维可配置,详情可查看:直连&抽取)
  • 报表刷新时,系统将自动触发重新抽取,数据获取更及时;

优势:

1、MPP表超过设置的抽取时间,自动清理旧表、减少资源消耗。

2、相同权限的用户间,抽取结果共享,减少重复抽取。

抽取行权限(

只最针对:数据模型中的数据源表做出的更改)

数据模型中添加的是“数据源表”,抽取时是引用计划任务设置的执行人在源表上设置的行权限。还需要再数据模型上重新设置好数据行权限,查询时才不会权限泄露。
  • 数据模型中添加的是“数据源表”,抽取时不引用计划任务设置的执行人的权限,行权限在查询时生效。

优势:

如果数据模型中添加都是数据源表:数据不容易泄露,查询时可直接以引用源表的行权限,无需再在数据模型上重新设置。

抽取计算字段时间层次、分组字段、计算列全部不抽取。
  • 时间层次、分组字段、计算列都抽取了小宽表中。
  • 不抽取的情况:
    • 计算列含有参数、用户属性。
    • 在报表层创建的计算列。

优势

1、计算字段抽取到MPP表中,查询SQL语句更简洁、查询速度更快。

计算度量
  • 不管是在数据模型中创建的计算度量还是在报表层创建的计算度量,如果计算度量错误时,查询数据时:没有勾选该计算度量,不会报错,只有勾选了该计算度量才会报错。
计算列
  • 抽取模式:不知道是哪个字段报错。
  • 抽取模式:计算列如果报错,在抽取模式下,抽取日志会显示对应的计算列名称以及表达式信息。

优势

1、日志更友好,问题定位更精准,并增强了易用性。

查询逻辑

SQL引擎、多维引擎走不同的逻辑。

  • SQL引擎:根据在报表层勾选字段判断命中几张表,如果是只勾选一张表的字段,即直接查询对应的表/查询;如果勾选了属于不同表/查询的字段,会时时判断,如果命中多个表,就查询大宽表。
  • 多维引擎:只会查大宽表。

如果在报表层勾选了属于不同小宽表的字段,需要时时判断字段属于哪几个小宽表,如果命中多个小宽表:

  • SQL引擎:小宽表之间是join关系;
  • 多维引擎:小宽表之间是union关系。

优势

查询时,根据查询的度量、维度更精准的命中某一部分小宽表,不用去查包含所有数据的大宽表,理论查询速度更快。


3、计算列支持更多函数

选项V1.0V2.0
产品封装的统一函数只有10几个函数。

计算列封装了45+函数,包含:日期函数、数值函数、字符串函数、逻辑函数,并且在持续完善。

详情可查看:计算列函数


4、报表层的增强

  • +新增功能,只在V2.0引擎上能使用:
    • 即席查询/透视分析筛选器条件自定义设置“且(AND)” 或者“或(OR)”关系,详情可查看:透视分析即席查询
    • 仪表盘支持单选/多选下拉树、单选/多选列表树(待上线)。
    • 在关于中增加了使用哪个引擎版本的标识,方便运维人员快速定位问题:
  • ^提升了交叉表某些场景下的查询性能:
    • 交叉表/透视分析:如果显示汇总小计、合计支持走SQL引擎,详情查看:SQL引擎介绍
  • ^事实表与维表关联,事实表中只有部分维度数据,查询选择维表中的维度及事实表度量时,支持显示所有的维度,示例如下:

    1、"维度表"数据如下:

    产品编号产品名称
    16饼干
    32白奶酪
    42糙米
    47蛋糕
    56白米
    4

    2、”事实表“中,没有产品编号为“4(盐)”的记录。

    3、 想要查询:所有产品名称、销量

    方式1:如果是直连模式,在数据模型中开启“假设引用完整性”,并且在报表层,关闭“压缩空行”可以达到效果:

    方式2:如果是抽取模式,需要在报表层关闭压缩空行,缺点是会多一行空行,如果要把这个空行不显示出来,需要在系统选项/高级设置中设置
    USE_NEW_ENGINE_PREPROCESS=true。

2.3 数据模型引擎V2.0是基于V1.0重构而来的,但是也是有一些差异:

1、在直连模式下事实表与维表关联,当事实表中存在维表中没有的维度成员,并且表关系未设置假设引用完整性,查询选择维表中的维度及事实表度量时,会出现空的维度; 抽取模式:都是V2.0的展示效果。

新的变更调整更符合业务实际使用逻辑,如果想保持V1.0的效果,建议升级后设置“假设引用完整性”。

说明V1.0  VS  V2.0
  • V1.0,默认不显示维表中不存在的度量的值。
  • V2.0 ,默认会显示事实表中所有的度量值,匹配不到维表中的维度,则显示为空维度。



如下"维度表",没有产品编号为“4”的维度

产品编号产品名称
16饼干
32白奶酪
42糙米
47蛋糕
56白米
而”事实表“中,有产品编号为“4”,产品名称为“盐”, 查询:产品名称、销量 ,在直连情况下显示效果如下:

2、如果查询中未明确指定排序字段时,前端显示顺序可能不一致,建议升级后指定字段排序。

说明V1.0  VS  V2.0
  • V1.0与V2.0 查询都没有指定字段排序时,可能存在顺序不一致的情况。




2.4  V1.0 与V2.0 查询性能对比

说明:性能报告待上线。