Один из ключевых моментов в приложениях Qlik – формирование правильной модели данных и связей между таблицами. Раньше, в QlikView, модель данных видел только разработчик, но с выходом Qlik Sense работа с моделью данных упростилась и доступна при помощи визуального интерфейса.
Qlik автоматически связывает таблицы, в которых есть идентичные названия полей. Когда пользователи делают выборки в значении поля, то будут показаны только связанные записи с выборкой.
В Qlik Sense встроена функция проверки значений, то есть при первой загрузке данных, даже если названия полей не совпадают, Qlik Sense сделает предложения о связывании похожих полей. Такой функционал особенно полезен для начинающего разработчика Qlik Sense.
Давайте рассмотрим популярный пример, когда у нас есть модель данных, которая может стать причиной затруднений при разработке:
Затруднение:
У нас в модели данных есть две ссылочные таблицы:
- Календарь (Calendar)
- Клиенты (CustomerRef)
И две факт-таблицы:
- Заказы (Orders)
- Платежи (Payments)
С первого взгляда, все выглядит нормально, но при создании синтетических ключей могут возникнуть такие вопросы:
- Если пользователи выберут даты из календаря и выполнят функции суммы выплат, то, по идее, должны показаться все выплаченные суммы за этот период. Но это не совсем так – пользователь увидит выплаченные суммы по заказанным единицам товара не зависимо от периода оплаты.
- Для большого объема данных наличие двух таблиц оплата и календарь будет увеличивать нагрузку, то есть такое приложение будет съедать много оперативки на вычисления.
Итак, в этом случае имеет смысл объединить таблицы платежи и заказы – в одну.
Join: Объединение
Чтобы объединить наши таблицы в одну, нужно создать таблицу связи.
Таблица связи будет использовать ключевое поле OrdersAndPayments, она будет загружаться в новую таблицу с датам по счетам-фактурам, а затем будет отображать данные по датам заказа:
Так, мы создадим таблицу связи, в которой при выборе даты 1 ноября 2016, будут показаны результаты и для заказов, и для продаж по выбранной дате.
Concatenate: Объединить
Объединение таблиц с общим полем в одну колонку поможет выполнить функции сцепления. В процессе выполнения Concatenate мы создадим новое поле в двух таблицах, которое будет иметь одинаковое название.
Получим такой итог:
Расширим код для CustomerID с помощью функции applymap, чтобы найти CustomerID, которое принадлежит к значению столбца PO Number.
Новая таблица NewConcatTable включает CustomerID для всех таблиц:
Далее укажем такое поле %KeyDate, что скроет его для пользователя.
Заключение
Какой способ лучше выбрать? И тот, и другой имеет свои плюсы и минусы.
Join подходит в том случае, если в двух полях вы будете делать вычисления (из разных таблиц) в скрипте. Но нужно помнить о дублировании ссылок.
Concatenate – простейший способ объединить две и более таблиц вместе, но при этом может теряться важный функционал Qlik — ассоциативность.
На этом все на сегодня! Качественных вам разработок!
Свежие комментарии