# 部分加载

完全重新加载总是从删除现有数据模型中的所有表开始，然后运行加载脚本。

局部重新加载没有该作用。相反，它会保留数据模型中的所有表格，然后仅执行 Load 和 Select 语句，这些语句带有前缀 Add、Merge 或 Replace 前缀。其他数据表不受该命令的影响。only 参数表示只应在部分重新加载期间执行该语句，而在完全重新加载期间应忽略该语句。下表总结了部分和完全重新加载的语句执行情况。

| 语句 | 完全重新加载 | 部分加载 |
| --- | --- | --- |
| Load ... | 语句将会运行 | 语句将不会运行 |
| 添加/替换/合并加载 ... | 语句将会运行 | 语句将会运行 |
| 添加/替换/仅合并加载 ... | 语句将不会运行 | 语句将会运行 |

与完全重新加载相比，部分重新加载有几个好处：

* 速度更快，因为只需要加载最近更改的数据。对于大数据集，差异是显著的。

* 因为加载的数据更少，所以消耗的内存更少。

* 更可靠，因为对源数据的查询运行速度更快，减少了网络问题的风险。

信息注释要使部分重新加载正常工作，必须在触发部分重新加载之前使用数据打开应用程序。

使用重新加载按钮执行部分重新加载。 有关详细信息，请参阅[按钮](https://help.qlik.com/zh-CN/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Visualizations/Button/button.htm)。您还可使用Qlik Engine JSON API。

## 限制

如果在完全重新加载期间存在引用表的命令，但在部分重新加载期间没有，则部分重新加载将失败。

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/PartialReload.htm)

#### 示例

### 示例命令

```
LEFT JOIN(<Table_removed_after_full_reload>)
```

```
CONCATENATE(<Table_removed_after_full_reload>)
```

其中，&lt;Table\_removed\_after\_full\_reload&gt; 是一个存在于完全重新加载中但不存在于部分重新加载中的表。

### 解决方法

作为解决方法，可以使用以下 if 语句围绕命令：

```
IF NOT IsPartialReload() THEN ... ENDIF.
```

部分重新加载可以从数据中删除值。但是，这不会反映在不同值的列表中，这是一个内部维护的表。因此，在部分重新加载后，列表将包含自上次完全重新加载以来字段中存在的所有不同值，这些值可能会超过部分重新加载后当前存在的值。这会影响 FieldValueCount() 和 FieldValue() 函数的输出。FieldValueCount() 可能返回一个大于当前字段值数量的数字。

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/PartialReload.htm)

#### 示例

## 示例 1

### 加载脚本

将示例脚本添加到您的应用程序并进行部分重新加载。要查看结果，请将结果列中列出的字段添加到应用程序中的工作表。

```
T1:
Add only Load distinct recno()+10 as Num autogenerate 10;      
```

### 结果

Resulting table

| Num | Count(Num) |
| --- | --- |
| 11 | 1 |
| 12 | 1 |
| 13 | 1 |
| 14 | 1 |
| 15 | 1 |
| 16 | 1 |
| 17 | 1 |
| 18 | 1 |
| 19 | 1 |
| 20 | 1 |

### 解释

该语句仅在部分重新加载期间执行。如果省略了“distinct”前缀，则 Num 字段的计数将随着后续每次部分重新加载而增加。

## 示例 2

### 加载脚本

将示例脚本添加到您的应用程序。执行完全重新加载并查看结果。接下来，进行部分重新加载并查看结果。要查看结果，将结果列中列出的字段添加到您的应用程序中的工作表。

```

T1:
Load recno() as ID, recno() as Value autogenerate 10;

T1:
Replace only Load recno() as ID, repeat(recno(),3) as Value autogenerate 10; 
```

### 结果

Output table after full reload

| ID | Value |
| --- | --- |
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
| 6 | 6 |
| 7 | 7 |
| 8 | 8 |
| 9 | 9 |
| 10 | 10 |

Output table after partial reload

| ID | Value |
| --- | --- |
| 1 | 111 |
| 2 | 222 |
| 3 | 333 |
| 4 | 444 |
| 5 | 555 |
| 6 | 666 |
| 7 | 777 |
| 8 | 888 |
| 9 | 999 |
| 10 | 101010 |

### 解释

第一个表在完全重新加载期间加载，第二个表在部分重新加载期间仅替换第一个表。

[Load](https://help.qlik.com/zh-CN/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm)

[Select](https://help.qlik.com/zh-CN/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Select.htm)

[Add](https://help.qlik.com/zh-CN/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Add.htm)

[合并](https://help.qlik.com/zh-CN/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Merge.htm)

[Replace](https://help.qlik.com/zh-CN/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Replace.htm)