# 并行登陆数据集片段

在满负载期间，您可以通过将数据集拆分为并行加载的段来加速大型数据集的加载。表可以按数据范围、所有分区、所有子分区或特定分区进行拆分。

信息注释如果您使用的是 数据移动网关 ，则从 2024.5.35 版本开始会支持此特性。

每个数据集段都使用单独的子任务加载。因此，在决定如何分割数据集时，您应该始终考虑数据库和网络资源的可用性。将表拆分为太多段可能会影响数据库性能并使网络容量过载。如果您选择使用分区数据集的数据范围分割方法，最佳做法是设置范围，使每个范围覆盖一个或多个完整分区。这将加快数据检索，并最大限度地减少对数据库处理资源的影响。

## 支持的数据源和目标

必须使用以下数据源和目标连接器的组合来定义数据任务。

支持的数据源连接器

* IBM DB2 for LUW

* IBM DB2 for z/OS

  信息注释

  IBM DB2 for z/OS 源连接器不支持按分区或子分区进行表分段。

* Microsoft SQL Server（基于日志）

* MySQL

* oracle

* PostgreSQL

  信息注释

  PostgreSQL 源连接器不支持按分区或子分区进行表分段。

* SAP （应用程序）

  信息注释

  默认情况下，具有 SAP（应用程序）源端点的表依赖于客户端。MANDT 列直接自动从连接器中取用。

* SAP HANA（数据库）

支持的目标连接器

* Amazon Redshift
* Google Cloud BigQuery
* Microsoft Fabric
* Microsoft SQL Server
* Snowflake
* Databricks - 如果使用 数据移动网关，则需要 2025.11.1 或更高版本。

## 设置并行加载

您可以使用两种方法之一拆分表格：数据范围 或分区。数据范围方法按数据范围拆分表格，而分区方法则按分区拆分表格。

### 使用数据范围方法

要按数据范围定义段边界，请执行以下操作：

1. 选择数据范围分割方法。

2. 单击选择列。

   表分段列对话框随即打开。

3. 对于所有支持的数据源，将自动选择“唯一索引”列。选择要使用哪些其他数据列来划分范围，然后单击确定。

   信息注释

   * 建议使用不允许 NULL 且在正常源数据库操作期间不更新的列（例如，主键列或具有固定日期的日期列）。使用在满载期间更新的列可能会导致目标数据库中出现重复项。

   * 建议使用索引源列，因为这将优化数据检索性能。

   * 最多可选择十列

   * 具有空值的记录将不会被复制

   * 以下数据类型不能用于按范围定义段：DOUBLE、FLOAT 和 LOB（BLOB、CLOB、NCLOB）

4. 单击添加数据范围以添加数据范围段。

   添加数据范围对话框将打开并显示所选列。

5. 对于每一列，输入段的上部数据范围。

   信息注释

   必须以源支持的格式输入 DATE 列中的值。例如，对于 Oracle 源代码，正确的格式为：

   * ALTER SESSION SET NLS\_DATE\_FORMAT:

     `'YYYY-MM-DD HH24:MI:SS'`（指定仅 `YYYY-MM-DD` 也有效）

   * ALTER SESSION SET NLS\_TIMESTAMP\_FORMAT:

     `'YYYY-MM-DD HH24:MI:SS.FF9'`

   * ALTER SESSION SET NLS\_TIMESTAMP\_TZ\_FORMAT:

     `'YYYY-MM-DD HH24:MI:SS.FF9 TZH:TZM'`

6. 单击确定保存设置并关闭对话框。

   每个选定的列都将显示其指定的范围。

7. 根据需要重复步骤 3-6 以添加列和数据范围。

8. 单击验证，确认输入的数据与源列数据类型一致，且所有定义的段都包含值。

信息注释

使用数据范围分段方法，即使没有为所有列定义数据范围，也会复制所有表数据。

编辑数据范围：

1. 单击行末尾的 the 更多图标 icon 菜单，然后选择编辑。
2. 根据需要编辑数据范围，然后单击确定以保存更改。

删除数据范围：

1. 单击行末尾的 the 更多图标 icon 菜单，然后选择删除。
2. 当提示确认删除时，单击删除。

#### 使用示例

假设定义了以下分段：

数据表示例

| Column\_1 | Column\_2 | Column\_3 |
| --- | --- | --- |
| 10 | 30 | 105 |
| 20 | 20 | 120 |
| 100 | 12 | 99 |

在这种情况下，将为每个负载段创建以下“WHERE”子句：

* 分段 1：`((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105)))`
* 分段 2：`NOT ((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105))) AND ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120)))`
* 分段 3：`NOT ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 30) AND (COL2 = 20) AND (COL3 < 120))) AND ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))`
* 分段 4：`NOT ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))`

### 使用分区法

您可以按所有表分区、表的所有子分区（如果数据源支持子分区）或特定分区定义段边界。

信息注释

* 仅当数据集已分区时，才能使用此方法。
* 如果您有一个在此功能发布之前就存在的任务，并且您尚未启动该任务，或者想使用此方法并行重新加载一个或多个表，则首先需要刷新元数据，如 [注册数据平台上已存在的数据](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Onboarding/Registering-data.htm) 中所述（本主题中描述的元数据刷新过程对所有类型的数据任务都是相同的）。

#### 使用所有分区

要按所有表分区或子分区定义段边界，请执行以下操作：

1. 在数据集 选项卡中，单击数据集右侧的 the 设置 icon 菜单并选择。

   此时将打开并行加载对话框。

2. 选择分区分割方法。

3. 请选择以下选项之一：

   * 使用所有主分区

   * 使用所有子分区

     信息注释

     如果数据源不支持子分区，则此选项将被禁用。

4. 单击确定。

#### 使用特定分区

要按特定分区定义分段边界，请执行以下操作：

1. 在数据集 选项卡中，单击数据集右侧的 the 设置 icon 菜单并选择。

   此时将打开并行加载对话框。

2. 选择分区分割方法。

3. 选择指定分区。

   信息注释

   选择指定分区时，将仅复制指定的分区。

4. 单击添加分区。

   随即打开添加分区对话框。

5. 指定现有分区或子分区的名称。

   如果要添加子分区，请选择子分区复选框。

6. 单击确定保存设置。

7. 根据需要重复步骤 4-6 以添加分区或子分区。

要编辑分区，请执行以下操作：

1. 单击行末尾的 the 更多图标 icon 菜单，然后选择编辑。
2. 根据需要编辑分区信息，然后单击确定以保存更改。

要删除分区，请执行以下操作：

1. 单击行末尾的 the Catmore icon 菜单，然后选择删除。
2. 当提示确认删除时，单击删除。

## 调整可以并行加载的段数

您可以增加或减少并行加载的段数。值继承自数据任务设置中的满负载 &gt; 性能调整 &gt; 并行加载的最大表数字段。当前值显示在并行加载对话框中的 "最多可并行加载 &lt;n&gt; 个段 "字符串中。当数据集被拆分为许多段时，增加数量可能会提高性能，但也会给数据库资源和网络容量带来更大的压力。

信息注释每个段都使用专用的子任务加载，因此，例如，如果您选择使用所有主分区选项，并且源数据集有 20 个主分区，将并行加载的最大表数值增加到 15 将导致并行加载 15 个段（分区）。当子任务完成运行时，将分配它们以加载剩余的 5 个分区