# 注册数据平台上已存在的数据

您可以注册数据平台上已经存在的数据，以整理和转换数据，并创建数据集市。这使您可以使用除 Qlik Talend Data Integration 以外的其他工具提供的数据，例如 Qlik Replicate 或 Stitch。

注册数据时，将创建两个数据任务。

* 注册数据

  注册数据涉及创建视图，以便为创建数据集准备好数据。

* 存储

  这涉及到基于注册数据生成和存储数据集。

  [存储数据集](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Storage/generating-datasets.htm)

当您已注册数据时，可以用多种方式使用生成的数据集。

* 您可以在分析应用程序中使用数据集。

* 您可以创建变换。

* 您可以创建数据集市。

## 注册数据

您可以注册项目中定义的云数据仓库中存在的数据。生成的数据集将存储在同一个云数据仓库中。

有关项目的更多信息，请参阅[创建和管理数据管道项目](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Introduction/Data-projects.htm)。

1. 在项目中，单击创建，然后单击注册数据。

2. 为数据任务添加名称和描述。

   单击下一步。

3. 选择要注册的数据。

   [选择要包含的数据](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Onboarding/Registering-data.htm#Selectin)

   单击下一步。

   显示设置。

4. 选择更新方法中数据的更新方式。

   如果数据是通过 Qlik Replicate 或 Stitch 复制的，请选择增量使用高水印。

   * 使用使用高水印的增量以使用高水印模式增量处理数据更改。如果数据是由 Qlik Replicate（启用了满负载和存储更改）或 Stitch 复制的，则建议使用此方法。

     有关更多信息，请参阅[更新方法](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Onboarding/Registering-data.htm#Loading)。

   * 当数据只加载过一次，或者使用完全重新加载进行更新时，请使用与当前存储进行比较。

5. 预览在摘要中创建的两个数据任务，如果需要，请重命名它们。

   提示注释命名存储数据任务中的数据库模式时使用这些名称。由于模式只能与一个任务关联，请考虑使用唯一的名称，以避免与使用相同数据平台的其他项目中的数据任务发生冲突。

6. 选择是要打开注册的数据任务，还是返回到项目。

   准备好后，单击完成。

现在创建了两个数据任务。要开始复制数据，您需要：

* 准备注册的数据任务。

  在数据任务中单击准备。

  创建工件后，数据任务状态为已注册。

* 准备并运行存储数据任务。

  有关更多信息，请参阅[存储数据集](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Storage/generating-datasets.htm)

## 选择要包含的数据

当您选择要包含的数据时，可以选择特定的表格或视图，或使用选择规则包括或排除表格组。

使用 % 作为通配符来定义架构和表的选择条件。

* %.% 定义所有架构中的所有表。

* Public.% 定义所有架构 Public 中的所有表。

选择条件根据您的选择提供预览。

您现在可以：

* 根据选择条件创建规则以包含或排除一组表。

  单击从选择标准添加规则以创建规则，然后选择包含或排除。

  您可以在选择规则下查看规则。

* 选择一个或多个数据集，然后单击添加选定的数据集。

  您可以在显式选择的数据集下查看添加的数据集。

选择规则仅适用于当前的表和视图集，而不适用于将来添加的表和视图。

您可以刷新任务中的元数据，以与任务的设计视图中源元数据的更改保持一致。对于使用 Metadata manager 的 SaaS 应用程序，必须先刷新 Metadata manager，然后才能刷新数据任务中的元数据。

信息注释此操作仅影响任务的设计视图中的表。

1. 您可以：

   * 单击 ...，然后刷新元数据以刷新任务中所有数据集的元数据。

   * 点击在数据集中的某个数据集上的 ...，然后刷新元数据以刷新单个数据集的元数据。

   您可以在屏幕下部的刷新元数据下查看元数据刷新的状态。通过将光标悬停在 the info button icon 上，您可以看到元数据上次刷新的时间。

2. 准备数据任务才能应用更改。

   准备好数据任务并应用更改后，将从刷新元数据中删除这些更改。

您必须准备使用此任务的存储任务来传播更改。

如果删除列，则会添加一个具有 Null 值的转换，以确保存储不会丢失历史数据。

### 刷新元数据的限制

* 如果数据类型和数据长度相同，则在此之前在同一时隙中具有删除列的重命名将被转换为删除列重命名。

  之前：a b c d

  之后：a c1 d

  在这个例子中，b 被删除，c 被重命名为 c1，b 和 c 具有相同的数据类型和数据长度。

  这将被识别为 b 到 c1 并删除 c 的重命名。

* 即使删除了最后一列，并且其前面的一列被重命名，也无法识别最后一列的重命名。

  之前：a b c d

  之后：a b c1

  在这个例子中，d 被删除，c 被重命名为 c1。

  这将被识别为 c 和 d 的删除，以及 c1 的添加。

* 假设在末尾添加了新列。如果在中间添加与下一列具有相同数据类型的列，则可能会将其解释为删除和重命名。

## 删除任务

如果数据任务未运行，并且同一项目中没有下游任务依赖项，则可以删除该数据任务。

* 在项目的管道项目视图中，单击任务上的the 删除 icon，然后选择。

此任务创建的工件（表和视图）也将被删除，除非您选择保留它们。

信息注释请记住，您保留的工件将不再由该任务更新。

## 查看任务信息

点击菜单栏上的 the 信息 icon 以查看任务信息，例如：

* 所有者

* 空间

* 数据平台

* 项目 ID

* 数据任务运行时 ID

## 注册的数据设置

可以设置注册的数据任务的特性。

* 单击设置。

### 一般设置

* 数据库

  要在目标中使用的数据库。

* 任务模式

  您可以更改数据任务的架构名称。

* 所有表格和视图的前缀

  可以为使用此任务创建的所有表和视图设置前缀。

  信息注释如果要在多个数据任务中使用数据库架构，则必须使用唯一的前缀。

* 发布至目录

  选择此选项可将此版本的数据作为数据集发布到目录。目录内容将在下次准备此任务时更新。

  有关目录的更多信息，请参阅[通过目录工具理解您的数据](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Catalog/catalog-overview.htm)。

### 更新方法

#### 更改检测

* 当数据只加载过一次，或者使用完全重新加载进行更新时，请使用与当前存储进行比较。

* 使用使用高水印的增量以使用高水印方法增量处理数据更改。

  此选项要求所有表都定义了主键。您可以在数据集视图中为缺少主键的表手动定义主键。

#### 增量加载设置

当选择使用高水印的增量时，这些设置可用。

* 如果数据是由具有满负载和存储更改的 Qlik Replicate 任务复制的，请将增量加载设置设置为Qlik Replicate设置。

* 如果数据是通过 Stitch 数据管道复制的，并且源表定义了主键，请将增量加载设置设定为 Stitch 默认设置。

* 否则，请将增量加载设置设置为自定义，然后自己定义设置。

增量加载设置

| 设置 | 自定义 | Qlik Replicate 设置 | Stitch 默认设置 |
| --- | --- | --- | --- |
| 更改表格 | 如果更改在同一个表中，请选择更改在相同表中。<br><br>如果没有，请取消选择更改在同一个表中，并在更改表模式中指定更改表模式。 | ${SOURCE\_TABLE\_NAME}\_\_ct table | 更改在同一表格中 |
| 水印列 | 在名称中设置水印列的名称。 | header\_\_change\_seq | \_SDC\_BATCHED\_AT |
| “起始日期”列 | 您可以通过批次开始时间或使用选定的列来指示“起始日期”。<br><br>如果选择选定的“起始日期”列，则必须定义一个“开始日期”模式。 | header\_\_timestamp | \_SDC\_BATCHED\_AT<br><br>您可以将其更改为通过批处理开始时间指示“起始日期”，也可以选择其他列。 |
| 软删除 | 通过选择更改包括软删除并定义指示表达式，可以在更改中包括软删除。<br><br>如果更改是软删除，则指示表达式的计算结果应为 True。<br><br>示例：${is\_deleted} = 1 | ${header\_\_change\_oper} = 'D' | 通过选择更改包括软删除并定义指示表达式，可以在更改中包括软删除。<br><br>如果更改是软删除，则指示表达式的计算结果应为 True。<br><br>示例：${is\_deleted} = 1 |
| 之前图像 | 通过选择图像之前并定义指示表达式，可以筛选出更改表更改中的之前图像记录。<br><br>如果行包含更新前的图像，则指示表达式的计算结果应为 True。<br><br>示例：${header\_\_change\_oper} = 'B' | ${header\_\_change\_oper} = 'B' | 数据中没有以前的图像记录。 |

## 推荐的 Qlik Replicate 配置

当注册使用存储更改的 Qlik Replicate 任务复制的数据时，建议使用这些 Qlik Replicate 任务设置。

* 应以选项满负载和存储更改配置 Qlik Replicate 任务。

* 在存储更改设置 &gt; 更改表中，确保包含以下更改表格列并使用其默认名称：

  * `[header__]change_seq`

  * `[header__]change_oper`

  * `[header__] timestamp`

* 在存储更改设置 &gt; 更改表格中，将更新内容设置为仅存储之后图像.

  这减少了每次更新的空间，因为不包括之前的图像。如果您不打算使用之前的图像，请使用此选项。

* 在存储更改设置 &gt; 更改表中，将后缀设置为默认值 `__ct`。

* 不要应用以下全局转换：

  * 重命名更改表

  * 重命名更改表方案

* 如果可以更新源表中的主键，请在更改处理调整中启用“更新主键列时 DELETE 和 INSERT”选项。

  旧记录的历史将不会保存在新记录中。

  信息注释该选项自 Qlik Replicate November 2022 起受支持。

## 注册数据任务上的操作

您可以从任务菜单中的任务菜单对注册数据任务执行以下操作。

* 打开

  这将打开数据任务。您可以查看表结构和有关数据任务的详细信息。

* 编辑

  您可以编辑任务的名称和描述，并添加标记。

* 删除

  您可以删除数据任务。

  不会删除源数据。

* 同步数据集

  这将同步无法自动调整的设计更改。

* 重新创建表

  这将从源重新创建数据集。

  信息注释如果个别表存在问题，建议首先尝试重新加载表，而不是重新创建它们。重新创建表可能会导致历史数据丢失。如果存在中断更改，还必须准备使用重新创建的数据任务的下游数据任务，以重新加载数据。

* 存储数据

  您可以创建使用此登陆数据任务中的数据的存储数据任务。

## 设置“起始日期”列时的历史注意事项

如果在下游任务中启用了历史数据，并且使用了“起始日期”列，则不支持回溯。这意味着，如果更改批次包含存储中不存在的记录的旧版本，则更改批次还必须包括该记录的所有新版本。如果不包括较新的版本，它们将被删除。

在这些示例中，存储从一开始就包含以下记录：

| 起始日期 | 名称 | 城市 |
| --- | --- | --- |
| 2/Oct/2023 | Joe | New York |
| 3/Oct/2023 | Joe | London |

示例 1:

如果插入以下更改批次：

| 起始日期 | 名称 | 城市 |
| --- | --- | --- |
| 4/Oct/2023 | Joe | Paris |

正如预期的那样，存储的结果是：

| 起始日期 | 名称 | 城市 |
| --- | --- | --- |
| 2/Oct/2023 | Joe | New York |
| 3/Oct/2023 | Joe | London |
| 4/Oct/2023 | Joe | Paris |

示例 2:

但是，如果在更改批次中插入以下较旧的记录：

| 起始日期 | 名称 | 城市 |
| --- | --- | --- |
| 1/Oct/2023 | Joe | Berlin |

这将导致在存储中删除较新的记录：

| 起始日期 | 名称 | 城市 |
| --- | --- | --- |
| 1/Oct/2023 | Joe | Berlin |

示例 3:

要维护历史记录，更改批次必须包括较新的记录：

| 起始日期 | 名称 | 城市 |
| --- | --- | --- |
| 1/Oct/2023 | Joe | Berlin |
| 2/Oct/2023 | Joe | New York |
| 3/Oct/2023 | Joe | London |

这将确保历史记录也保存在存储中：

| 起始日期 | 名称 | 城市 |
| --- | --- | --- |
| 1/Oct/2023 | Joe | Berlin |
| 2/Oct/2023 | Joe | New York |
| 3/Oct/2023 | Joe | London |

## 注意事项

* 不要在 Stitch 复制中使用历史记录选项。使用选项将历史数据保存在 Qlik Talend Data Integration 中。

* 使用 VARIANT、JSON 和 SUPER 数据类型的列会被转换为 JSON。

* 如果使用 Client-Managed 网关，则需要 Data Movement gateway 2024.11.78 或更高版本，才能发现 JSON 数据类型。

## 数据容量考虑事项

* 如果注册的表没有主键，则每次运行都会执行完全重新加载。这将计入您每月注册的数据容量配额。这是因为存储将需要比较所有记录才能找到更改。

* 已注册数据的数据容量会在存储中计入。这意味着注册数据中的删除被转换为存储的插入或更新（软删除），并计入数据容量。

* 如果在两个存储数据任务中使用来自已注册数据的表，则软删除、插入和更新将在数据容量中计入两次。