Один из ключевых моментов в приложениях Qlik – формирование правильной модели данных и связей между таблицами. Раньше, в QlikView, модель данных видел только разработчик, но с выходом Qlik Sense работа с моделью данных упростилась и доступна при помощи визуального интерфейса.

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

В Qlik Sense встроена функция проверки значений, то есть при первой загрузке данных, даже если названия полей не совпадают, Qlik Sense сделает предложения о связывании похожих полей. Такой функционал особенно полезен для начинающего разработчика Qlik Sense.

Давайте рассмотрим популярный пример, когда у нас есть модель данных, которая может стать причиной затруднений при разработке:

Qlik Data Challenge

Затруднение:

У нас в модели данных есть две ссылочные таблицы:

  1. Календарь (Calendar)
  2. Клиенты (CustomerRef)

И две факт-таблицы:

  1. Заказы (Orders)
  2. Платежи (Payments)

С первого взгляда, все выглядит нормально, но при создании синтетических ключей могут возникнуть такие вопросы:

  • Если пользователи выберут даты из календаря и выполнят функции суммы выплат, то, по идее, должны показаться все выплаченные суммы за этот период. Но это не совсем так – пользователь увидит выплаченные суммы по заказанным единицам товара не зависимо от периода оплаты.
  • Для большого объема данных наличие двух таблиц оплата и календарь будет увеличивать нагрузку, то есть такое приложение будет съедать много оперативки на вычисления.

Итак, в этом случае имеет смысл объединить таблицы платежи и заказы – в одну.

Join: Объединение

Чтобы объединить наши таблицы в одну, нужно создать таблицу связи.

Qlik Joining Tables

Таблица связи будет использовать ключевое поле OrdersAndPayments, она будет загружаться в новую таблицу с датам по счетам-фактурам, а затем будет отображать данные по датам заказа:

Qlik Link Table

Так, мы создадим таблицу связи, в которой при выборе даты 1 ноября 2016, будут показаны результаты и для заказов, и для продаж по выбранной дате.

Qlik Link Table

Concatenate: Объединить

Объединение таблиц с общим полем в одну колонку поможет выполнить функции сцепления. В процессе выполнения Concatenate мы создадим новое поле в двух таблицах, которое будет иметь одинаковое название.

Qlik Table Concatenation Script

Получим такой итог:

concatenate table view

Расширим код для CustomerID с помощью функции applymap, чтобы найти CustomerID, которое принадлежит к значению столбца PO Number.

Qlik Applymap Function

Новая таблица NewConcatTable включает CustomerID для всех таблиц:

concatenate table view

Далее укажем такое поле %KeyDate, что скроет его для пользователя.

Qlik Concatenation

Заключение

Какой способ лучше выбрать? И тот, и другой имеет свои плюсы и минусы.

Join подходит в том случае, если в двух полях вы будете делать вычисления (из разных таблиц) в скрипте. Но нужно помнить о дублировании ссылок.

Concatenate – простейший способ объединить две и более таблиц вместе, но при этом может теряться важный функционал Qlik – ассоциативность.

На этом все на сегодня! Качественных вам разработок!