前言:
测试环境:DataEase v2.10.3
删除数据源时会提醒存在的相关血缘关系,一旦确认删除后,对应的数据集以及仪表板、数据大屏都会显示数据异常。编辑该数据集也无法选择数据源保存,如果该数据集对应的仪表板和大屏数量较多,重新创建并替换数据集会是较大的重复工作,本文介绍如何重新上传数据源并在 DataEase 系统数据库中进行关联。
删除数据源报错如下图:
为方便完成以下操作,建议使用数据库连接工具连接 DataEase 系统数据库。v2 版本创建数据集时 DataEase 系统数据库的变化,core_dataset_table 会新增一条数据集物理表的记录,core_datasource 会新增数据源记录,core_dataset_group 会新增数据集信息记录。误删除数据源后,只有core_datasource 会减少一条记录。
Excel 数据源拖拽方式创建数据集
步骤一:
将原来的 Excel 重新上传,此时原来的数据集还未与新 Excel 关联,新数据源的 datasource_id 已经发生变化,到 core_datasource 记录下这个新增数据源的id为新的 datasource_id,例如:1066000249329422336。到 core_dataset_group 根据数据集 name 例如:excel_1216数据集,查询到旧的 tablename 和 datasource_id,比如下图中数据集名为 excel_1216 数据集,它之前的信息存储在 info 字段中,获取到旧的 tableName 为 excel_Sheet1_9f4784e024 和 datasourceId 为1065973840649261056,
步骤二:
根据旧的 tableName 和 datasourceId 查询 core_dataset_table 表,将对应记录的中的 table_name、datasource_id 和 info 更新为 excel_Sheet1_5c7326984a、1066000249329422336。
其中新的 datasource_id 就是上文记录的新增数据源的 id,新的 table_name 获取方式如下:
步骤三:
再修改该数据集的 core_dataset_group 的 info 和 union_sql 字段值,如下图,主要更新所示的 tableName 和 datasourceId 的对应值。
返回到数据集页面可以看到数据集已恢复正常,仪表板也可以正常显示。
Excel 数据源自定义 SQL 创建数据集
步骤一同上,记录下新的 datasource_id;
步骤二:
根据旧的 tableName 和 datasourceId 查询 core_dataset_table 表,将对应记录的自定义 SQL 更新 datasource_id 值,如下图,已将原先datasource_id 更新为 1066058571457892352
其中自定义 SQL 语句是通过 Base64 编码后存储在 info 中。
步骤三同上,
修改该数据集的 core_dataset_group 的 info 和 union_sql 字段值,主要是更新 datasourceId 的对应值和 union_sql 中的表名,再进入 DataEase 数据集页面,进入界面若提示表不存在,只需要修改 SQL 表名替换 SQL 中 from 后面的旧物理表信息,重新运行保存即可。
MySQL 直接拖拽表
步骤一同上,记录下新的 datasource_id;
步骤二:
根据旧的 tableName 和 datasourceId 查询 core_dataset_table 表,将对应记录的中的 datasource_id 和 info 的 table 值
步骤三同上;
修改该数据集的 core_dataset_group 的 info 和 union_sql 字段值。
另外,MySQL 自定义 SQL 数据集可以参照 Excel 数据源自定义 SQL 。