页面树结构

版本比较

标识

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

    

1. 背景说明

存在数据库包含很多分区表,如客户主副表有上百万的表,在数据源管理的时候,加载卡顿或者失败(后端获取大概7s,前端渲染50多s,有些还加载不出来),导致用户无法自助分析库中的数据.实际上客户需要分析的主表数量只有其中的少部分,提供该接口给到定制,进行个性化过滤需要添加的表对象.


2. 接口设计

  • BaseDataSourceDialect新增处理表、视图、存储过程过滤方法filterTables,可以方便扩展.

方法说明

获取表、视图、存储过程过滤处理 。true 过滤通过,正常添加;否则不加入到业务库管理中处理

参数及说明

名称

说明

数据类型

备注

ds

业务库对象

DataSource


catalog

数据库获取表的当前catalog

String

数据库默认值

数据库catalog

数据库获取表的当前schema

String


tableName

表等对象名

String

通过驱动rs.getString("TABLE_NAME")获取

Type

待判断对象类型

String

 TABLE 表

 VIEW 视图

 PROC 存储过程
通过驱动rs.getString("TABLE_TYPE")获取



  • 新增BaseDataSourceDialect的getTableFieldsBatch方法,可以方便扩展当一次性添加业务库的表超过100 ,是否开启批量获取获取表字段

参数:

名称

说明

数据类型

备注

ds

业务库对象

DataSource



说明:返回true,一次性添加业务库的表超过100时开启批量获取获取表字段

  • smartbi/freequery/basicdata/IDataSourceDialectListener.java

监听器接口类添加支持上面的处理方法

  • smartbi/oltp/FreeQueryModule.java设置和获取定制监听

3. 定制开发流程及参考样例

  • 需要定制扩展包添加业务库继承IDataSourceDialectListener的监听器接口实现类listener,处理业务逻辑

a. 实现方法filterTables进行处理表、视图、存储过程过滤;符合添加的对象返回true;不符合返回false;

b. 实现方法getTableFieldsBatch,对需要开启表对象过滤的业务库类型,需要返回false;即不开启批量获取表字段


参考样例(方法名有出入,参照上面接口说明定义即可):

Image Added


  • 定制扩展包中新建IModule实体类,并在activate方法注册上面实现类的监听器:


FreeQueryModule.getInstance().addDataSourceDialectListener(IDataSourceDialectListener)

参考样例(方法名有出入,参照上面接口说明定义即可):

Image Added

  • 配置实体类,项目启动就自动加载执行


参考样例(方法名有出入,参照上面接口说明定义即可):
Image Added