BI Consult
  • Перейти на QlikSense
  • Перейти на QlikView
  • Перейти на Tableau
  • Перейти на Power BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • EN
  • Отправить сообщение
  • Главная
  • Продукты Business-Qlik
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • Энергетика
    • Фрод-менеджмент
    • E-Commerce
    • Фармацевтика
    • Построение хранилища данных
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • Process Mining
    • Сквозная аналитика
  • Платформы
    • Qlik Sense
    • QlikView
    • Tableau
    • Microsoft Power BI
    • Геоаналитика Qlik GeoAnalytics
    • Qlik NPrinting - рассылка отчетности QlikView/Qlik Sense
    • KliqPlanning Suite - бюджетирование в QlikView
    • ATK BiView-1C Коннектор (для Qlik/Tableau/PowerBI)
    • QlikView/Qlik Sense SAP Коннектор
    • QlikView R-Коннектор
    • Qlik Web Connectors - коннектор Google, Facebook, Twitter
    • Vizlib Qlik Sense extentions (библиотека экстеншнов)
    • Библиотека extention для Qlik
    • Qlik Alerting
    • Qlik Data Integration Platform - создание Data Lake
    • Qlik Data Catalog решение для Data Governance
    • ATK BiView документация
  • Услуги
    • Консалтинг
    • Пилотный проект
    • План обучения и сертификации
    • Подготовка специалистов по Qlik
    • Бесплатное обучение Qlik
    • Сертификация Qlik
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • Аудит приложений Qlik и Tableau
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс по Qlik Sense
    • Учебный курс по Tableau
    • Учебный курс по Microsoft Power BI
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс для бизнес-аналитиков
    • Учебный курс по NPrinting
    • Учебный курс по BigQuery
    • Учебный курс по Azure Databricks
    • Учебный курс по DWH
    • Учебный курс по Data Governance
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс администратора Qlik Sense
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

QlikView / Qlik Sense

  • Qlik Sense
    • Возможности Qlik Sense
    • Qlik Sense Enterprise
    • Qlik Sense Desktop
    • Qlik Sense Saas облачная инфраструктура для компаний
    • Источники данных и хранение данных
    • Безопасность и разграничение прав доступа
    • Масштабируемость
    • Политика лицензирования Qlik Sense
    • Qlik Sense November 2021: новые возможности
    • Географические карты в Qlik Sense
    • Qlik Sense Cloud / Qlik Sense в облаке
    • Учебное пособие по Qlik Sense
  • QlikView
    • Архитектура
    • Отличия QlikView от традиционных BI-систем
    • Политика лицензирования QlikView
    • Системные требования и сайзинг
    • Отличие от OLAP-систем
    • QlikView on Mobile
    • Qlik и Big Data
    • Демонстрационные примеры
    • QlikView в "облаке" (Amazon) / QlikView in the cloud
    • Интеграция QlikView с Microsoft SharePoint
    • Учебное пособие по QlikView
    • Что такое QlikView Publisher
    • QlikView Extranet Server и дистрибуция отчетности внешним пользователям
  • Qlik Data Catalog
  • Qlik Alerting
  • Qlik Data Integration Platform
  • Add-ons для QlikView
    • Vizlib Qlik Sense extentions (библиотека экстеншнов)
    • QlikView/Qlik Sense ATK BiView-1C Коннектор
    • Документация ATK BiView
    • Qlik NPrinting
    • Геоаналитика Qlik GeoAnalytics
    • GeoQlik
    • KliqPlanning Suite
    • QlikView/Qlik Sense SAP Коннектор
    • QlikView R-Коннектор
    • Qlik Web Connectors
    • QlikView Cognos TM1 Коннектор
    • Визуализация графов в Qlik Sense с помощью Ogma / Linkurious
  • Учебный курс по Qlik Sense

Tableau

  • Tableau
    • Tableau Desktop
    • Tableau Server
    • Tableau Prep
    • Технологии
    • Источники данных Tableau
    • Безопасность в Tableau
    • Политика лицензирования
    • Tableau 2021: новые возможности
    • Сравнение продуктов Tableau (Desktop, Server, Online, Public)
    • Демонстрационные примеры
    • Учебный портал Tableau
    • Коробочное решение "Мониторинг Tableau Server"
    • Чем отличаются Tableau Reader и Viewer?
  • Учебный курс по Tableau

Другое

  • Microsoft Power BI
    • Power BI Desktop
    • Power BI Report Server
    • Отраслевые решения Microsoft Power BI
    • Политика лицензирования Microsoft Power BI
    • Power BI Mobile
    • Учебные курсы Microsoft Power BI
    • Архитектура Power BI
    • Обработка данных в Power BI
    • Аудит системы Power BI
  • Учебный курс по Microsoft Power BI
  • Alteryx
    • Alteryx Designer
    • Инструменты Alteryx Designer
    • Alteryx Server
    • Alteryx Analytics Gallery
    • Alteryx. Создание приложения, workflow, ETL
  • Data Engeneering
    • Создание Data Lake
    • Создание Data Warehouse
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы » Учебный курс по Qlik Sense

ODAG в Qlik Sense: генерация приложений «по требованию»

Генерация приложений «по требованию», или 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 может выдать ошибку. Просто знайте, что все ок и идите дальше.

2. Добавьте новую страницу со скриптом и поместите ее сразу за главной страницей со скриптом, а затем добавьте на нее такой скрипт:

//Subroutine for fields to filter on 
//Creates a WHERE statement which can be used in table loads to restrict the data to a smaller set
//This WHERE statement is for loading from a QVD.  To load from SQL db change to 'WHERE IN()'

	SUB ExtendWhere(Name, ValVarName) //Name will be the filtered field name and ValVarName the values
		LET T = Name & '_COLNAME'; 
		LET ColName = $(T);
		LET Values = $(ValVarName);
	IF len(Values) > 0 THEN  
	IF len(WHERE_PART) > 0 THEN //If WHERE clause exists then extend it with further values
		LET WHERE_PART = '$(WHERE_PART) AND MATCH($(ColName),$(Values))'; 
	ELSE
		LET WHERE_PART = ' WHERE MATCH($(ColName),$(Values))'; //If WHERE clause does not exist then create it
	ENDIF
	ENDIF
	END SUB;

//Here we set the variables ready to hold the names of any fields we want considering for ODAG filtering (selection)
//The ods_ field names bind the fields to those in your Selections Application. 
//The two Sel_ variables below are examples.  Replace Customer and Sub_Group with your own fields.

	SET Sel_Customer = ; //resets the variable from any previous reload
	SET Sel_Customer = $(ods_Customer_Name); // follow 'ods_' with the field name as it appears in your UI / final load
	SET Sel_Customer_COLNAME ='CUST_NAME'; // enter the field name as it appears in the source data (e.g. QVD/SQL db)

	SET Sel_Sub_Group = ;
	SET Sel_Sub_Group = $(ods_Sub_Group_Name); 
	SET Sel_Sub_Group_COLNAME ='SUBGROUP_NAME'; 
    
	SET WHERE_PART = '';  //you may opt to add your own WHERE clause that is used in every ODAG	
    					  //e.g. you always want 2018 data... 'WHERE Year = 2018'
    					  //if so the sub routine will extend it with further selections
	
//This section builds the WHERE_PART variables that are passed to the SUB 
//It extracts the values that have been selected from each field
	FOR EACH fldname IN 'Sel_Customer', 'Sel_Sub_Group' //insert your Sel_ variables
		LET vallist = $(fldname);
	WHEN (IsNull(vallist)) LET vallist = ''; //If Qlik suggests an error here ignore it
	IF len(vallist) > 0 THEN
		CALL ExtendWhere('$(fldname)','$(vallist)');
	ENDIF
	NEXT fldname

//Evaluate the WHERE_PART variable in the script for debugging
	TRACE Generated WHERE clause: ;
	TRACE $(WHERE_PART);

 

СВЯЗЫВАЕМ 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. Перетащите созданную навигационную ссылку в «подвал» приложения.

10. Дальше попробуем все протестировать и сгенерировать свое первое приложение «по требованию»:

  • Выбираете в фильтрах нужные данные и если выбранное вами количество записей не превышает установленного ранее вами лимита, то кнопка ODAG становится зеленой – это подсказывает, что можно сгенерировать приложение
  • Кликаете на кнопку ODAG, затем на «i» — так вы сможете посмотреть, сколько строк в каком статусе загрузки у вас в приложении. Чтобы закрыть окошко с информацией, опять кликнете на «i»

 

11. Когда приложение будет готово, нажимайте опции, открывайте и наслаждайтесь аналитикой:

 

СОВЕТЫ ПО СИНТАКСИСУ 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 (pdf)

 

Узнать стоимость решенияЗапросить видео презентацию

Запросить видео презентацию Запросить доступ к демо стенду online Узнать стоимость лицензий

Задать вопрос

loading...

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

Клиенты

  • Sheetrock Danogips

    Анализ деятельности компании в разрезах: товарная иерархия, клиенты, сотрудники

    Финансовый анализ

    Внедрение решения BusinessQlik for Manufacturing.

  • Поставка лицензий QlikView, настройка сервера QlikView, консультирование и обучение заказчика

  • Сеть магазинов «Магнит»
    Разработка концепции работы системы анализа ключевых показателей деятельности магазина розничной сети;
    Реализация механизма автоматической рассылки email оповещений;
    Визуализация KPI на мобильных устройствах;
    Картографическое расширение (аналитика QlikView на Yandex.Maps, OpenStreetMap);
    Написание технической документации;
  • Деньга
    Разработка концепции для консолидация финансовой отчетности по филиалам компании;
    Разработка концепции создания матрицы данных для отслежевания поведения клиентов, вплоть до уровня транзакций
    Написание технической документации;
    Поддержка пользователей.
  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Банки
    • Страхование
    • Фармацевтика
    • Лизинг
    • Логистика
    • Медицина
    • Нефтегазовый сектор
    • Сеть ресторанов
  • Продукты
    • Qlik Sense
    • QlikView
    • Tableau
    • Microsoft Power BI
    • ATK BiView-1C Коннектор (для Qlik/Tableau/PowerBI)
    • Vizlib Qlik Sense extentions (библиотека экстеншнов)
    • NPrinting
    • Геоаналитика Qlik GeoAnalytics
    • KliqPlanning Suite
    • Qlik WebConnectors
    • QlikView R Коннектор
    • QlikView/Qlik Sense SAP Коннектор
    • Alteryx
    • Qlik Data Catalog
    • Документация ATK BiView
  • Услуги
    • Консалтинг
    • Пилотный проект
    • Поддержка
    • План обучения и сертификации Qlik
    • Бесплатное обучение
    • Учебные курсы
    • Сертификация Qlik
    • Аудит приложений
  • Курсы
    • Учебный курс по Qlik Sense
    • Учебный курс по Tableau
    • Учебный курс по Microsoft Power BI
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс по NPrinting
    • Учебный курс по Azure Databricks
    • Учебный курс по Google BigQuery
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
  • Функциональные решения
    • Продажи
    • Финансы
    • Склад
    • HR
    • S&OP и прогнозная аналитика
    • Внутренний аудит
    • Геоаналитика
    • Категорийный менеджмент
    • Построение хранилища данных
    • Система управления KPI и BSC
    • Управление цепочками поставок
    • Маркетинг
    • Цифровая трансформация
    • Сквозная аналитика
    • Process Mining
QlikView Partner
LinkedInYouTubeVkontakteFacebook
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru