# Concatenate

`Concatenate` to prefiks ładowania skryptu, który umożliwia dołączenie zestawu danych do tabeli znajdującej się w pamięci. Często używa się go w celu dołączania różnych zestawów danych transakcyjnych do jednej centralnej tabeli faktów lub do budowy wspólnych zestawów danych odniesienia określonego typu, które pochodzą z wielu źródeł. Jego funkcjonalność jest podobna do sposobu działania operatora SQL UNION.

Tabela wyników operacji `concatenate` będzie zawierała oryginalny zestaw danych z nowymi wierszami danych dołączonymi na końcu. Tabele źródłowa i docelowa mogą zawierać różne pola. Tam, gdzie pola się różnią, tabela wynikowa zostanie rozszerzona w celu zaprezentowania połączonego wyniku wszystkich pól obecnych zarówno w tabeli źródłowej, jak i docelowej.

Składnia:

Concatenate[ (tablename ) ] ( loadstatement | selectstatement )

Argumenty

| Argument | Opis |
| --- | --- |
| ` tablename  ` | Nazwa istniejącej tabeli. Wymieniona tabela będzie tabelą docelową operacji `Concatenate` i wszystkie rekordy załadowanych danych zostaną dodane do tej tabeli. Jeśli parametr `tablename` nie zostanie użyty, tabela docelowa będzie ostatnią załadowaną tabelą przed tym poleceniem. |
| ` loadstatement/selectstatement  ` | Argument `loadstatement/selectstatement` znajdujący się za argumentem `tablename` zostanie dołączony do określonej tabeli. |

## Ustawienia regionalne

Jeżeli nie podano inaczej, w przykładach w tym temacie stosowany jest następujący format daty: MM/DD/YYYY. Format daty jest określony w instrukcji `SET DateFormat` w skrypcie ładowania danych. Domyślny format daty w Twoim systemie może być inny ze względu na ustawienia regionalne i inne czynniki. Formaty zastosowane w przykładach można zmienić, aby dostosować je do własnych wymagań. Zamiast tego można też zmienić formaty w skrypcie ładowania, aby pasowały do tych przykładów. Więcej informacji można znaleźć w temacie [Modyfikowanie ustawień regionalnych na potrzeby aplikacji i skryptów](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm).

Domyślne ustawienia regionalne w aplikacjach są oparte na profilu użytkownika. Te ustawienia regionalne nie są związane z językiem wyświetlanym w interfejsie użytkownika Qlik Cloud. Interfejs Qlik Cloud będzie wyświetlany w tym samym języku co używana przeglądarka.

Jeżeli jesteś twórcą aplikacji, możesz wybrać domyślny region dla tworzonych przez siebie aplikacji. Więcej informacji zawiera temat [Ustawianie preferowanych ustawień regionalnych do tworzenia aplikacji i skryptów w Analityka Qlik Cloud](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting).

Przykład funkcji

| Przykład | Wynik |
| --- | --- |
| `Concatenate(Transactions)<br><br>Load …. ;` | Dane załadowane w instrukcji LOAD pod przedrostkiem `Concatenate` zostaną dodane do istniejącej w pamięci tabeli o nazwie `Transactions` (przy założeniu, że tabela o nazwie `Transactions` została wcześniej załadowana w skrypcie ładowania). |

## Przykład 1 – Dołączanie kilku zestawów danych do tabeli docelowej za pomocą przedrostka ładowania Concatenate

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

#### Skrypt ładowania i wyniki

Przegląd

W tym przykładzie załadujemy dwa skrypty po kolei.

* Pierwszy skrypt ładowania zawiera początkowy zestaw danych zawierający daty i kwoty, który został wysłany do tabeli o nazwie `Transactions`.

* Drugi skrypt ładowania zawiera następujące elementy:

  * Drugi zestaw danych, który jest dołączony do pierwszego za pomocą przedrostka `Concatenate`. Ten zestaw danych ma dodatkowe pole, `type`, którego nie ma w pierwszym zestawie danych.
  * Prefiks `Concatenate`.

Otwórz edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.

Pierwszy skrypt ładowania

```

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 
]; 
```

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

* `id`

* `date`

* `amount`

Tabela wyników pierwszego skryptu ładowania

| id | date | kwota |
| --- | --- | --- |
| 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 |

Tabela przedstawia pierwszy zestaw danych.

Drugi skrypt ładowania

Otwórz edytor ładowania danych i poniżej dodaj skrypt ładowania.

```

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 
]; 
```

Wyniki

Załaduj dane i przejdź do arkusza. Utwórz to pole jako wymiar:

* `type`

Tabela wyników drugiego skryptu ładowania

| id | date | kwota | typ |
| --- | --- | --- | --- |
| 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 | Wewnętrzny |
| 3759 | 10/03/2018 | 384.00 | Zewnętrzne |
| 3760 | 10/06/2018 | 25.82 | Wewnętrzny |
| 3761 | 10/09/2018 | 312.00 | Wewnętrzny |
| 3762 | 10/15/2018 | 4.56 | Wewnętrzny |
| 3763 | 10/16/2018 | 90.24 | Wewnętrzny |
| 3764 | 10/18/2018 | 19.32 | Zewnętrzne |

Zwróć uwagę na puste wartości w polu `type` dla siedmiu pierwszych załadowanych rekordów, w których nie zdefiniowano argumentu `type`.

## Przykład 2 – Dołączanie kilku zestawów danych do tabeli docelowej za pomocą konkatenacji niejawnej

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

#### Skrypt ładowania i wyniki

Przegląd

Typowy przypadek użycia niejawnego dodawania danych to sytuacja, w której ładujemy kilka plików danych o identycznej strukturze i chcemy dołączyć je wszystkie do tabeli docelowej.

Na przykład przy użyciu `wildcards` w nazwach plików przy użyciu następującej składni:

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

lub w pętlach wykorzystujących następujące konstrukcje:

```

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

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

	next file 
```

InformacjaKonkatenacja niejawna zostanie wykonana między każdymi dwiema załadowanymi tabelami, które mają pola o identycznych nazwach, nawet jeśli nie są one zdefiniowane jedna po drugiej w skrypcie. To może doprowadzić do nieumyślnego dodania danych do tabel. Jeśli nie chcesz, aby dodatkowa tabela z identycznymi polami została w ten sposób dołączona, użyj prefiksu ładowania `NoConcatenate`. Zmiana nazwy tabeli przez dodanie alternatywnego znacznika nie wystarczy, aby zapobiec niejawnej konkatenacji. Więcej informacji zawiera temat [NoConcatenate](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/NoConcatenate.htm).

W tym przykładzie załadujemy dwa skrypty po kolei.

* Pierwszy skrypt ładowania zawiera początkowy zestaw danych zawierający cztery pola, który został wysłany do tabeli o nazwie `Transactions`.

* Drugi skrypt ładowania zawiera zestaw danych zawierający te same pola, co pierwszy zestaw danych.

Otwórz edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.

Pierwszy skrypt ładowania

```

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 
]; 
```

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

* `id`

* `date`

* `amount`

* `type`

Tabela wyników pierwszego skryptu ładowania

| id | date | typ | kwota |
| --- | --- | --- | --- |
| 3758 | 10/01/2018 | Wewnętrzny | 164.27 |
| 3759 | 10/03/2018 | Zewnętrzne | 384.00 |
| 3760 | 10/06/2018 | Wewnętrzny | 25.82 |
| 3761 | 10/09/2018 | Wewnętrzny | 312.00 |
| 3762 | 10/15/2018 | Wewnętrzny | 4.56 |
| 3763 | 10/16/2018 | Wewnętrzny | 90.24 |
| 3764 | 10/18/2018 | Zewnętrzne | 19.32 |

Tabela przedstawia pierwszy zestaw danych.

Drugi skrypt ładowania

Otwórz edytor ładowania danych i poniżej dodaj skrypt ładowania.

```

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

Wyniki

Załaduj dane i przejdź do arkusza.

Tabela wyników drugiego skryptu ładowania

| id | date | typ | kwota |
| --- | --- | --- | --- |
| 3758 | 10/01/2018 | Wewnętrzny | 164.27 |
| 3759 | 10/03/2018 | Zewnętrzne | 384.00 |
| 3760 | 10/06/2018 | Wewnętrzny | 25.82 |
| 3761 | 10/09/2018 | Wewnętrzny | 312.00 |
| 3762 | 10/15/2018 | Wewnętrzny | 4.56 |
| 3763 | 10/16/2018 | Wewnętrzny | 90.24 |
| 3764 | 10/18/2018 | Zewnętrzne | 19.32 |
| 3765 | 11/03/2018 | Wewnętrzny | 129.40 |
| 3766 | 11/05/2018 | Zewnętrzne | 638.50 |

Drugi zestaw danych został niejawnie dołączony do pierwszego zestawu, ponieważ oba te zestawy zawierają identyczne pola.