# Concatenate

`Concatenate` — это префикс загрузки скрипта, который позволяет добавлять набор данных в уже существующую в памяти таблицу. Он часто используется для добавления разных наборов транзакционных данных в одну центральную таблицу фактов или для создания общих справочных наборов данных определенного типа на основе нескольких источников. По функциональным возможностям он напоминает оператор SQL UNION.

Таблица, полученная в результате операции `concatenate`, будет содержать исходный набор данных с новыми строками данных, добавленными в конце этой таблицы. В исходной и целевой таблицах могут присутствовать несовпадающие поля. Когда поля не совпадают, результирующая таблица будет расширена путем объединения всех полей, имеющихся в исходной и целевой таблицах.

Синтаксис:

Concatenate[ (tablename ) ] ( loadstatement | selectstatement )

Аргументы

| Аргумент | Описание |
| --- | --- |
| ` tablename  ` | Имя существующей таблицы. Таблица с указанным именем будет целью для операции `Concatenate`, и все загруженные записи данных будут добавлены в эту таблицу. Если параметр `tablename` не задан, в качестве целевой будет использована таблица, загруженная последней перед этим оператором. |
| ` loadstatement/selectstatement  ` | Аргумент `loadstatement/selectstatement`, который следует за аргументом `tablename`, будет объединен с указанной таблицей. |

## Региональные настройки

Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: MM/DD/YYYY. Формат даты указан в операторе `SET DateFormat` скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами. Для получения дополнительной информации см. раздел [Изменение региональных настроек для приложений и скриптов](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm).

Региональные настройки по умолчанию в приложениях основаны на профиле пользователя. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Cloud. Qlik Cloud будет отображаться на языке, который используется в браузере.

Если вы — разработчик приложений, то можете задать регион по умолчанию для создаваемых приложений. Для получения дополнительной информации см. раздел [Установка предпочтительных региональных настроек для создания приложений и скриптов в Аналитика Qlik Cloud](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting).

Пример функции

| Пример | Результат |
| --- | --- |
| `Concatenate(Transactions)<br><br>Load …. ;` | Данные, загруженные при выполнении оператора load под префиксом `Concatenate`, будут добавлены в существующую в памяти таблицу под именем `Transactions` (предполагается, что таблица под именем `Transactions` уже загружена до этого этапа скрипта загрузки). |

## Пример 1. Добавление нескольких наборов данных в целевую таблицу с помощью префикса загрузки Concatenate

[](https://help.qlik.com/en-US/cloud-services/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 | 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 |

В таблице отображается первоначальный набор данных.

Второй скрипт загрузки

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки.

```

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 | 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 | - |
| 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 | Внешний |

Обратите внимание на нулевые значения (null) в поле `type` для первых семи загруженных записей, где не был определен `type`.

## Пример 2. Добавление нескольких наборов данных в целевую таблицу путем неявного объединения

[](https://help.qlik.com/en-US/cloud-services/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/ru-RU/cloud-services/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 | date | тип | amount |
| --- | --- | --- | --- |
| 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 | date | тип | amount |
| --- | --- | --- | --- |
| 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 |

Выполнено неявное объединение второго набора данных с первоначальным, так как они имеют идентичные поля.