---
url: /v6.2/dataset-schema.md
---
# 数据集更新

当数据库中的表定义发生变化时，需要更新衡石系统中的数据集配置，才能通过数据集正确高效的访问数据库表，需要用到`更新schema`的功能。
当数据集导入了衡石引擎，数据库中该表的数据发生了变化，需要把数据也更新到衡石引擎中，才能保证数据分析的时效性，需要用到`更新数据`的功能。

![](/images/data-management/dataset-schema-001.png)

## 更新 schema

当数据库中的表定义发生下面几种类型的变化时，我们需要用到`更新schema`的功能，修改数据集中记录的字段配置信息。

* 列类型发生变化\
  数据库中表的字段类型发生变化，`更新schema`之后，系统记录的字段原始类型会随之变化。如果当前类型可以被转化成旧的类型，那么该字段的使用不会受到影响，衡石系统会自动完成字段类型的转换；如果当前类型和旧的类型不兼容，访问数据集的时候会报错，需要用户在衡石系统中把该字段的类型修改成兼容的类型。
* 列名称发生变化\
  数据库中表的字段名称发生变化，`更新schema`之后，系统会把旧名称的字段删除，把新名称的字段添加进来。如果旧的字段没有被引用，那么这个操作没有任何影响；如果旧的字段被引用了，衡石系统在使用到的地方会提示"字段名称\*\*\*不存在"，需要用户手动修正旧字段的使用。
* 列注释发生变化\
  数据库中表的字段注释发生变化，`更新schema`之后，系统记录的原始字段描述会随之变化。
* 增加列\
  数据库中某一表新增了部分字段，要在 HENGSHI 系统中查看新增字段时，必须更新数据，更新后新增的字段不出现在数据管理页中，在字段管理中的“已隐藏字段”分组中列出这些字段，由用户自定义是否显示该字段。
* 删除列\
  数据库中表的字段名称发生变化，`更新schema`之后，系统会把旧名称的字段删除。如果旧的字段没有被引用，那么这个操作没有任何影响；如果旧的字段被引用了，衡石系统在使用到的地方会提示"字段名称\*\*\*不存在"，需要用户手动修正旧字段的使用。

更新 schema 有两种方式：

* 使用数据集页面`数据信息`里的`更新schema`按钮。
* 使用`编辑数据集`功能。

## 数据更新

当数据库中行数据更新时，如果数据集开启了`导入引擎`，需要使用`数据更新`功能，保证数据的时效性。如果数据集没有`导入引擎`，是不需要使用`数据更新`功能的。数据更新涉及到数据集页面`数据信息`里的`立即更新`、`更新计划`、`更新设置`的功能。

### 立即更新

点击`立即更新`，数据集开始更新，此时，更新状态为“正在更新”，更新状态后的时间记录了等待更新的时长，开始更新后，统计更新“已耗费”的时间。
![](/images/data-management/dataset-schema-002.png)

### 更新计划

设定更新计划后，数据集在设定的时间点同步数据库中表的变化。点击`更新计划`，在弹出的窗口中列出了执行计划设置项，勾选‘开启执行计划’，按需添加更新计划，包括基本信息、调度信息、告警信息。更新完成后，`更新时间`始终显示最近一次完成更新的时间。

* 开启执行计划：勾选表示开启，不勾选表示无执行计划。
* 忽略上游数据集触发的更新事件：仅对复合数据集生效，比如多表联合数据集、合并数据集、聚合数据集、行专列数据集、列转行数据集等。勾选表示当上游数据集刷新时，本数据集的刷新也会被启动；不勾选表示当上游数据集刷新时，本数据集的刷新不会被启动，本数据集按照自己的执行计划进行。
* 基本信息：设置执行时重试次数及任务的优先级。任务优先级分高、中、低三个级别。高级别的任务优先处理。
* 调度信息：
  * 设置任务的调度时间，可设置多个调度时间。 支持按小时、天、周、月的方式设置执行计划。
    * 小时：可设置每小时的第几分钟更新。
    * 天：可以设置每天具体的时间点更新。
    * 周：可以设置每周的周几的具体时间点更新，可以多选。
    * 月：可以设置每月的第几天的具体时间点更新，可以多选。
    * 自定义：可以自行设置更新的时间点。
  * 设置任务的前置依赖，可设置多个前置依赖任务。
  * 设置依赖等待时间。
* 告警信息：开启失败告警，当任务执行失败后，会以邮件形式通知到收件人。

![](/images/data-management/dataset-schema-004.png)
如上图所示，设定每周的周一0：15分更新。点击“确定”，完成更新计划的设定。

> \[!TIP] 提示
> 系统管理员进入`系统设置->任务管理->数据集更新->修改计划`来重新定义某个数据集的更新计划。详见[任务管理](task-management.md)。

> \[!CAUTION] 请注意
> 数据集更新失败时，更新状态显示为“更新失败”，请点击“立即更新”或者联系管理员。

### 更新设置

点开更新设置，弹出数据更新方式，用户可以根据需要选择全量更新还是增量更新。全量更新保证了数据准确性，而增量更新注重提升数据更新的效率。

![](/images/data-management/dataset-schema-005.png)

* 更新方式
  * 全量更新是指更新数据集全部内容。全量更新准确性高，适用于数据量小、更新频率低的数据集。
  * 增量更新是指更新数据集部分内容，用户通过指定增量字段，决定更新哪些数据内容。适用于数据量大、更新频率高的数据集。
    * 增量更新仅适用于通过[“sql 查询/直连”](dataset-sqlscript.md)方式建立的数据集。
    * 增量字段建议选择数字、日期、时间字段，方便进行比对，确认哪些数据需要更新。
* 键字段：键字段用来做主键和分布键。键字段有两个功能。
  * 增量更新时用来做主键。
  * 建表时用来做主键和分布键。 在建表时如果设置建表属性，优先使用建表属性的配置，键字段此时不生效。
* 建表属性：在数据同步表创建过程中自定义分区字段和索引字段，对数据进行分散存储。 建表属性仅在第一次建表时生效。 目前支持建表属性的数据源包括 Greenplum、Apache Doris、StarRocks 和 ClickHouse。

#### 数据分批更新

当更新的数据量比较大时，更新时间可能超过了源数据库的查询时间，导致数据更新失败。此时可以通过配置项 ETL_SRC_MYSQL_PAGE_SIZE 设置一次更新数据的最大上限，当超过该上限时数据进行分批更新。数据分批更新适用增量更新、设置键字段的全量更新场景，目前只有 MySQL 数据源支持数据分批更新。

> \[!TIP] 提示
> 请联系技术人员配置 ETL_SRC_MYSQL_PAGE_SIZE。

## 更新管理

数据集更新支持应用更新管理和数据集更新管理。

### 应用更新管理

应用更新管理是对应用内的数据集统一进行更新管理，设置更新计划。具体步骤如下。

1. 在数据集列表页面点击`数据集更新`按钮，进入应用更新管理页面。
   ![](/images/data-management/dataset-schema-006.png)
2. 应用更新管理页面显示应用的数据集大小、应用数据集的更新频率、更新时间、更新状态、启用计划、应用更新的数据集个数等信息。
   ![](/images/data-management/dataset-schema-008.png)
3. 点击数据集更新管理页面，在**应用更新时更新**一栏勾选需要包含在应用整体更新范围内的数据集。
   ![](/images/data-management/dataset-schema-007.png)
4. 返回应用更新管理页面，**更新数据集**一栏中显示步骤3中勾选的应用整体更新的数据集数量。
5. 点击操作的三点菜单，设置更新方式。
   * 选择[立即更新](#立即更新)时，应用更新范围内的数据集立刻开始更新操作。
   * 选择[更新计划](#更新计划)时，应用更新范围内的数据集按照约定的计划进行更新。
6. 点击三点菜单的更新记录查看数据集更新历史。

### 数据集更新管理

数据集更新管理页面显示应用内的单个数据集的更新设置信息。这里可以对数据集进行立即更新、设置更新计划、查看更新记录、查看更新状态、确认下次更新时间，进行更新设置，还可以控制数据集是否与应用一起更新。
![](/images/data-management/dataset-schema-009.png)

## 数据集加载失败

在数据连接不可用等情况下，会出现数据集加载失败的问题，光标悬在加载失败的提示上可以看到失败原因。
