Перейти к основному содержимому

Объединение

Объединение — операция объединения двух таблиц в одну.

Две таблицы добавляются друг к другу стопкой со столбцом для каждого уникального имени столбца. Данные не меняются, и получаемая таблица содержит то же количество записей, что и две исходные таблицы вместе. Последовательно можно выполнять несколько операций объединения, при этом итоговая таблица может состоять из двух и более таблиц.

Автоматическое объединение

Если имена полей и число полей в двух и более загруженных таблицах точно совпадают, то программа Qlik Sense автоматически объединит содержимое различных операторов в одну таблицу.

Количество и имена полей должны точно совпадать для выполнения автоматического объединения. Порядок двух операторов LOAD может быть произвольным, но таблице будет присвоено имя таблицы, загруженной первой.

  1. Откройте редактор загрузки данных в приложении Scripting Tutorial.
  2. Щелкните вкладку Dates.
  3. Щелкните команду Загрузить данные.
  4. Qlik Sense загружает на основе написанного вами скрипта загрузки 628 строк из файла данных Dates.xlsx в Table2.

    Окно хода выполнения загрузки данных

    Окно хода выполнения загрузки данных
  5. На новой строке скрипта в разделе Dates скопируйте и вставьте оператор LOAD для Table2. В результате этого данные будут загружены дважды. Присвойте имя второй таблице Table2a.
  6. Можно было бы также удалить существующий скрипт, а затем скопировать и вставить следующее:

    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);

    Скрипт должен выглядеть следующим образом:

    Скрипт загрузки на вкладке Dates

    Скрипт загрузки на вкладке Dates.
  7. Щелкните команду Загрузить данные.
  8. Программа Qlik Sense не загружает Table2, а затем Table2a. Вместо этого она распознает, что Table2a имеет те же имена и количество полей, что и Table2. Затем она добавляет данные Table2a в Table2 и удаляет таблицу Table2a. В результате в таблице Table2 теперь содержится 1 256 строк.

    Окно хода выполнения объединения при загрузке данных

     Окно хода выполнения объединения при загрузке данных.
  9. Откройте раздел Просмотр модели данных.
  10. Щелкните Показать предварительный просмотр.
  11. Была создана только таблица Table2. Выберите Table2. В этой таблице имеется 256 строк.

    Просмотр модели данных, отображающий таблицу Table2

    Просмотр модели данных, отображающий таблицу Table2.

Принудительное объединение

Даже если набор полей в двух и более таблицах совпадает не полностью, в программе Qlik Sense все равно можно объединить эти две таблицы. Это выполняется с помощью префикса Concatenate в скрипте, который объединяет таблицу с другой указанной таблицей или с самой последней созданной таблицей.

  1. Измените оператор LOAD для таблицы Table2a, добавив префикс Concatenate и снабдив комментарием поле Week.
  2. Код скрипта должен выглядеть теперь так:

    Table2a: Concatenate LOAD     "Date",     Month (Date) as "Month",     Quarter,     // "Week",     "Year" FROM [lib://DataFiles/Dates.xlsx] (ooxml, embedded labels, table is Dates);

    Добавив комментарий полю Week, мы можем быть уверены, что таблицы не одинаковы.

  3. Щелкните команду Загрузить данные.
  4. Откройте раздел Просмотр модели данных.
  5. Теперь вы видите, что таблица Table2a не создана.

  6. Щелкните Table2 в просмотре модели данных, а затем щелкните команду Предварительный просмотр.
  7. В данной таблице имеются поля Date, Month, Quarter, Week и Year. Поле Week все еще отображается, поскольку оно было загружено из таблицы Table2.

  8. Щелкните поле Week в таблице Table2. В предварительном просмотре показывается, что количество ненулевых значений для данного поля равно 628. Однако если щелкнуть любое другое поле, то будет видно, что количество ненулевых значений равняется 1256. Поле Week было загружено из таблицы Table2 только один раз. Количество значений, или записей, представляет собой сумму числа записей в таблицах Table2 и Table2a.

Предотвращение объединения

Если имена полей и число полей в двух и более загруженных таблицах точно совпадают, то программа Qlik Sense автоматически объединит содержимое различных операторов в одну таблицу. Это можно предотвратить с помощью оператора NoConcatenate. Таблица, загруженная с помощью соответствующего оператора LOAD или SELECT, впоследствии не будет объединена с существующей таблицей.

  1. Чтобы можно было полностью разделить содержимое двух таблиц, добавьте префикс NoConcatenate к оператору LOAD в таблице Table2a и переименуйте соответствующие поля таким образом, чтобы программа Qlik Sense не создавала синтетический ключ, основанный на сопоставлении полей. Удалите комментарий для Week в таблице Table2, чтобы две таблицы имели одинаковые поля.
  2. Код скрипта должен выглядеть теперь так:

    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);			

  3. Щелкните команду Загрузить данные.
  4. Откройте раздел Просмотр модели данных.
  5. Теперь две таблицы полностью разделены.

    Просмотр модели данных, отображающий таблицы Table2 и Table 2a

    Просмотр модели данных, отображающий таблицы Table2 и Table 2a.
  6. Теперь по завершении демонстрации объединения таблица Table2a нам больше не нужна. Удалите все строки в операторе LOAD для таблицы Table2a, а затем щелкните Загрузить данные.