«Data-Islands» — зло, личный опыт использования и последующая оптимизация

Не так давно я столкнулся с ужасной проблемой производительности «дата-айлендов».

Наверно, каждый, кто разрабатывал приложения в QlikView или Qlik Sense, сталкивался с этим понятием. Но все же, давайте убедимся, что под ним мы все понимаем одно и то же:

«Островок данных» или «Data-Island», это таблица с данными, полностью оторванная от модели данных. Таким образом получается таблица, выборки которой никак не влияют на отображение данных в графиках и диаграммах приложения.

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

Вот лишь несколько примеров их использования:

  1. Мультиязычность (прочитайте статью на эту тему, там много полезного)
  2. Выбор единиц измерения для расчетов
  3. Выбор набора диаграмм, фильтров, любых других объектов, которые будут отображены на листе
  4. Выбор измерений для построения диаграмм (более удобная версия встроенного функционала QlikView - циклических измерений)

Казалось бы жизнь прекрасна, не так ли?

Технология кэширования данных Qlik с этим не согласна.

картинка твой бро/не бро (дата-Айленд VS переменная)





Мой вердикт: исключить использование островков данных из приложений с высокими требованиями к производительности. В крайнем случае — не использовать их в выражениях.

Wordaround: на каждый выбор в дата-айленде поставить триггер на присвоение выбранного значения в переменную.