QuickBI数据表名称不同字段一样,为什么在数据集中切换数据表,仪表板还是会报错

产品名称

QuickBI

产品模块

仪表板、数据集

概述

为您详细介绍QuickBI数据表名称不同字段一样,在数据集中切换数据表,仪表板还是会报错的原因。

问题描述

场景描述:客户想要实现测试及生产的场景,数据源存在两张表,表名通过“test_”区别,例如:客户采用点击数据表拖入画布的方式创建数据集,sales_record与test_sales_record,由于两张表字段内容相近,客户在创建数据集以及新建仪表板时希望减少重复操作,于是复制(另存为操作)了测试的数据集和测试的仪表板在同一空间,分别命名为“测试数据集”和“生产数据集”,“测试仪表板”和“生产仪表板”。但客户发现如此操作下来,一旦切换成生产表sales_record,仪表板就会报错,仪表板中的字段需要重新拉取。

问题原因

数据集支持表结构同步,但如果是拖拽表单的形式创建的数据集,当表发生变化时,相当于数据集发生了改变,仪表板自然会失效,将会报类似如下的信息:

同时我们通过F12查看底层sql:

1.在创建数据集界面按F12进入控制台,选择Network标签

2.点击刷新按钮刷新数据集,点击Name下preview

3.依次点开data-debugInfo-0,就会发现下方有一个“sql”,这里就是我们拖拽数据表生成的sql了。

4.通过查看sql,我们发现执行的是是一段“select 字段 from 表名”的语句,详细信息如下:

表名与我们拖入的数据表一致。同样的,仪表板生成的sql表名也是company_sales_record_copy。

这样一来,如果我们的数据集中数据表发生改变,仪表板自然会报错“查询不存在的字段”了。

同理,使用自定义SQL创建的数据集也是如此,在表变更后,仪表板就会报错。

解决方案

那么怎么才能实现生产环境的仪表板不更改呢?下面介绍有两种方法。

方法一:两种情况使用相同的表,不删除原表结构,并在更新表内容新增字段等操作时不更改表名,这样生成的sql就能查询到相应的表,从而实现表结构同步的需求。在数据集点击数据表,在右侧弹出的框中勾选新增的字段并保存数据集,这样在刷新仪表板时也会跟着更新。

方法二:将数据集、仪表板另存为,先创建的数据集、仪表板作为生产环境使用,后另存为的数据集、仪表板作为测试环境使用,生产环境对接的是生产表,生产表更新仪表板会实现同步更新,测试环境更换数据表为测试表,仪表板中报错“查询不存在的字段”但结构还在,我们只需要将相关字段重新拖拽更新即可。

下图为重新拖取字段更新后的仪表板。

这么一来,也做到了优先保生产仪表板的作用,测试仪表板可以后续进行更新。

更多信息

相关文档