---
order: 2
---
# 缓慢变化数据提取

数据仓库中一般使用缓慢变化表来记录数据随着时间的流失发生的缓慢变化过程，加工模型支持直接使用当前快照数据更新缓慢变化表的提取方式，即**插入缓慢变化数据并自动更新起止时间**。

示例说明：企业信息缓慢变化表的增量提取

具体操作步骤如下：

1. 输入表为当前全量的企业快照数据

![输入表](./images/2020-03-13-14-27-02.png)

2. 设置目标表的主键和数据期类型

![设置主键和数据期类型](./images/2020-03-13-14-28-41.png)

3. 设置提取方式为插入缓慢变化数据并自动更新起止时间

![设置提取方式](./images/2020-03-13-14-29-23.png)

## 处理规则{#processrules}

**插入缓慢变化数据并自动更新起止时间**是特定的用于目标表是缓慢变化表的增量数据提取方式，其具体含义是将当前加工结果与目标表（缓慢变化中当前数据）按照主键（除去缓慢变化起、止字段）进行数据比对， 并依据如下规则进行处理：

1. 如果指定的**记录变化**的字段中有任意一个发生了修改，则视为数据发生变化，系统将目标表中对应数据的缓慢变化止时间修改为当前加工结果对应数据的缓慢变化起时间-1。
2. 如果指定的**记录变化**的字段中没有任何字段发生修改，则将不做任何处理。
3. 如果数据在目标表中有而当前加工结果没有，则视为数据被删除，系统将目标表中对应数据的缓慢变化止时间更新为当前时间-1
4. 如果数据在当前加工结果中有而目标表有效数据中没有，则视为新增数据，直接将当前加工结果中对应的数据插入到目标表中。

::: tip 注意

- 插入缓慢变化数据并自动更新起止时间是针对于缓慢变化特有的方式，故提取方式中能选择该方式的前提是模型属性中已经设置了模型的[数据期类型](../../data-gov/model/model-settings.md)为**缓慢变化**且指定了**缓慢变化起**和**缓慢变化止**字段。

- 数据比对过程依赖模型主键，所以模型必须要设置有主键。如果未设置主键，提取会报未设置主键的错误。

- 因处理规则3，故要求当前加工的结果数据必须是目标模型在当前时刻的全量快照数据，否则会被标记为删除。

- 因缓慢变化提取依赖主键进行逻辑处理，当前加工的结果快照数据必须是主键唯一的，否则会导致提取过程报错或造成目标表数据混乱。
  :::

## 记录变化{#recordchanges}

**记录变化**用来设置哪些字段将被纳入缓慢变化中，只有纳入缓慢变化中的字段发生了修改，才会被认定数据发生缓慢变化。该下拉框中可选用三种方式之一来指定记录变化的字段：

- 所有字段的变化
- 指定字段的变化
- 忽略指定字段的变化

只有**所有字段的变化**不需要再通过**指定字段**下拉框设置字段。
