Генерация приложений «по требованию», или On-demand App Generation (ODAG), — один из методов работы в Qlik с большими данными (наряду с Direct Discovery, Chaining, Big Data Index). Доклад Сергея Полехина по ODAG на qRUG Camp 2018 вошел в тройку самых полезных для последующего применения, поэтому сегодня поговорим именно на эту тему. В посте расскажу, как подготовить Qlik-приложения для ODAG, дам пример скрипта с комментариями, который вы можете подработать под свои задачи, а также презентацию по ODAG от Сергея Полехина, архитектора решений Qlik.

Когда использовать ODAG?

При работе с большими данными всегда стоит дилемма: потенциально нужно иметь возможность работы сразу со всем массивом данных, однако с технической точки зрения это не всегда оказывается возможным из-за банальных ограничений возможностей оборудования. Когда, например, загружаемые в аналитическое приложение данные не помещаются в оперативную память и/или сложность расчетов в приложении «убивает» всю интерактивность.

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

Это похоже на поход в магазин – пользователь сам наполняет приложение-шаблон необходимым блоками данных: определенным периодом времени, сегментом покупателей, ассортиментом, географией и т.д, а затем этот набор данных загружается в оперативную память, и пользователь ведет привычную аналитику в Qlik Sense.

В наших условиях ограниченных серверных мощностей этот подход может быть полезен не только для Big Data, но и для экономии серверных ресурсов =)

Из важных плюсов этого подхода при работе с Big Data в Qlik Sense:

  • Доступ к не-SQL-ным источникам данных (например, Teradata Aster, MapR, SAP BEx и др.). В устаревшем механизме Direct Discovery возможна работа только с источниками, поддерживающими обмен данными по протоколу ODBC.
  • Загрузка всех необходимых пользователю данных в оперативную память, что даёт возможность использования уникальных принципов работы со множествами данных (в Direct Discovery, например, все данные находятся не в памяти, а в источнике данных до момента непосредственного доступа к ним и поэтому к ним неприменимы ни, например, поиск, ни операции над множествами данных).
  • Создание и объем приложений прозрачно контролируется с точки зрения ИТ – есть специальная серверная служба On-demand apps service, которая позволяет, например, настроить объем и количество приложений, а также определить количество приложений генерируемых одновременно и т.д.

Как работает ODAG?

Схема работы ODAG представлена на схеме ниже, дальше объясню ее по пунктам:

Шаг 1. Для начала работы с ODAG вам нужно создать 2 приложения:

  • Приложение для отборов (Selection App): это приложение наполняется данными измерений и объектами визуализации, обеспечивающими работу с данными на высоком уровне агрегирования. В этом приложении пользователи выбирают данные для последующего углубленного анализа. И сразу совет по пользовательскому интерфейсу – в приложении нужно предусмотреть поля (счетчики записей), позволяющие оценивать объем данных, загружаемый в приложение (благодаря этому вы сможете установить лимит на количество строк данных загружаемых в приложение)
  • Шаблон приложения для анализа данных (App Template): в нём размещается предварительно подготовленный сценарий загрузки (скрипт), в который автоматически попадут отборы данных пользователя, сделанные им в приложении Selections App. Ну а к дизайну приложения никаких комментариев тут нет – делайте все, как обычно, чтобы пользователям было удобно работать с аналитикой

Шаг 2. Пользователь выбирает требуемый срез данных в приложении при помощи интуитивно понятных действий в привычных объектах визуализации

Шаг 3. Пользователь инициирует создание приложения для анализа данных (Analysis App), нажимая интуитивно понятную кнопку, предусмотренную в интерфейсе пользователя

Шаг 4. Приложение для анализа данных автоматически создаётся на основе шаблона (App Template) и наполняется нужными данными

Шаг 5. Приложение для анализа данных публикуется – в поток (stream) пользователя или в другой выбранный поток, на который у пользователя имеются соответствующие полномочия.

Шаг 6. Если пользователю требуется любой другой срез данных, то он просто повторяет шаги 2-5

Особенности построения Selection App

Скрипт приложения для отбора данных (Selection App) должен загружать достаточно данных, чтобы пользователи могли делать выборки в требуемых им полях и при этом понимать, сколько данных они получат в сгенерированном (детальном) приложении.

Таким образом, с точки зрения интерфейса вам нужны лишь объекты, позволяющие «отфильтровать» требуемые данные и индикатор, который показывает, сколько еще строк данных пользователь может выбрать, чтобы сгенерировать приложение по ODAG (и не выйти при этом за ограничения по объему данных). Мне очень понравился вариант с gauge чартом, который предложил Майкл Лаверик (Michael Laverick):

При этом ограничения на объем данных в сгенерированном по ODAG приложении можно выставлять очень гибко. Так, можно наложить условие на количество выборок, например, разрешать пользователям выбирать до 5 продуктовых категорий.

Qlik Help по созданию приложения для отбора данных для ODAG

Особенности построения Template App

Здесь у нас будет пример скрипта с комментариями от Майкла Лаверика, но сначала мини-инструкция:

  1. Стоит начать с обычного скрипта загрузки. В него мы уже будем добавлять ODAG скрипт, чтобы генерировать раздел с WHERE на лету и вызывать его через переменную. При этом, когда вы добавите переменную с WHERE в скрипт, Qlik может выдать ошибку. Просто знайте, что все ок и идите дальше.
  1. Добавьте новую страницу со скриптом и поместите ее сразу за главной страницей со скриптом, а затем добавьте на нее такой скрипт:

А вот обещанный файл со скриптом ODAG, скачивайте!

Qlik Help по созданию приложения-шаблона для ODAG

Связываем 2 приложения для ODAG

Откройте приложение для отборов (Selection App) и в режиме правок нажмите в левом меню на раздел «App navigation links». Не забудьте, что для того, чтобы увидеть этот раздел, вы должны работать с сервером Qlik Sense, т.к. в редакции Qlik Sense Desktop функционал ODAG не реализован.

А теперь настраиваем меню по пунктам:

  1. Создайте новую навигационную связь для ODAG и придумайте ей название
  2. Выберите шаблон приложения для анализа данных (App Template), который будет связан с вашим приложением выборок
  3. Добавьте выражение, которое считает строки. Например: SUM(TOTAL_LINES)
  4. Укажите максимальное количество строк, которое можно будет передать в приложение-шаблон (template app). Оно может быть меньше или равно SUM(TOTAL_LINES)
  5. Укажите, сколько приложений «по запросу» может генерироваться одновременно
  6. Укажите время хранения созданных ODAG приложений – оно исчисляется в часах, днях или такие приложения можно вообще никогда не удалять
  7. Укажите страницу, на которую будет перенаправляться пользователь по умолчанию в сгенерированных приложениях
  8. Укажите поток (stream), в который будут публиковаться сгенерированные приложения (если вы вообще хотите их публиковать в потоки)
  9. Перетащите созданную навигационную ссылку в «подвал» приложения.
  1. Дальше попробуем все протестировать и сгенерировать свое первое приложение «по требованию»:
    1. Выбираете в фильтрах нужные данные и если выбранное вами количество записей не превышает установленного ранее вами лимита, то кнопка ODAG становится зеленой – это подсказывает, что можно сгенерировать приложение
    2. Кликаете на кнопку ODAG, затем на «i» — так вы сможете посмотреть, сколько строк в каком статусе загрузки у вас в приложении. Чтобы закрыть окошко с информацией, опять кликнете на «i»
  1. Когда приложение будет готово, нажимайте опции, открывайте и наслаждайтесь аналитикой:

Советы по синтаксису ODAG от Сергея Полехина

На qRUG Camp 2018 Сергей Полехин, архитектор решений Qlik, поделился некоторыми советами по синтаксису генерации приложений «по требованию», приведу некоторые из них.

2 идеи того, почему при реализации функционала ODAG синтаксис сценариев загрузки был расширен:

Binding expressions (цвет имеет значение😊): Отбор в конкретном поле (зелёный цвет) не всегда совпадает со связанными значениями в других полях данных (белый цвет̆). Эти различия можно учитывать в логике вашего приложения.

  • $(ods_FIELD_NAME) или $(od_FIELD_NAME) – в явном виде отобранные пользователем значения (Selected)
  • $(odo_FIELD_NAME) – связанные значения (Optional)
  • $(odso_FIELD_NAME) – отобранные или связанные значения (Selected, Optional)

2 идеи, о том, как учитывать особенности реализации имеющихся у вас баз данных:

  • Не все БД поддерживают автоматическое преобразование типов: требование числового представления данных
    • $(od_FIELD_NAME_n) – требование использовать тип «число»
  • Не все БД в качестве разделителей̆ используют одни и те же символы: можно потребовать использования конкретных разделителей̆
    • $(od_FIELD_NAME){«quote»: «|», «delimiter»: «;»}
    • Пример результата:|Январь|;|Февраль|;|Март|

А вот и полноценная презентация Сергея Полехина с qRUG Camp 2018:

Посмотреть

Ну и напоследок – пара ссылок на Qlik Help по ODAG:

Создание On-Demand приложений

Использование On-Demand приложений

Управление On-Demand приложениями

Всем удачи с ODAG =)