NoConcatenate
Префикс NoConcatenate определяет, что две загруженные таблицы с идентичными наборами полей будут обрабатываться как две отдельные внутренние таблицы вместо автоматического объединения.
Синтаксис:
NoConcatenate( loadstatement | selectstatement )
Если загружается таблица, содержащая идентичное количество полей с такими же именами, как в таблице, загруженной скриптом ранее, то Qlik Sense по умолчанию объединит эти две таблицы. Это произойдет, даже если вторая таблица имеет другое имя.
Однако если префикс скрипта NoConcatenate добавлен перед оператором load или оператором второй таблицы, то эти две таблицы будут загружаться по отдельности.
Типичным примером применения NoConcatenate является случай, когда необходимо создать временную копию таблицы, чтобы выполнить некоторые временные преобразования в копии, сохраняя неизмененными первоначальные данные. NoConcatenate позволяет создать такую копию, исключив ее неявное добавление в исходную таблицу.
Региональные настройки
Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе SET DateFormat скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами.
Региональные настройки по умолчанию в приложениях основаны на системных региональных настройках компьютера или сервера, где установлено ПО Qlik Sense. Если на сервере Qlik Sense, к которому обращается пользователь, выбран шведский язык, то редактор загрузки данных будет использовать шведские региональные настройки для даты, времени и валюты. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Sense. Qlik Sense будет отображаться на языке, который используется в браузере.
Пример | Результат |
---|---|
Source: LOAD A,B from file1.csv; CopyOfSource: NoConcatenate LOAD A,B resident Source; |
Загружена таблица с мерами A и B. Вторая таблица с такими же полями загружается отдельно с использованием переменной NoConcatenate. |
Пример 1. Неявное объединение
Обзор
В этом примере будут добавлены два скрипта загрузки, один за другим.
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
-
Первоначальный набор данных с датами и суммами, который отправляется в таблицу под именем Transactions.
Первый скрипт загрузки
Transactions:
LOAD
*
Inline [
id, date, amount
1, 08/30/2018, 23.56
2, 09/07/2018, 556.31
3, 09/16/2018, 5.75
4, 09/22/2018, 125.00
5, 09/22/2018, 484.21
6, 09/22/2018, 59.18
7, 09/23/2018, 177.42
];
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
-
id
-
date
-
amount
id | date | amount |
---|---|---|
1 | 08/30/2018 | 23.56 |
2 | 09/07/2018 | 556.31 |
3 | 09/16/2018 | 5.75 |
4 | 09/22/2018 | 125.00 |
5 | 09/22/2018 | 484.21 |
6 | 09/22/2018 | 59.18 |
7 | 09/23/2018 | 177.42 |
Второй скрипт загрузки
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
-
Второй набор данных с идентичными полями отправляется в таблицу под именем Sales.
Sales:
LOAD
*
Inline [
id, date, amount
8, 10/01/2018, 164.27
9, 10/03/2018, 384.00
10, 10/06/2018, 25.82
11, 10/09/2018, 312.00
12, 10/15/2018, 4.56
13, 10/16/2018, 90.24
14, 10/18/2018, 19.32
];
Результаты
Загрузите данные и откройте таблицу.
id | date | amount |
---|---|---|
1 | 08/30/2018 | 23.56 |
2 | 09/07/2018 | 556.31 |
3 | 09/16/2018 | 5.75 |
4 | 09/22/2018 | 125.00 |
5 | 09/22/2018 | 484.21 |
6 | 09/22/2018 | 59.18 |
7 | 09/23/2018 | 177.42 |
8 | 10/01/2018 | 164.27 |
9 | 10/03/2018 | 384.00 |
10 | 10/06/2018 | 25.82 |
11 | 10/09/2018 | 312.00 |
12 | 10/15/2018 | 4.56 |
13 | 10/16/2018 | 90.24 |
14 | 10/18/2018 | 19.32 |
Когда выполняется скрипт, таблица Sales неявно объединяется с существующей таблицей Transactions, так как в двух наборах данных содержится одинаковое количество полей с идентичными именами. Это происходит несмотря на то, что тег имени второй таблицы пытается присвоить результирующему набору имя ‘Sales’.
Чтобы подтвердить неявное объединение набора данных Sales, проверьте записи в журнале Выполнение загрузки данных.
Пример 2. Сценарий применения
Обзор
В этом сценарии применения имеется следующее:
-
Набор данных Transactions, включающий следующие поля:
-
id
-
date
-
amount (in GBP)
-
-
Таблица Currency, включающая:
-
Курс обмена долларов США (USD) на британские фунты (GBP)
-
-
Второй набор данных Transactions, включающий следующие поля:
-
id
-
date
-
amount (в USD)
-
Будут загружены пять скриптов, один за другим.
-
Первый скрипт загрузки содержит первоначальный набор данных с датами и суммами в британских фунтах (GBP), который отправляется в таблицу под именем Transactions.
-
Второй скрипт загрузки содержит следующее:
-
Второй набор данных с датами и суммами в долларах США (USD), который отправляется в таблицу под именем Transactions_in_USD.
-
Префикс noconcatenate, добавленный перед оператором load набора данных Transactions_in_USD для предотвращения неявного объединения.
-
-
Третий скрипт загрузки содержит префикс join, который будет использоваться для создания курса обмена валют между британскими фунтами и долларами США в таблице Transactions_in_USD.
-
Четвертый скрипт загрузки содержит префикс concatenate, который добавляет Transactions_in_USD в первоначальную таблицу Transactions.
-
Пятый скрипт загрузки содержит оператор drop table, который удалит таблицу Transactions_in_USD после объединения ее данных с таблицей Transactions.
Первый скрипт загрузки
Transactions:
Load * Inline [
id, date, amount
1, 12/30/2018, 23.56
2, 12/07/2018, 556.31
3, 12/16/2018, 5.75
4, 12/22/2018, 125.00
5, 12/22/2018, 484.21
6, 12/22/2018, 59.18
7, 12/23/2018, 177.42
];
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
- id
- date
- amount
id | date | amount |
---|---|---|
1 | 12/30/2018 | 23.56 |
2 | 12/07/2018 | 556.31 |
3 | 12/16/2018 | 5.75 |
4 | 12/22/2018 | 125.00 |
5 | 12/22/2018 | 484.21 |
6 | 12/22/2018 | 59.18 |
7 | 12/23/2018 | 177.42 |
В таблице отображается первоначальный набор данных с суммами в британских фунтах (GBP).
Второй скрипт загрузки
Transactions_in_USD:
NoConcatenate
Load * Inline [
id, date, amount
8, 01/01/2019, 164.27
9, 01/03/2019, 384.00
10, 01/06/2019, 25.82
11, 01/09/2019, 312.00
12, 01/15/2019, 4.56
13, 01/16/2019, 90.24
14, 01/18/2019, 19.32
];
Результаты
Загрузите данные и откройте таблицу.
id | date | amount |
---|---|---|
1 | 12/30/2018 | 23.56 |
2 | 12/07/2018 | 556.31 |
3 | 12/16/2018 | 5.75 |
4 | 12/22/2018 | 125.00 |
5 | 12/22/2018 | 484.21 |
6 | 12/22/2018 | 59.18 |
7 | 12/23/2018 | 177.42 |
8 | 01/01/2019 | 164.27 |
9 | 01/03/2019 | 384.00 |
10 | 01/06/2019 | 25.82 |
11 | 01/09/2019 | 312.00 |
12 | 01/15/2019 | 4.56 |
13 | 01/16/2019 | 90.24 |
14 | 01/18/2019 | 19.32 |
Обратите внимание, что добавлен второй набора данных из таблицы Transactions_in_USD.
Третий скрипт загрузки
Этот скрипт загрузки объединяет курс обмена долларов США (USD) на британские фунты (GBP) в таблицу Transactions_in_USD.
Join (Transactions_in_USD)
Load * Inline [
rate
0.7
];
Результаты
Загрузите данные и откройте просмотр модели данных. Выберите таблицу Transactions_in_USD, и обратите внимание, что для каждой существующей записи добавлено значение поля rate, равное 0.7.
Четвертый скрипт загрузки
Используя резидентную загрузку, этот скрипт загрузки объединит таблицы Transactions_in_USD и Transactions после перевода сумм в доллары США (USD).
Concatenate (Transactions)
LOAD
id,
date,
amount * rate as amount
Resident Transactions_in_USD;
Результаты
Загрузите данные и откройте таблицу. Появятся новые записи с суммами в британских фунтах (GBP) из строк 8 — 14.
id | date | amount |
---|---|---|
1 | 12/30/2018 | 23.56 |
2 | 12/07/2018 | 556.31 |
3 | 12/16/2018 | 5.75 |
4 | 12/22/2018 | 125.00 |
5 | 12/22/2018 | 484.21 |
6 | 12/22/2018 | 59.18 |
7 | 12/23/2018 | 177.42 |
8 | 01/01/2019 | 114.989 |
8 | 01/01/2019 | 164.27 |
9 | 01/03/2019 | 268.80 |
9 | 01/03/2019 | 384.00 |
10 | 01/06/2019 | 18.074 |
10 | 01/06/2019 | 25.82 |
11 | 01/09/2019 | 218.40 |
11 | 01/09/2019 | 312.00 |
12 | 01/15/2019 | 3.192 |
12 | 01/15/2019 | 4.56 |
13 | 01/16/2019 | 63.168 |
13 | 01/16/2019 | 90.24 |
14 | 01/18/2019 | 13.524 |
14 | 01/18/2019 | 19.32 |
Пятый скрипт загрузки
Этот скрипт загрузки удалит повторяющиеся записи из таблицы результатов четвертого скрипта загрузки, оставляя только записи с суммами в британских фунтах (GBP).
drop tables Transactions_in_USD;
Результаты
Загрузите данные и откройте таблицу.
id | date | amount |
---|---|---|
1 | 12/30/2018 | 23.56 |
2 | 12/07/2018 | 556.31 |
3 | 12/16/2018 | 5.75 |
4 | 12/22/2018 | 125.00 |
5 | 12/22/2018 | 484.21 |
6 | 12/22/2018 | 59.18 |
7 | 12/23/2018 | 177.42 |
8 | 01/01/2019 | 114.989 |
9 | 01/03/2019 | 268.80 |
10 | 01/06/2019 | 18.074 |
11 | 01/09/2019 | 218.40 |
12 | 01/15/2019 | 3.192 |
13 | 01/16/2019 | 63.168 |
14 | 01/18/2019 | 13.524 |
После выполнения пятого скрипта загрузки в таблице результатов отображаются все 14 транзакций, которые существовали в обоих наборах данных транзакций. Однако для транзакций 8-14 суммы переведены в британские фунты (GBP).
Если убрать префикс NoConcatenate, который стоял перед Transactions_in_USD во втором скрипте загрузки, выполнение скрипта завершится ошибкой «Таблица Transactions_in_USD не найдена». Это связано с тем, что в таком случае таблица Transactions_in_USD будет автоматически объединена с первоначальной таблицей Transactions.