# Concatenate

`Concatenate` 是一个脚本加载前缀，使数据集能够附加到内存中已存在的表中。它通常用于将不同的事务数据集附加到单个中心事实表，或构建源自多个源的特定类型的公共引用数据集。它的功能类似于 SQL UNION 运算符。

`concatenate` 操作的结果表将包含原始数据集，新的数据行附加到该表的底部。源表和目标表可能存在不同的字段。如果字段不同，则结果表将加宽，以表示源表和目标表中所有字段的组合结果。

语法：

Concatenate[ (tablename ) ] ( loadstatement | selectstatement )

参数

| 参数 | 说明 |
| --- | --- |
| ` tablename  ` | 现有表格的名称。命名表将是 `Concatenate`操作的目标，加载的任何数据记录都将附加到该表中。如果未使用 `tablename` 参数，则目标表将是此语句之前最后加载的表。 |
| ` loadstatement/selectstatement  ` | `tablename` 参数后面的 `loadstatement/selectstatement` 参数将连接到指定的表。 |

## 区域设置

除非另有规定，本主题中的示例使用以下日期格式：MM/DD/YYYY。日期格式已经在数据加载脚本中的 `SET DateFormat` 语句中指定。由于区域设置和其他因素，系统中的默认日期格式可能有所不同。您可以更改以下示例中的格式以满足您的要求。或者，您可以更改加载脚本中的格式以匹配这些示例。

应用程序中的默认区域设置基于安装 Qlik Sense 的计算机或服务器的区域系统设置。如果您访问的 Qlik Sense 服务器设置为瑞典，则数据加载编辑器将使用瑞典地区设置的日期、时间和货币。这些区域格式设置与 Qlik Sense 用户界面中显示的语言无关。Qlik Sense 将以与您使用的浏览器相同的语言显示。

函数

| 示例 | 结果 |
| --- | --- |
| `Concatenate(Transactions)<br><br>Load …. ;` | 在 `Concatenate` 前缀下面的 LOAD 语句中加载的数据将附加到名为 `Transactions` 的现有内存表中（假定在加载脚本中的这一点之前已加载了名为 `Transactions` 的表）。 |

## 示例 1 – 将多组数据附加到具有级联加载前缀的目标表

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

#### 加载脚本和结果

概述

在本例中，您将按顺序加载两个脚本。

* 第一个加载脚本包含一个初始数据集，其中包含发送到名为 `Transactions` 的表的日期和金额。

* 第二个加载脚本包含：

  * 通过使用 `Concatenate` 前缀附加到初始数据集的第二个数据集。此数据集有一个附加字段 `type`，该字段不在初始数据集中。
  * `Concatenate` 前缀。

打开数据加载编辑器，并将下面的加载脚本添加到新选项卡。

第一个加载脚本

```

Transactions: 
Load * Inline [ 

id, date, amount 
3750, 08/30/2018, 23.56 
3751, 09/07/2018, 556.31 
3752, 09/16/2018, 5.75 
3753, 09/22/2018, 125.00 
3754, 09/22/2018, 484.21 
3756, 09/22/2018, 59.18 
3757, 09/23/2018, 177.42 
]; 
```

结果

加载数据并打开工作表。创建新表并将这些字段添加为维度：

* `id`

* `date`

* `amount`

第一个加载脚本结果表

| id | 日期 | 金额 |
| --- | --- | --- |
| 3750 | 08/30/2018 | 23.56 |
| 3751 | 09/07/2018 | 556.31 |
| 3752 | 09/16/2018 | 5.75 |
| 3753 | 09/22/2018 | 125.00 |
| 3754 | 09/22/2018 | 484.21 |
| 3756 | 09/22/2018 | 59.18 |
| 3757 | 09/23/2018 | 177.42 |

该表显示了初始数据集。

第二个加载脚本

打开数据加载编辑器，并添加下面的加载脚本。

```

Concatenate(Transactions) 
Load * Inline [ 
id, date, amount, type 
3758, 10/01/2018, 164.27, Internal 
3759, 10/03/2018, 384.00, External 
3760, 10/06/2018, 25.82, Internal 
3761, 10/09/2018, 312.00, Internal 
3762, 10/15/2018, 4.56, Internal 
3763, 10/16/2018, 90.24, Internal 
3764, 10/18/2018, 19.32, External 
]; 
```

结果

加载数据并转到工作表。将此字段创建为维度：

* `type`

第二个加载脚本结果表

| id | 日期 | 金额 | 类型 |
| --- | --- | --- | --- |
| 3750 | 08/30/2018 | 23.56 | - |
| 3751 | 09/07/2018 | 556.31 | - |
| 3752 | 09/16/2018 | 5.75 | - |
| 3753 | 09/22/2018 | 125.00 | - |
| 3754 | 09/22/2018 | 484.21 | - |
| 3756 | 09/22/2018 | 59.18 | - |
| 3757 | 09/23/2018 | 177.42 | - |
| 3758 | 10/01/2018 | 164.27 | 内部 |
| 3759 | 10/03/2018 | 384.00 | 外部 |
| 3760 | 10/06/2018 | 25.82 | 内部 |
| 3761 | 10/09/2018 | 312.00 | 内部 |
| 3762 | 10/15/2018 | 4.56 | 内部 |
| 3763 | 10/16/2018 | 90.24 | 内部 |
| 3764 | 10/18/2018 | 19.32 | 外部 |

请注意 `type` 字段中未定义 `type` 的加载的前七条记录的空值。

## 示例 2 – 使用隐式串联将多组数据附加到目标表

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

#### 加载脚本和结果

概述

隐式附加数据的一个典型用例是，当您加载几个结构相同的数据文件并希望将它们全部附加到目标表中时可使用它。

例如，通过在文件名中使用 `wildcards`，语法为：

```
	 myTable: 
	  Load * from [myFile_*.qvd] (qvd); 
						
```

或使用结构如下的循环：

```

	for each file in filelist('myFile_*.qvd') 

	myTable: 
	Load * from [$(file)] (qvd); 

	next file 
```

信息注释隐式串联将发生在加载了同名字段的任何两个表之间，即使它们没有在脚本中逐个定义。这可能导致数据被无意地附加到表中。如果不希望以这种方式附加具有相同字段的辅助表，请使用 `NoConcatenate` 加载前缀。使用备用表名标记重命名表不足以防止发生隐式串联。有关更多信息，请参阅[NoConcatenate](https://help.qlik.com/zh-CN/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/NoConcatenate.htm)。

在本例中，您将按顺序加载两个脚本。

* 第一个加载脚本包含一个带四个字段的初始数据集，该数据集被发送到名为 `Transactions` 的表。

* 第二个加载脚本包含与第一个数据集具有相同字段的数据集。

打开数据加载编辑器，并将下面的加载脚本添加到新选项卡。

第一个加载脚本

```

Transactions: 
Load * Inline [ 
id, date, amount, type 
3758, 10/01/2018, 164.27, Internal 
3759, 10/03/2018, 384.00, External 
3760, 10/06/2018, 25.82, Internal 
3761, 10/09/2018, 312.00, Internal 
3762, 10/15/2018, 4.56, Internal 
3763, 10/16/2018, 90.24, Internal 
3764, 10/18/2018, 19.32, External 
]; 
```

结果

加载数据并打开工作表。创建新表并将这些字段添加为维度：

* `id`

* `date`

* `amount`

* `type`

第一个加载脚本结果表

| id | 日期 | 类型 | 金额 |
| --- | --- | --- | --- |
| 3758 | 10/01/2018 | 内部 | 164.27 |
| 3759 | 10/03/2018 | 外部 | 384.00 |
| 3760 | 10/06/2018 | 内部 | 25.82 |
| 3761 | 10/09/2018 | 内部 | 312.00 |
| 3762 | 10/15/2018 | 内部 | 4.56 |
| 3763 | 10/16/2018 | 内部 | 90.24 |
| 3764 | 10/18/2018 | 外部 | 19.32 |

该表显示了初始数据集。

第二个加载脚本

打开数据加载编辑器，并添加下面的加载脚本。

```

Load * Inline [ 
id, date, amount, type 
3765, 11/03/2018, 129.40, Internal 
3766, 11/05/2018, 638.50, External 
]; 
```

结果

加载数据并转到工作表。

第二个加载脚本结果表

| id | 日期 | 类型 | 金额 |
| --- | --- | --- | --- |
| 3758 | 10/01/2018 | 内部 | 164.27 |
| 3759 | 10/03/2018 | 外部 | 384.00 |
| 3760 | 10/06/2018 | 内部 | 25.82 |
| 3761 | 10/09/2018 | 内部 | 312.00 |
| 3762 | 10/15/2018 | 内部 | 4.56 |
| 3763 | 10/16/2018 | 内部 | 90.24 |
| 3764 | 10/18/2018 | 外部 | 19.32 |
| 3765 | 11/03/2018 | 内部 | 129.40 |
| 3766 | 11/05/2018 | 外部 | 638.50 |

第二个数据集隐式串联到初始数据集，因为它们具有相同的字段。