Сегодня публикуем статью со скриптом создания таблицы связи. Альтернативным методом ее построения поделился Барри Хермсен (Barry Harmsen). Идея альтернативного подхода по созданию таблицы связи была им открыта на Qlik Master Summit 2016.

Таблица связи в Qlik

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

  1. Создаем составной ключ связи, основываясь на общих ключах измерений между факт-таблицами.
  2. Создаем отдельную таблицу связи, которая состоит из общих ключей измерения и ключа связи.
  3. Удаляем отдельные ключи измерения из факт-таблиц.

Вот пример таблицы связи с двумя факт-таблицами:

Link table example

Создание таблицы связи: Традиционный подход

Традиционный путь создания таблицы связи – создать ключ связи и общие измерения из каждой факт-таблицы, используя LOAD DISTINCT, объединяя их вместе.

Это самый прямой путь и понятный, но когда мы работаем с большим объемом данных, то LOAD DISTINCT может загружать работу приложения (об этом уже писали на Data-Daily). Лучше использовать объединяющую факт-таблицу.

Создание таблицы связи: Применяем FieldValue() и FieldValueCount()

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

Функции FieldValue() и FieldValueCount()напрямую работают с символьными таблицами. Это означает, что мы получаем прямой доступ ко всем уникальным значениям поля. Когда у вас есть большая таблица, то вы увидите разницу по времени в обработке данных, поэтому большинство современных календарей работает через FieldValue(), что позволяет не обрабатывать всю таблицу целиком.

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

Link Table s

Этот скрипт создаст таблицу с отдельными значениями ключами связи. Затем разделить ключи можно с помощью функции SubField(). Скрипт в итоге будет иметь вид:

linktablescriptfull

Коллеги, именно такое решение на больших объемах данных будет давать бОльшую производительность нашему приложению!

Вы можете скачать пример альтернативной таблицы связи по ссылке ниже.

Скачать пример таблицы связи

На этом все сегодня! Производительных вам разработок!