Qlik

Синтетические ключи в Qlik

· Qlik

Часто при создании приложений Qlik Sense (QlikView) формирует синтетические ключи, выводя предупреждения об их создании в журнал загрузки. При этом распространено мнение о том, что любой синтетический ключ это плохо, от него следует непременно избавляться: часто в требованиях к разработке и архитектуре приложений в крупных организациях даже указываются запреты на публикацию приложений содержащих синтетические ключи в продуктивной среде.

В данной статье мы разберемся что такое синтетические ключи и как с ними можно бороться, а главное нужно ли это делать.

Согласно официальной документации Qlik

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


Если во время загрузки данных получено предупреждение о синтетических ключах, следует проверить структуру данных в просмотре модели данных. Необходимо убедиться, что в модели данных нет ошибки. Иногда это является причиной такого предупреждения, но в основном это связано с ошибкой в скрипте.


Наличие множества синтетических ключей зачастую свидетельствует о неправильной модели данных. Тем не менее, верный признак неправильной модели данных — это наличие синтетических ключей на основе других синтетических ключей.

Давайте резюмируем:

  • Синтетический ключ —​ это всего лишь связь нескольких таблиц по двум и более полям;
  • Синтетический ключ физически — это невидимое для составления визуализаций поле, которое не может быть использовано в выражениях на листе или в скрипте;
  • Наличие синтетического ключа может означать проблемы в модели данных, а может не означать. Обратите внимание, это действительно важно – синтетический ключ может означать проблему, но не обязательно означает проблему. В каждом конкретном случае ответ будет разный;
  • Синтетические ключи состоящие из синтетических ключей явный признак проблемы;

Проблемы синтетических ключей

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

Согласно официальной документации Qlik

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

Однако по опыту это далеко не так. Самая частая проблема синтетических ключей в том, что модель данных сформирована неправильно и пользователь, отбирающий данные или вычисляющий показатели, может получать неверные значения либо вообще не сможет записать выражение меры чтобы вычислить нужный показатель. Проблема с производительностью возникает не так часто, в тех случаях, когда в приложении огромное количество данных и синтетических ключей. Основная беда синтетических ключей — неясность.

Давайте рассмотрим несколько примеров синтетических ключей и определим проблемы, возникающие при их формировании, а также определим способы решения проблем.

Пример 1: Одинаковые названия свойств разных сущностей

Пусть у нас есть две таблицы Товары и Контрагенты. Таблица Товары выглядит следующим образом:

КодНаименованиеКатегория
1ГвоздиСкобяные
2ШурупыСкобяные
3СкобыСкобяные

Таблица Контрагенты выглядит следующим образом:

КодНаименование
1Вектор+
2Прогресс
3Центр-сервис
4Меркурий