Объединение
Объединение — операция объединения двух таблиц в одну.
Две таблицы добавляются друг к другу стопкой со столбцом для каждого уникального имени столбца. Данные не меняются, и получаемая таблица содержит то же количество записей, что и две исходные таблицы вместе. Последовательно можно выполнять несколько операций объединения, при этом итоговая таблица может состоять из двух и более таблиц.
Автоматическое объединение
Если имена полей и число полей в двух и более загруженных таблицах точно совпадают, то программа Qlik Sense автоматически объединит содержимое различных операторов в одну таблицу.
Количество и имена полей должны точно совпадать для выполнения автоматического объединения. Порядок двух операторов LOAD может быть произвольным, но таблице будет присвоено имя таблицы, загруженной первой.
Выполните следующие действия.
- Откройте редактор загрузки данных в приложении Scripting Tutorial.
- Щелкните вкладку Dates.
- Щелкните команду Загрузить данные.
- На новой строке скрипта в разделе Dates скопируйте и вставьте оператор LOAD для Table2. В результате этого данные будут загружены дважды. Присвойте имя второй таблице Table2a.
- Щелкните команду Загрузить данные.
- Откройте раздел Просмотр модели данных.
- Щелкните Показать предварительный просмотр.
Qlik Sense загружает на основе написанного вами скрипта загрузки 628 строк из файла данных Dates.xlsx в Table2.
Можно было бы также удалить существующий скрипт, а затем скопировать и вставить следующее:
Table2:
LOAD
"Date",
Month (Date) as "Month",
Quarter,
"Week",
"Year"
FROM [lib://DataFiles/Dates.xlsx]
(ooxml, embedded labels, table is Dates);
Table2a:
LOAD
"Date",
Month (Date) as "Month",
Quarter,
"Week",
"Year"
FROM [lib://DataFiles/Dates.xlsx]
(ooxml, embedded labels, table is Dates);
Скрипт должен выглядеть следующим образом:
Программа Qlik Sense не загружает Table2, а затем Table2a. Вместо этого она распознает, что Table2a имеет те же имена и количество полей, что и Table2. Затем она добавляет данные Table2a в Table2 и удаляет таблицу Table2a. В результате в таблице Table2 теперь содержится 1 256 строк.
Была создана только таблица Table2. Выберите Table2. В этой таблице имеется 256 строк.
Принудительное объединение
Даже если набор полей в двух и более таблицах совпадает не полностью, в программе Qlik Sense все равно можно объединить эти две таблицы. Это выполняется с помощью префикса Concatenate в скрипте, который объединяет таблицу с другой указанной таблицей или с самой последней созданной таблицей.
Выполните следующие действия.
- Измените оператор LOAD для таблицы Table2a, добавив префикс Concatenate и снабдив комментарием поле Week.
- Щелкните команду Загрузить данные.
- Откройте раздел Просмотр модели данных.
- Щелкните Table2 в просмотре модели данных, а затем щелкните команду Предварительный просмотр.
- Щелкните поле Week в таблице Table2. В предварительном просмотре показывается, что количество ненулевых значений для данного поля равно 628. Однако если щелкнуть любое другое поле, то будет видно, что количество ненулевых значений равняется 1256. Поле Week было загружено из таблицы Table2 только один раз. Количество значений, или записей, представляет собой сумму числа записей в таблицах Table2 и Table2a.
Код скрипта должен выглядеть теперь так:
Table2a:
Concatenate LOAD
"Date",
Month (Date) as "Month",
Quarter,
// "Week",
"Year"
FROM [lib://DataFiles/Dates.xlsx]
(ooxml, embedded labels, table is Dates);
Добавив комментарий полю Week, мы можем быть уверены, что таблицы не одинаковы.
Теперь вы видите, что таблица Table2a не создана.
В данной таблице имеются поля Date, Month, Quarter, Week и Year. Поле Week все еще отображается, поскольку оно было загружено из таблицы Table2.
Предотвращение объединения
Если имена полей и число полей в двух и более загруженных таблицах точно совпадают, то программа Qlik Sense автоматически объединит содержимое различных операторов в одну таблицу. Это можно предотвратить с помощью оператора NoConcatenate. Таблица, загруженная с помощью соответствующего оператора LOAD или SELECT, впоследствии не будет объединена с существующей таблицей.
Выполните следующие действия.
- Чтобы можно было полностью разделить содержимое двух таблиц, добавьте префикс NoConcatenate к оператору LOAD в таблице Table2a и переименуйте соответствующие поля таким образом, чтобы программа Qlik Sense не создавала синтетический ключ, основанный на сопоставлении полей. Удалите комментарий для Week в таблице Table2, чтобы две таблицы имели одинаковые поля.
- Щелкните команду Загрузить данные.
- Откройте раздел Просмотр модели данных.
- Теперь по завершении демонстрации объединения таблица Table2a нам больше не нужна. Удалите все строки в операторе LOAD для таблицы Table2a, а затем щелкните Загрузить данные.
Код скрипта должен выглядеть теперь так:
Table2:
LOAD
"Date",
Month (Date) as "Month",
Quarter,
"Week",
"Year"
FROM [lib://DataFiles/Dates.xlsx]
(ooxml, embedded labels, table is Dates);
Table2a:
NoConcatenate LOAD
"Date" as "Date2",
Month (Date) as "Month2",
Quarter as "Quarter2",
"Week" as "Week2",
"Year" as "Year2"
FROM [lib://DataFiles/Dates.xlsx]
(ooxml, embedded labels, table is Dates);
Теперь две таблицы полностью разделены.