...
序号 | 问题分类 | 兼容性问题说明 | 可能影响效果 | 迁移场景(源库——》目标库) | 影响Smartbi产品的功能范围 | Smartbi产品兼容处理方案 | 建议解决方案 |
1 | 命名与大小写问题 | 不同数据库对表名、列名等的大小写区分规则不同,迁移前后大小写规则可能变化 | 查询失败、BI图表报错 | 源库——》目标库表、字段的大小写规则一致 | 1、数据源(表、字段)。 3、手写sql(数据源下的业务视图(sql查询)、原生sql查询、sql查询、模型中的sql查询、所有数据集及报表中直接写的计算字段(计算列、计算度量、分组字段)) | 自动兼容 | |
源库的表、字段全部大写或全部小写——》目标库不区分大小写 | 1、数据源(表、字段)。 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查询、所有数据集及报表中直接写的计算字段(计算列、计算度量、分组字段) | 定制扩展包之后会自动兼容 | 源库——》目标库的大小写规则一致 | 1、数据源(表、字段)。 3、手写sql(数据源下的业务视图(sql查询)、原生sql查询、sql查询、模型中的sql查询、所有数据集及报表中直接写的计算字段(计算列、计算度量、分组字段)) | 自动兼容 | 通过配置t_schema_idrule表。 | ||
2 | SQL语法差异 | 不同数据库的 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查询、所有数据集及报表中直接写的计算字段(计算列、计算度量、分组字段)) | 手动兼容 | 手工调整成目标业务库对应的函数 | |||||
4 | Catalog 和 Schema 支持差异 | 一些数据库只有 database,无 schema;有些同时有 catalog 和 schema | 表找不到、权限错误、SQL报错 | 源库——》目标库的catalog、Schema 一致 | 直接修改数据源连接 | 自动兼容 | 在迁移前设计好 Schema/Catalog 映射策略;BI中使用动态变量配置 schema/catalog 前缀。 |
源库——》目标库的catalog、Schema 不一致 | 手工兼容 | 需通过 ID 规则统一大小写(如 UPPER_CATALOG 规则,详细查看:业务库迁移之后ID替换操作)。 | |||||
5 | 分区与分布机制 | 一些数据库支持分区表而目标数据库不支持 | 查询效率降低 | 源库有分区表设置——》目标库无分区表设置 | 数据库表分区字段设置 | 不兼容 | 无法兼容,之前设置的分区字段不生效 数据迁移后重新设计分区策略,或使用分布式中间件(如Doris、StarRocks等)适配分析场景。 |
6 | NULL处理差异 | 某些数据库不允许空字符串作为NULL,或者布尔字段处理不一致 | 逻辑判断出错 | 源库—》目标库,NULL处理差异 | 回写、excel导入、指标模型创建表 | 自动兼容 | |
ETL写入 | 手动兼容 | ETL中明确NULL与空值的处理规则;统一布尔字段值的处理方式(如0/1或TRUE/FALSE)。 |
...