Генерация приложений «по требованию», или 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
Здесь у нас будет пример скрипта с комментариями от Майкла Лаверика, но сначала мини-инструкция:
- Стоит начать с обычного скрипта загрузки. В него мы уже будем добавлять ODAG скрипт, чтобы генерировать раздел с WHERE на лету и вызывать его через переменную. При этом, когда вы добавите переменную с WHERE в скрипт, Qlik может выдать ошибку. Просто знайте, что все ок и идите дальше.
- Добавьте новую страницу со скриптом и поместите ее сразу за главной страницей со скриптом, а затем добавьте на нее такой скрипт:
А вот обещанный файл со скриптом ODAG, скачивайте!
Qlik Help по созданию приложения-шаблона для ODAG
Связываем 2 приложения для ODAG
Откройте приложение для отборов (Selection App) и в режиме правок нажмите в левом меню на раздел «App navigation links». Не забудьте, что для того, чтобы увидеть этот раздел, вы должны работать с сервером Qlik Sense, т.к. в редакции Qlik Sense Desktop функционал ODAG не реализован.
А теперь настраиваем меню по пунктам:
- Создайте новую навигационную связь для ODAG и придумайте ей название
- Выберите шаблон приложения для анализа данных (App Template), который будет связан с вашим приложением выборок
- Добавьте выражение, которое считает строки. Например: SUM(TOTAL_LINES)
- Укажите максимальное количество строк, которое можно будет передать в приложение-шаблон (template app). Оно может быть меньше или равно SUM(TOTAL_LINES)
- Укажите, сколько приложений «по запросу» может генерироваться одновременно
- Укажите время хранения созданных ODAG приложений – оно исчисляется в часах, днях или такие приложения можно вообще никогда не удалять
- Укажите страницу, на которую будет перенаправляться пользователь по умолчанию в сгенерированных приложениях
- Укажите поток (stream), в который будут публиковаться сгенерированные приложения (если вы вообще хотите их публиковать в потоки)
- Перетащите созданную навигационную ссылку в «подвал» приложения.
- Дальше попробуем все протестировать и сгенерировать свое первое приложение «по требованию»:
- Выбираете в фильтрах нужные данные и если выбранное вами количество записей не превышает установленного ранее вами лимита, то кнопка ODAG становится зеленой – это подсказывает, что можно сгенерировать приложение
- Кликаете на кнопку ODAG, затем на «i» — так вы сможете посмотреть, сколько строк в каком статусе загрузки у вас в приложении. Чтобы закрыть окошко с информацией, опять кликнете на «i»
- Когда приложение будет готово, нажимайте опции, открывайте и наслаждайтесь аналитикой:
Советы по синтаксису 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 приложениями
Всем удачи с ODAG =)
Свежие комментарии