页面树结构

版本比较

标识

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

...

下表列出了在产品中使用或者需要在产品中调整的内容,如果是数据库本身迁移的更多常见问题,可参考后面章节“附录”进行处理。

序号问题分类兼容性问题说明可能影响效果

迁移场景(源库——》目标库)

影响Smartbi产品的功能范围

Smartbi产品兼容处理方案建议解决方案
1


命名与大小写问题


不同数据库对表名、列名等的大小写区分规则不同,迁移前后大小写规则可能变化


查询失败、BI图表报错


源库——》目标库表、字段的大小写规则一致

1、数据源(表、字段)。
2、拖动生成的数据集、计算字段等。

3、手写sql(数据源下的业务视图(sql查询)、原生sql查询、sql查询、模型中的sql查询、所有数据集及报表中直接写的计算字段(计算列、计算度量、分组字段))

自动兼容


源库的表、字段全部大写或全部小写——》目标库不区分大小写

1、数据源(表、字段)。
2、拖动生成的数据集、计算字段等。

3、手写sql(数据源下的业务视图(sql查询)、原生sql查询、sql查询、模型中的sql查询、所有数据集及报表中直接写的计算字段(计算列、计算度量、分组字段))

自动兼容统一命名规范,使用小写并避免保留字;如需保留大小写,建议统一使用双引号或数据库特定设置。

源库的表、字段全部大写或全部小写——》目标库区分大小写


1、数据源(表、字段)。

2、拖动生成的数据集、计算字段等。

自动兼容
手写sql(数据源下的业务视图(sql查询)、原生sql查询、sql查询、模型中的sql查询、所有数据集及报表中直接写的计算字段(计算列、计算度量、分组字段)手动兼容在产品中手工调整对应资源,以适配新的规则
源库表、字段不区分大小写含有大小写混合——》目标库区分大小

1、数据源(表、字段)。

2、拖动生成的数据集、计算字段等。

需要定制产品不知道用什么规则配对已生成的表、字段ID,需要通过定制扩展包处理。要定制并配置t_schema_idrule表,sql查询等要手工调整。
1、手写sql(数据源下的业务视图(sql查询)、原生sql查询、sql查询、模型中的sql查询、所有数据集及报表中直接写的计算字段(计算列、计算度量、分组字段)手动兼容
源库表、字段不区分大小写含有大小写混合——》目标库不区分大小

1、数据源(表、字段)。

2、拖动生成的数据集、计算字段等。

需要定制要定制并配置t_schema_idrule表
1、手写sql(数据源下的业务视图(sql查询)、原生sql查询、sql查询、模型中的sql查询、所有数据集及报表中直接写的计算字段(计算列、计算度量、分组字段)定制扩展包之后会自动兼容
2SQL语法差异不同数据库的 SQL 语法有差别,比如分页(LIMIT vs TOP)、子查询支持程度不同手写SQL失效,BI图表报错

源库——》目标库的SQL语法有差异

1、数据源(表、字段)

2、拖动生成的数据集、计算字段等

自动兼容避免手写SQL,优先使用BI工具生成的兼容SQL,或在迁移过程中进行SQL重构与适配。
手写sql(数据源下的业务视图(sql查询)、原生sql查询、sql查询、模型中的sql查询、所有数据集及报表中直接写的计算字段(计算列、计算度量、分组字段))手动兼容在产品中手工调整成目标业务库的语法
3函数不一致不同数据库的函数名或语法不同(如 NVL、IFNULL、COALESCE)指标计算错误、查询失败,BI图表报错源库——》目标库的函数不一致

1、数据源(表、字段)

2、拖动生成的数据集、计算字段等

自动兼容抽象封装公共函数或使用BI平台提供的函数映射功能;复杂逻辑建议使用统一的计算层。
手写sql(数据源下的业务视图(sql查询)、原生sql查询、sql查询、模型中的sql查询、所有数据集及报表中直接写的计算字段(计算列、计算度量、分组字段))手动兼容在产品中手工调整成目标业务库对应的函数
4Catalog 和 Schema 支持差异一些数据库只有 database,无 schema;有些同时有 catalog 和 schema表找不到、权限错误、SQL报错源库——》目标库的catalog、Schema 一致直接修改数据源连接自动兼容在迁移前设计好 Schema/Catalog 映射策略;BI中使用动态变量配置 schema/catalog 前缀。
源库——》目标库的catalog、Schema 不一致
手工兼容

需通过 ID 规则统一大小写(如 UPPER_CATALOG 规则,详细查看:业务库迁移之后ID替换操作)。

5分区与分布机制一些数据库支持分区表而目标数据库不支持查询效率降低源库有分区表设置——》目标库无分区表设置数据库表分区字段设置不兼容

无法兼容,之前设置的分区字段不生效

数据迁移后重新设计分区策略,或使用分布式中间件(如Doris、StarRocks等)适配分析场景。

6NULL处理差异某些数据库不允许空字符串作为NULL,或者布尔字段处理不一致逻辑判断出错源库—》目标库,NULL处理差异回写、excel导入、指标模型创建表自动兼容
ETL写入手动兼容在产品中调整ETL对应节点,在ETL中明确NULL与空值的处理规则;统一布尔字段值的处理方式(如0/1或TRUE/FALSE)。

4 业务库迁移兼容性适配实操示例

4.1  源库与目标库信息完全一致的迁移

...

问题影响
Smartbi 中表和字段的 “身份 ID”(即系统识别的唯一标识)是根据数据库实际名称生成的。若迁移后表名 / 字段名变更(如从 “OrderInfo” 变为 “orderinfo”),Smartbi 中基于旧库创建的报表、数据集、数据模型等上层资源,会因找不到对应的 “旧 ID” 而报错(例如提示 “表不存在”“字段匹配失败”)。

解决方案

  1. 统一命名规范在数据迁移前,将 Impala 数据库中的表名、字段名统一修改为全小写(如 “OrderInfo”→“orderinfo”,“CreateTime”→“createtime”),确保与 StarRocks 的命名规则一致。需要定制:产品不知道用什么规则配对已生成的表、字段ID,需要通过定制扩展包处理。要定制并配置t_schema_idrule表,sql查询等要手工调整。

  2. ID 规则自动映射(兼容旧资源)使用 ID 规则强制转换(如 LOWER_CATALOG规则将表ID转为小写),详细可查看:业务库迁移之后ID替换操作

...