ДЕНЬ 17
Лучшие практики Qlik Sense
СЕГОДНЯ

Посмотрим на подборку полезных советов по работе с Qlik с разных сторон, поймем как делать жизнь проще для себя и своих коллег, и принесем практическую помощь коммьюнити QS в виде своих личных советов и лайфхаков. Как всегда, изучим прекрасное в сети и перейдем на полезные ссылки с лучшими практиками от блогеров Qlik. Клик Клик. Поехали?
Разбираемся
Полезные советы из личного опыта
На сегодня мы подготовили для вас подборку разных советов по работе с Qlik, которые могут оптимизировать вашу работу и работу системы. Работать быстрее, выше, сильнее!
Комментирование и документация
Совет 1
Вовремя оставленный комментарий может сэкономить от нескольких минут до нескольких часов последующего анализа кода приложения.

Например, вот такой комментария будет весьма полезен:
/* изменена логика расчета показателя по требованию от Иванова Ивана Ивановича 2018-09-03 Петровым Петром Петровичем для открытого бета-тестирования новой методики:
*/
Также при длинных расчетах, старайтесь комментировать логику вычисления, особенно если она не стандартная. Это поможет как вам, в случае открытия этого отчета через несколько месяцев, так и вашим коллегам, кто может модерировать этот отчет вместо вас.
Наименование полей и переменных
Советы 2
Рассмотрим на примере переменных. Напоминаем, что в QlikSense переменные задаются или в скрипте (Let или Set) на этапе загрузки, или уже самом приложении через Редактор переменных.
+ Используйте наименования которые будут верны в большинстве случаев
Естественное желание – выполнить приложение в едином стиле в одной цветовой палитре. Подбираем цвета и записываем их в отдельные переменные. Мы можем назвать созданные переменные именами cButtonGreen или cButtonGrey, от названий цветов, которые они будут хранить. Но что если наши требования к цветам изменятся?

Лучше назвать такие переменные по смыслу их действия:
cButtonOn, cButtonOff – цвет нажатой кнопки или выключенной.
Название переменных
+ Прописывайте описание переменных
Так другим пользователям будет проще понимать их смысл и назначение.
+ Используйте единый стиль наименования полей
Не стоит использовать одновременно c_Button_On и cButtonOn. Такие переменные будут разбросаны по всему списку наименований и ими будет неудобно пользоваться и искать.
+ Используйте одинаковые обозначения для кластеров функциональности
Например, все переменные для цвета начинаются с "c", переменные для пути к файлам данных "p" и так далее. Выберите в вашей команде единые обозначения и это упростит всем совместную работу.
+ Избегайте длинных наименований
Краткость – сестра таланта. Помните об этом, хотя бы потому, что в перечне переменных отображается 24 символа в редакторе переменных и 22 символа в конструкторе выражений.
По этой же причине, не стоит ставить важные идентификаторы полей в конце их названий. Когда будете пользоваться этими переменными, искать нужную среди "НаименованиеПеременнойРасчтечаСложнойФункции1" … "НаименованиеПеременнойРасчтечаСложнойФункции10", что будет несколько затруднительно.
Длина имени
+ Аккуратно используйте вложенные переменные
Используйте вложенность переменных с пользой, но без фанатизма. Не стоит строить универсальную функцию для решения любой проблемы.
Если есть потребность отображать на линейном графике динамику продаж за полгода и за год, то полезна будет функция fDinamicSales, которая будет зависеть от переменной vMonths, в которой будет лежать или 6 или 12.
Или же функция fDinamic(fSales(vMonths)). Главное, чтобы у вас не получилось как с домом Джека.
Использование мер, измерений и визуализаций
Советы 3
Для элементов, постоянно используемых в приложении, полезно создание общих измерений, мер и визуализаций.

При создании визуализаций можно сохранить как сами визуализации, так и их части – меры и измерения – для последующего повторного использования. Это очень полезно для совместной работы: основную меру можно использовать в неограниченном количестве визуализаций, при этом достаточно изменить единственный экземпляр такой меры, чтобы изменения были отражены во всех случаях ее использования. Это очень похоже на использование переменных и функций, даже если просто посмотреть на их интерфейс создания.
Скрипт загрузки. Подготовка данных
Советы 4
Помните о том, что продукты Qlik хорошо работают со своим форматом данных QVD, и есть два вида их загрузки:
  • стандартный (когда меняем поля, добавляем какие-либо вычисления, группировки, условия на выбор) и
  • оптимизированный (когда загружаем данные без их изменения (переименовывать поля можно).
Старайтесь использовать выгоду второго по максимуму. Хорошо, когда самая большая таблица фактов в приложении грузится именно так – выигрыш в скорости довольно большой.
+ Разделяй и влавствуй

Разделяйте процесс подготовки данных для приложения и само приложение. Пусть у вас будет ETL (одно или несколько приложений) для проекта. Этим можно убить много зайцев, но и стрелять придется немало. Плюсы очевидны – вы получите полностью управляемый поток данных, единую базу для группы отчетов или проекта в целом. Можно настроить систему проверки целостности данных, контроля качества, если их нет на стороне первоначального источника.

Отдельно хотелось бы рассказать о Buffer, но перенесем это на вашу заинтересованность в самостоятельном изучении. Очень полезная вещь в разработке.
QlikSense хорошо справляется с подготовкой данных при помощи встроенного ETL – Extract, Transform, Load – алгоритма по очистке и преобразованию данных. Более того, с его помощью можно объединять данные из разных источников. Плюс самостоятельно написанные коннекторы (например, для 1С).

Есть много тонкостей работы с ETL, которые зависят от вашего желания и умения погружаться в данный пласт работы.

+ Оптимальная детализация
Здесь актуальны вопросы о способе хранения информации, например, нужно ли хранить данные в формате YYYY-MM-DD hh-mm-ss (дата со временем), если в приложении речь идет только о днях (дате без времени). Или же хранить числа с точностью до 10 знака после запятой, когда основная единица измерения в отчете миллионы.

+ Оптимальная нагрузка
Несмотря на потенциальную возможность, стоит избегать глобальной модификации данных внутри самого QlikSense. Например, вы забираете данные с SQL-сервера и затем агрегируете их. Разумно будет провести эту операцию непосредственно на стороне БД. Конечно, если признак агрегации есть непосредственно в БД, но если его нет, то можно воспользоваться возможностью сделать это уже силами QlikSense.

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

+ Лишние поля
Разумеется, что лишние поля можно и нужно удалять из готового продукта (функции drop fields, drop table)

Переменную удалить можно только вручную из редактора переменных независимо от того, где ее создали – поэтому старайтесь не захламлять ваш список переменных.
+ Общие блоки
Старайтесь выделять блоки, общие для схожих проектов. Например, Календарь. Вы можете писать календарь каждый раз для каждого из приложений, где он нужен. А можете написать достаточно универсальный (или несколько) код, который будет подходить к целому кластеру приложений. Стандартный календарь, управленческий, финансовый, и любой из вариантов – даже чтобы понедельник начинался в субботу.

С помощью ETL разных уровней можно готовить данные таким образом, что вы будете уверены, что числа, используемые в разных проектам идентичны или же берутся из одного источника, а значит меньше дублирования функционала и экономия на ресурсах сервера. Календарь, конечно же, не даст прироста производительности, это больше удобство использования.
+ Оптимизация мер и вычислений
На больших объемах данных, весьма полезно будет проводить подготовительные работы для более быстрых расчетов в визуализациях. Если мера, которую создаем очень "тяжелая", то можно часть этих расчетов сделать на стороне загрузки данных.

Допустим в вашей формуле в визуализации есть сравнение текста, это всегда медленно. Но у вас нет числового идентификатора для данного поля. Что же делать?
If( Поле1 = ‘Текст’, Результат1, Результат2)
В скрипте загрузки добавляем числовой идентификатор по данному условию.
LOAD *
	,  If( Поле1 = ‘Текст’, 1, 0) as ФлагУсловия 
Resident
	t_Data;

//и тогда мера будет выражение в визуализации будет 

If( ФлагУсловия = 1, Результат1, Результат2)

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

Когда у вас данные предоставляются в большей детализации, чем необходимо для отчетности – лучше эту агрегацию сделать в предварительной подготовке данных (а еще лучше на стороне БД), нежели в визуальной части.
Модель данных
Советы 5
+ "Острова" данных
Старайтесь свести к минимуму ситуации, когда в вашей модели есть таблицы без связей. Это увеличивает расчетное время вычислений.

+ Синтетические ключи.
Их нужно исключать, используя составные ключи. Это обязательное правило.

Помните, что важными принципами лучшего решения остаются: поиск, анализ, здравый смысл, обмен опытом, умение выслушать критику, способность обучаться, извлекать пользу из ошибок и помнить, что лучшее – враг хорошего.
Делимся практиками
Сегодня приглашаем вас добавить свой совет к нашему списку и рассказать о том, как вы используете Qlik эффективно. Мы опубликуем весь список в одном из следующих дней.
Ждем вашего совета
Удивите российское сообщество Qlik и поделитесь своими лайфхаками или полезными советами по работе с Qlik
Вдохновляемся
Изучаем прекрасное в сети
Полезные ссылки по теме
Как обычно, подборка полезных ссылок по темам скриптинга, дизайна и полезных привычек.
Погружаемся
В тематические книжки и видео
Артефакты
Помогут Вам лучше усвоить и вовремя вспомнить основные элементы методик, подходов, последовательностей действий, проверенных практик
Книги
Дизайн Дашбордов
Стивен Фью
В последние годы дашборды приобрели популярность как мощные инструменты для мгновенного обмена важной информацией. Хотя потенциал дашбордов огромен, этот потенциал редко реализуется. Книга Стивена Фью – одного из самых популярных авторов по визуализации данных – рассказывает о том, как использовать потенциал дашбордов на максимум и эффективно преподносить нужные данные.
Итоги этапа
Ну вот и ознакомились с лучшими практиками и получили новые знания, не забыв пролистать книжку про информационный дизайн и поделиться знаниями с русскоязычным сообществом. Все молодцы и до новой, последней недели Марафона! Клик клик урра.
~
DATA YOGA CLUB