Префикс join объединяет загруженную таблицу с существующей таблицей, для которой задано имя, или с последней созданной таблицей данных.
Эффект объединения данных заключается в расширении целевой таблицы дополнительным набором полей или атрибутов, а именно теми, которых еще нет в целевой таблице. Любые общие имена полей между исходным набором данных и целевой таблицей используются для определения того, как связать новые входящие записи. Это обычно называют «естественным соединением». Операция Qlik соединения может привести к тому, что результирующая целевая таблица будет иметь больше или меньше записей, чем она содержала в начале, в зависимости от уникальности ассоциации соединения и используемого типа соединения.
Существует четыре типа соединений:
Left join
Левые соединения являются наиболее распространенным типом соединений. Например, если имеется набор данных о транзакциях и требуется объединить его со справочным набором данных, обычно используется Left Join. Сначала загружается таблица транзакций, а затем справочный набор данных, который присоединяется через префикс Left Join к уже загруженной таблице транзакций. Left Join сохранит все транзакции как есть и добавит дополнительные поля справочных данных, где найдено совпадение.
Inner join
Если имеется два набора данных, где вас интересуют только результаты, в которых есть совпадающая связь, попробуйте использовать Inner Join. Это приведет к удалению всех записей как из загруженных исходных данных, так и из целевой таблицы, если совпадений не будет найдено. В результате в целевой таблице может остаться меньше записей, чем было до выполнения операции соединения.
Outer join
Если требуется сохранить как целевые записи, так и все входящие записи, используйте Outer Join. Если совпадений не найдено, каждый набор записей по-прежнему сохраняется, а поля с противоположной стороны объединения остаются незаполненными (null).
Если ключевое слово type опущено, внешнее соединение является типом соединения по умолчанию.
Right join
Этот тип соединения сохраняет все записи, которые должны быть загружены, при этом количество записей в целевой таблице объединения, сокращается, так как включаются только те записи, для которых есть совпадающая связь во входящих записях. Это нишевый тип соединения, который иногда используется как средство сокращения предварительно загруженной таблицы записей до требуемого подмножества.
Примечание к информацииЕсли между исходной и целевой таблицей операции соединения нет общих имен полей, результатом соединения будет декартово произведение всех строк — это называется «перекрестным соединением».
Синтаксис:
[inner | outer | left | right ]Join[ (tablename )
]( loadstatement | selectstatement )
Аргументы
Аргумент
Описание
tablename
Будет выполнено сравнение именованной таблицы с загруженной таблицей.
Префикс загрузки Keep подобен префиксу Join, но он не соединяет исходный и целевой наборы данных. Вместо этого он обрезает каждый набор данных в соответствии с типом принятой операции (внутреннее, внешнее, левое или правое соединение).
Пример 1. Левое соединение: дополнение целевой таблицы справочным набором данных
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, представляющий записи об изменениях, который загружается в таблицу под именем Changes. Она включает ключевое поле Status ID.
Второй набор данных, представляющий состояния изменений, который загружается и объединяется с исходными записями об изменениях путем левого соединения с использованием префикса загрузки left Join.
Это левое соединение гарантирует, что записи об изменениях останутся нетронутыми при добавлении атрибутов состояния, когда поиск совпадения во входящих записях состояния осуществляется на основе общего идентификатора состояния (столбец Status ID).
Скрипт загрузки
Changes:
Load * inline [
Change ID Status ID Scheduled Start Date Scheduled End Date Business Impact
10030 4 19/01/2022 23/02/2022 None
10015 3 04/01/2022 15/02/2022 Low
10103 1 02/04/2022 29/05/2022 Medium
10185 2 23/06/2022 08/09/2022 None
10323 1 08/11/2022 26/11/2022 High
10326 2 11/11/2022 05/12/2022 None
10138 2 07/05/2022 03/08/2022 None
10031 3 20/01/2022 25/03/2022 Low
10040 1 29/01/2022 22/04/2022 None
10134 1 03/05/2022 08/07/2022 Low
10334 2 19/11/2022 06/02/2023 Low
10220 2 28/07/2022 06/09/2022 None
10264 1 10/09/2022 17/10/2022 Medium
10116 1 15/04/2022 24/04/2022 None
10187 2 25/06/2022 24/08/2022 Low
] (delimiter is '\t');
Status:
Left Join (Changes)
Load * inline [
Status ID Status Sub Status
1 Open Not Started
2 Open Started
3 Closed Completed
4 Closed Cancelled
5 Closed Obsolete
] (delimiter is '\t');
Результаты
Откройте средство просмотра модели данных и обратите внимание на форму модели данных. Присутствует только одна денормализованная таблица. Это комбинация всех исходных записей об изменениях с соответствующими атрибутами состояния, присоединенными к каждой записи об изменении.
Результирующая внутренняя модель данных
Changes (Изменения)
Change ID (ИД изменения)
Status ID (ИД состояния)
Scheduled Start Date (Запланированная дата начала)
Scheduled End Date (Запланированная дата окончания)
Business Impact (Воздействие на бизнес)
Состояние
Sub Status (Дополнительное состояние)
Если развернуть окно предварительного просмотра в средстве просмотра модели данных, в нем будет отображаться увидите часть этого полного набора результатов, организованного в виде таблицы:
Предварительный просмотр таблицы Changes в средстве просмотра модели данных
Change ID (ИД изменения)
Status ID (ИД состояния)
Scheduled Start Date (Запланированная дата начала)
Scheduled End Date (Запланированная дата окончания)
Business Impact (Воздействие на бизнес)
Состояние
Sub Status (Дополнительное состояние)
10030
4
19/01/2022
23/02/2022
Отсутствует
Closed
Отменено
10031
3
20/01/2022
25/03/2022
Низкое
Closed
Завершено
10015
3
04/01/2022
15/02/2022
Низкое
Closed
Завершено
10103
1
02/04/2022
29/05/2022
Средний
Открыть
Not Started
10116
1
15/04/2022
24/04/2022
Отсутствует
Открыть
Not Started
10134
1
03/05/2022
08/07/2022
Низкое
Открыть
Not Started
10264
1
10/09/2022
17/10/2022
Средний
Открыть
Not Started
10040
1
29/01/2022
22/04/2022
Отсутствует
Открыть
Not Started
10323
1
08/11/2022
26/11/2022
Высокое
Открыть
Not Started
10187
2
25/06/2022
24/08/2022
Низкое
Открыть
Выполнение начато
10185
2
23/06/2022
08/09/2022
Отсутствует
Открыть
Выполнение начато
10220
2
28/07/2022
06/09/2022
Отсутствует
Открыть
Выполнение начато
10326
2
11/11/2022
05/12/2022
Отсутствует
Открыть
Выполнение начато
10138
2
07/05/2022
03/08/2022
Отсутствует
Открыть
Выполнение начато
10334
2
19/11/2022
06/02/2023
Низкое
Открыть
Выполнение начато
Так как пятая строка в таблице Status (Status ID: '5', Status: 'Closed', Sub Status: 'Obsolete') не соответствует ни одной записи а таблице Changes, информация в этой строке не отображается в приведенном выше наборе результатов.
Откройте редактор загрузки данных. Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение: Status.
Добавьте эту меру:
=Count([Change ID])
Теперь можно проверить количество изменений по состоянию.
Результирующая таблица
Состояние
=Count([Change ID])
Открыть
12
Closed
3
Пример 2. Внутреннее соединение: соединение только совпадающих записей
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, представляющий записи об изменениях, который загружается в таблицу под именем Changes.
Второй набор данных, представляющий записи об изменениях из исходной системы JIRA. Он загружается и объединяется с исходными записями путем соединения с использованием префикса загрузки Inner Join.
Это Inner Join гарантирует, что будут сохранены только пять записей об изменениях, найденных в обоих наборах данных.
Скрипт загрузки
Changes:
Load * inline [
Change ID Status ID Scheduled Start Date Scheduled End Date Business Impact
10030 4 19/01/2022 23/02/2022 None
10015 3 04/01/2022 15/02/2022 Low
10103 1 02/04/2022 29/05/2022 Medium
10185 2 23/06/2022 08/09/2022 None
10323 1 08/11/2022 26/11/2022 High
10326 2 11/11/2022 05/12/2022 None
10138 2 07/05/2022 03/08/2022 None
10031 3 20/01/2022 25/03/2022 Low
10040 1 29/01/2022 22/04/2022 None
10134 1 03/05/2022 08/07/2022 Low
10334 2 19/11/2022 06/02/2023 Low
10220 2 28/07/2022 06/09/2022 None
10264 1 10/09/2022 17/10/2022 Medium
10116 1 15/04/2022 24/04/2022 None
10187 2 25/06/2022 24/08/2022 Low
] (delimiter is '\t');
JIRA_changes:
Inner Join (Changes)
Load
[Ticket ID] AS [Change ID],
[Source System]
inline
[
Ticket ID Source System
10000 JIRA
10030 JIRA
10323 JIRA
10134 JIRA
10334 JIRA
10220 JIRA
20000 TFS
] (delimiter is '\t');
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
Source System
Change ID
Business Impact
Теперь можно просмотреть пять полученных записей. Результирующая таблица из Inner Join будет включать только записи, содержащие совпадающую информацию в обоих наборах данных.
Результирующая таблица
Source System (Исходная система)
Change ID (ИД изменения)
Business Impact (Воздействие на бизнес)
JIRA
10030
Отсутствует
JIRA
10134
Низкое
JIRA
10220
Отсутствует
JIRA
10323
Высокое
JIRA
10334
Низкое
Пример 3. Внешнее соединение: соединение перекрывающихся наборов записей
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, представляющий записи об изменениях, который загружается в таблицу под именем Changes.
Второй набор данных, представляющий записи об изменениях из исходной системы JIRA, который загружается и объединяется с исходными записями путем соединения с использованием префикса загрузки Outer Join.
Это гарантирует сохранение всех перекрывающихся записей об изменениях из обоих наборов данных.
Скрипт загрузки
// 8 Change records
Changes:
Load * inline [
Change ID Status ID Scheduled Start Date Scheduled End Date Business Impact
10030 4 19/01/2022 23/02/2022 None
10015 3 04/01/2022 15/02/2022 Low
10138 2 07/05/2022 03/08/2022 None
10031 3 20/01/2022 25/03/2022 Low
10040 1 29/01/2022 22/04/2022 None
10134 1 03/05/2022 08/07/2022 Low
10334 2 19/11/2022 06/02/2023 Low
10220 2 28/07/2022 06/09/2022 None
] (delimiter is '\t');
// 6 Change records
JIRA_changes:
Outer Join (Changes)
Load
[Ticket ID] AS [Change ID],
[Source System]
inline
[
Ticket ID Source System
10030 JIRA
10323 JIRA
10134 JIRA
10334 JIRA
10220 JIRA
10597 JIRA
] (delimiter is '\t');
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
Source System
Change ID
Business Impact
Теперь можно просмотреть 10 полученных записей.
Результирующая таблица
Source System (Исходная система)
Change ID (ИД изменения)
Business Impact (Воздействие на бизнес)
JIRA
10030
Отсутствует
JIRA
10134
Низкое
JIRA
10220
Отсутствует
JIRA
10323
-
JIRA
10334
Низкое
JIRA
10597
-
-
10015
Низкое
-
10031
Низкое
-
10040
Отсутствует
-
10138
Отсутствует
Пример 4. Правое соединение: сокращение целевой таблицы вторичным основным набором данных
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, представляющий записи об изменениях, который загружается в таблицу под именем Changes.
Второй набор данных, представляющий записи об изменениях, происходящие из исходной системы Teamwork. Он загружается и объединяется с исходными записями путем присоединения к нему префикса загрузки Right Join.
Это гарантирует, что будут сохранены только записи об изменениях Teamwork, при этом не будут потеряны никакие записи Teamwork, если в целевой таблице нет соответствующих Change ID.
Скрипт загрузки
Changes:
Load * inline [
Change ID Status ID Scheduled Start Date Scheduled End Date Business Impact
10030 4 19/01/2022 23/02/2022 None
10015 3 04/01/2022 15/02/2022 Low
10103 1 02/04/2022 29/05/2022 Medium
10185 2 23/06/2022 08/09/2022 None
10323 1 08/11/2022 26/11/2022 High
10326 2 11/11/2022 05/12/2022 None
10138 2 07/05/2022 03/08/2022 None
10031 3 20/01/2022 25/03/2022 Low
10040 1 29/01/2022 22/04/2022 None
10134 1 03/05/2022 08/07/2022 Low
10334 2 19/11/2022 06/02/2023 Low
10220 2 28/07/2022 06/09/2022 None
10264 1 10/09/2022 17/10/2022 Medium
10116 1 15/04/2022 24/04/2022 None
10187 2 25/06/2022 24/08/2022 Low
] (delimiter is '\t');
Teamwork_changes:
Right Join (Changes)
Load
[Ticket ID] AS [Change ID],
[Source System]
inline
[
Ticket ID Source System
10040 Teamwork
10015 Teamwork
10103 Teamwork
10031 Teamwork
50231 Teamwork
] (delimiter is '\t');
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!