Практические вопросы по QlikView – Часть 2

<<< Вернуться в основной раздел «QlikView — краткий учебник»

Contents


Продолжим рассматривать практические вопросы по QlikView, которые возникают при разработке приложений на проектах.

qlikview

Рекомендации по проектированию модели данных?

Одним из самых важных факторов успешности проекта по QlikView является правильно разработанная модель данных.
1. Прежде, чем приступить к проектированию и реализации модели данных, требуется выявить и проанализировать требования всех уровней (бизнес-требования, требования заинтересованных сторон, функциональные и нефункциональные требования). Начинать работу в QlikView без требований можно, если необходимо создать прототип для уточнения тех или иных требований, либо когда используется Agile подход.

2. В модель данных необходимо включать только те поля и строки данных, которые действительно Вам необходимы. Лишние поля могут вызвать путаницу, проблемы с производительностью, т.е. все это приводит в конечном счете к дополнительным усилиям.
3. Особое внимание следует уделить также ассоциативной модели QlikVIew. Любые поля с одинаковыми именами ведут к созданию связей между таблицами. Если в двух таблицах присутствует более одного одинакового поля, то создастся синтетический ключ — чего всегда следует избегать. Если Вы видите дополнительные таблицы в модели данных со знаком доллара в имени, то нужно пересмотреть и улучшить вашу модель.
4. Потоки данных из нескольких источников желательно объединять при помощи метода CONCATENATE в одну таблицу фактов, а не пытаться выполнить JOIN таблиц. JOIN всегда приводит к созданию множества колонок с одинаковыми именами и значениями, поэтому желательно направлять данные в одно поле (с одинаковым смыслом для нескольких потоков данных).
5. Сделайте все возможное для того, чтобы упростить и рационализировать модель данных в сценарии загрузки.
6. Используйте при извлечении данных QVD слои. Это необходимо для инкрементальной загрузки данных (incremental loads), а также очень полезно для разделения извлеченных данных на части, которыми легко управлять. Подход дробления загрузки по QVD файлам может быть полезен при тестировании. Процесс загрузки будет рассматриваться как набор модулей и, поэтому, процесс тестирования можно будет проводить по мере готовности каждого модуля. Дополнительным плюсом использования QVD слоя является возможность параллельно извлекать данные из разных источников или разных таблиц. Скорость считывания QVD файлов документом QlikView намного производительней, чем если извлекать данные из базы данных.
7. Избегайте возникновения в моделях данных синтетических ключей, т.к. они могут ухудшать производительность работы, а также могут вызывать сбои. Создавайте свои собственные составные ключи. Следите за тем, чтобы не происходило объединение таблиц (Join) по не числовым полям, потому что любое несоответствие строковых полей приведет к ошибочным моделям данных.
8. Исправляйте циклические ссылки (Circular references), которые возникают, когда соединяются три и более таблиц по одинаковым полям (образуется кольцо из таблиц).

Схема разработки приложений при использовании QVD слоев:
Загрузка данных с помощью слоев QVD

Способы тестирования приложений QlikView?

1. Выполняйте основную агрегацию на главной таблице фактов. Если Вы используете инкрементальную загрузку с динамическим условием «Where», то очень важно не допустить логическую ошибку при построении запроса в условии where. Для того, чтобы уменьшить потенциальную ошибку, необходимо проверять число строк и итоговые суммы по полям с мерами (measure fields) по сравнению с исходными таблицами (источниками данных). Таким образом, Вы будете всегда знать, что извлекли полный набор данных. Это будет первая проверка в QlikView приложении. Для получения дополнительной помощи, Вы можете использовать системные поля, такие как $Field, $FieldNo, $Fields, $Info, $Rows, $Table.
2. Не делайте агрегацию на ключевых полях: Ключевые поля в QlikView всегда должны использоваться только для JOIN таблиц (соединения таблиц). Убедитесь, что Вы используете ключевое слово «HidePrefix» вместе с установкой переменной в SET и используйте одинаковые специальные символы в качестве префикса для ключевых полей (Например, %CustomerKey вместо [Customer Key]. При таком подходе, Вы или другие разработчики не будут использовать это поле (даже случайно) при реализации интерфейсов. Очень важно помнить, что ключевые поля не следует использовать в диаграммах.
3. Проверьте плотность информации (Information Density) и коэффициент (доля) подмножества (Subset Ratio): Всегда выполняйте проверку целостности верхнего уровня модели данных. Вы можете посмотреть Information Density и Subset Ratio в Table View (Ctrl + T), наводя на поля. Нужно исследовать, где Information Density меньше чем 100% и информировать Архитектора о потенциальных проблемах с NULL значениями. Необходимо проверять Subset Ratio перед выполнением JOIN на таблицах.

Определение Information Density и Subset Ratio:

  • Information Density (Плотность информации) — является числом записей со значениями (т.е. не NULL) в этом поле по сравнению с общим числом записей в таблице.
  • Subset Ratio (Доля Подмножества) — является числом уникальных значений этого поля, находящегося в этой таблице, по сравнению с общим числом уникальных значений этого поля (т.е. и в других таблицах).

Определение Information Density и Subset Ratio
4. Проверьте строку подключения в скрипте QlikView: Логические баги очень сложно отловить. Обычно, разработчику требуется извлечь данные из более чем одного источника. А иногда требуется извлечь данные в нескольких средах, где имеются одинаковые схемы. Убедитесь, что строки подключения к Excel файлам и базам данных находятся в одном централизованном месте.
5. Отсутствие синтаксических ошибок не означает отсутствие логических ошибок. Set Analysis (анализ множеств) — это интересная особенность QlikView. Анализ множеств будет очень полезен для контроля, идентификации и модификации подмножества данных. Обычно, отсутствие синтаксической ошибки не гарантирует отсутствие логической ошибки. Логические ошибки гораздо страшнее синтаксических. Поэтому всегда проверяйте выражения в Set Analysis по аналогии с SQL запросами. Set modifier эквивалентен Where в SQL запросах, а Set operators эквивалентны реляционным операторам в SQL.
6. Проверяйте отсутствие NULL в таблицах с измерениями (dimensional tables): Как правило, в таблицах с измерениями не должны присутствовать NULLs. Поля измерений должны иметь 100% information density, но на практике всегда очень сложно этого достигнуть. Поэтому важно заострять внимание на dimensional таблицах. Сравнивайте пропущенные данные с доступными в источниках данных.

Цели фаз тестирования на проектах QlikView:

  • Убедитесь, что подключения к источникам данных исправны.
  • Убедитесь, что предусмотренные вычисления в выражениях правильные.
  • Подтвердите, что дашборды (dashboards) отображают требуемые показатели, а также, что они интуитивно понятны.
  • Идентифицируйте (определите) улучшения, которые можно произвести в навигации и удобстве использования интерфейса.
  • Протестируйте различные бизнес-сценарии. Используйте различные комбинации пользовательских действий для того, чтобы убедиться, что бизнес-кейсы будут правильно работать.
  • Подтвердите, что производительность системы соответствует бизнес-требованиям.
  • Убедитесь, что безопасность правильно настроена на серверной среде.

qlikview

Аутентификация и авторизация в QlikView?

Аутентификация и авторизация — это две важных концепции в обеспечении любого приложения. Аутентификация гарантирует, что человек, который обращается к системе, является именно тем человеком, которым он представляется. Авторизация позволяет получить доступ к той информации и совершать те действия, по которым был настроен доступ для данной роли.
В QlikView это два различных процесса, которые выполняются независимо друг от друга. Когда пользователь получает доступ к QlikView, то всегда выполняется 4 шага:
4 шага при установлении доступа в QlikView
Первые два шага аутентификации — это обработка данных web-слоем (QlikView Server или IIS). На третьем шаге веб-слой передает идентифицирующую информацию на QlikView сервер, используя QVP протокол. Четвертый шаг — это авторизация, которая выполняется на сервере QlikView и которая использует группы, которые разрешены Directory Service Connector.

Существуют несколько больших преимуществ у данного подхода:

  • QlikView не нужно хранить пароли, они хранятся у провайдера идентификации, таких как LDAP или AD.
  • Могут быть применены стандартные процедуры для управления пользователями, что позволяет соблюдать политики безопасности, которые приняты в компании.
  • Существует возможность настройки аутентификации с помощью внешних провайдеров идентификации, таких Google.
  • Вся авторизация производится в backend, что упрощает защиту.

Роль Directory Service Connector в данной цепочке несколько размыта тем фактом, что почти все компоненты QlikView его используют. Web-слой, QlikView сервер, QlikView Management Service и QlikView Publisher используют Directory Service Connector для различных целей.
Большинство компонентов QlikVIew используют Directory Service Connector для авторизации или для получения информации о пользователях, за исключением тех случаев, когда используются Custom Users. Если Вы используете Custom Users, то они сначала проходят аутентификацию к Directory Service Connector, которая в отдельных случаях хранит логины и пароли пользователей.
Front-end и Back-end qlikview

Сколько измерений используется в Guage Chart?

«Guage» диаграмма — это диаграмма, которая отображает относительные данные без разбивки данных по измерениям. В диаграмме типа «Guage chart» указываются выражения с применением Set Analysis. Set Analysis может быть завязан на список элементов того или иного измерения. Но напрямую данная диаграмма измерений не содержит.
guage_chart_example_1
Существует один прием, при помощи которого можно осуществить отображение нескольких стрелочек на диаграмме Guage Chart.
Делаем отдельно, например, 4 диаграммы (причем у трех фон делаем прозрачный):
guage_chart_example_2
Далее совмещаем все 4 диаграммы и таблицу со значениями по регионам:
guage_chart_example_3
Наиболее часто используется отображение Guage chart в таблице:
guage_chart_example_4

Что такое анализ множеств (Set Analysis)?

Set Analysis (Анализ множеств) – это основной инструмент, который позволяет в сложных приложениях ограничивать подмножество данных для построения различных диаграмм, а также позволяет завязываться на конкретные выборки в конкретных измерениях. Фактически, множества задают контекст в expression, в разрезе которого мы анализируем данные.
set_analysis_qlikview_1
У анализа множеств (set analysis) существуют 3 важных компонента:
set_analysis_qlikview_2
Идентификатор — определяет состояние набора данных нашего подмножества.
Оператор — определяет операции над множествами данных (Operator эквивалентен операциям реляционной алгебры в SQL).
Модификатор — задает дополнительные условия для выбранного подмножества (Modifier эквивалентен условию “Where” в SQL запросах).
***Более подробная информация отображена в статье: https://ivan-shamaev.ru/set-analysis-in-qlikview/

Сбор требований (Requirement Gathering)?

qlikview

Вариант 1 — Сбор требований

1. Определение и описание источников данных;
2. Определение таблиц фактов;
3. Определение таблиц с измерениями и их взаимосвязей с таблицей фактов (т.е. определение ключевых полей). Описание или изучение существующего словоря данных (Data Dictionary);
4. Определение списка KPI, которые будут показаны на дашборде (dashboard), таких как Продажи, Прибыль, Прибыль %, Скидка, Маржа и т.д.;
5. Какие фильтры будут использоваться для создания выборок;
6. Список диаграмм (Charts), которые необходимо отображать на тех или иных листах.
7. Получение Циклических (Cyclic) и Drilldown групп;
8. Описание любых правил, которые определяют отображение данных (используется в Section Access);
9. Описание дополнительных функций, подобных экспорту в Excel, рассылке нарезанных отчетов по кубу по Email и т.д;
10. Получение различных мэппингов (mapping data) и других метаданных, которые находятся в плоских файлах, данные из которых не доступны в базах данных.

Вариант 2 — Чек-лист сбора требований:

Список показателей/ключевых показателей эффективности (KPI), включая:

  • Подробности расчетов (Поля, расположение таблицы, правила);
  • Иерархия/Приоритет (Например, эти показатели оказывают влияние на этот KPI; Этот KPI должен отображать суммарную информацию);
  • Какой тренд применим к тем или иным измерениям (Например, тренд по времени, по магазинам, по продуктам).

Фильтры:

  • Фильтры, необходимые для фильтрации информации;
  • Группировка информации (например, по продуктам, по департаментам и т.д.);
  • Поле приоритетности фильтров (восемь приоритетных фильтров, которые необходимо использовать на листах документа QlikView).

Требуемые таблицы (это итоговое резюмирование всех метрик и измерений, указанных выше):

  • Место нахождения полей;
  • Частота обновления;
  • Тип загрузки данных (инкрементальная загрузка, загрузка с полной заменой данных);
  • Любые дополнительные соображения по требованиям (например, наличие медленно меняющихся измерений Slowly Changing Dimensions);
  • Какие поля требуются для уточнения контекста информации или детализации информации;
  • Требования к историчным данным, в том числе — где и что нужно агрегировать.

Список ключевых диаграмм/проекций данных (таблицы с данными):

  • Тип диаграммы (Например, Line, Bar, Combo, Straight Table, Pivot Table и т.д.);
  • Отображение тренда информации по дням, неделям, месяцам в разрезе тех или иных KPI;
  • Drilldown группы (Например, иерархии);
  • Циклические (cycle) группы (Например для: цикл Bar Charts через метрики A, B, C).

Функциональность дашборда (dashboard):

  • Сколько исторических данных должен хранить дашборд;
  • Нужна ли полная и облегченная версия;
  • Частота обновлений дашборда;
  • Любая другая функциональность, которая должна быть;
  • Должны ли старые данные быть агрегированны.

Требования по пользователям:

  • Кому требуется доступ и к каким данным;
  • Когда требуются данные (для предварительной загрузки дашборда);
  • Есть ли требования безопасности данных (ограничение доступа и передачи данных);
  • Как к дашборду будет обеспечиваться доступ (AJAX, IE Plug-in, Tablet и др.);
  • Цветовая палитра для настройки дашборда и других элементов приложений;
  • Требования к языку приложения.

Общие/другие требования (например, порядок организации поддержки в SLA).

Вариант 3 – стандартная структура требований в BI проекте

1. Определение метрик
1.1. Именование и идентификаторы:
Перечислить/объяснить имена и сокращения, используемые при упоминании в метриках. Указать уникальный идентификатор, позволяющий надежно ссылаться на метрику в документах;
1.2. Описание:
Объяснить физический смысл метрики, что она на самом деле измеряет, почему важна, как используется. Прочая существенная информация, помогающая в понимании метрики;
1.3. Бизнес-потребности:
Объяснить бизнес-потребности, для удовлетворения которых необходима метрика (отслеживание эффективности бизнес-деятельности компании по метрике);
1.4. Объекты измерения;
1.5. Методы измерения;
1.6. Заинтересованные лица.
2. Информационные требования
2.1. Атрибуты метрик;
2.2. Измерения приложения;
2.3. Бизнес-правила;
2.4. Отношения между метриками.
3. Информационная модель
3.1. Целевая информационная модель;
3.2. Источники данных;
3.3. Мэппинг на целевую модель и алгоритм вывода;
3.4. Пробелы данных.
4. Требования к визуализации и интерактивности
4.1. Требуемая функциональность приложения, которая будет обеспечивать необходимые возможности анализа данных;
4.2. Карта и макеты интеракций (взаимодействие пользователей с данными);
4.3. Соотнесение с целевой информационной моделью.

Краткий шаблон для сбора требований по QlikView (BI-проект)

Лучшие техники (методы) моделирования данных?

4 шага для Dimensional Modeling:
1. Выберите бизнес-процесс для модели;
2. Определите отдельные составляющие бизнес-процесса (одно путешествие, один сегмент, один рейс, одна запись бронирования и т.д.);
3. Выберите измерения, которые будут применяться к каждой строке в таблице фактов;
4. Идентифицируйте числовые факты, которые будут содержаться в каждой строке таблицы фактов.
Dimensional_Modeling_QlikView

Что такое QlikView-сервер, Publisher и Access Point?

QlikView Server и его подсистемы выполняют задачи загрузки, защиты, распространения и управления контентом и его доставки конечным пользователям.

  • Все клиенты QlikView обращаются к серверу QlikView Server, на котором хранится контент. QlikView Server отвечает за организацию клиент-серверного доступа к приложениям и данным QlikView. Сервер хранит документы QlikView и делает их доступными конечным пользователям, количество которых может исчисляться тысячами. При необходимости он помогает планировать операции перезагрузки данных, однако обычно за планирование отвечает модуль QlikView Publisher.
  • QlikView Publisher реализует дополнительные функции планирования и доставки. Дополнительный (опциональный) компонент QlikView Publisher предназначен для создания сложных сценариев распространения контента, типичных для крупных предприятий. Он расширяет и улучшает функциональные возможности QlikView Server в области администрирования и обеспечивает дополнительную защиту контента QlikView на уровне пользователей и групп. Например, из единого контента QlikView этот инструмент может сгенерировать самостоятельные документы, предназначенные для конкретных пользователей или групп и содержащие лишь интересующие их данные.
  • AccessPoint представляет собой настраиваемую точку доступа ко всем приложениям QlikView. С помощью AccessPoint, модуля QlikView Server, пользователи обращаются ко всем приложениям QlikView в соответствии с правами доступа. Кроме того, QlikView AccessPoint поддерживает различные фоновые сервисы, например распределение и балансировку нагрузки между несколькими серверами QlikView, объединенными в кластер.

Техническая архитектура QlikView
На данной картинке отображены основные компоненты технической архитектуры QlikView Server, а также взаимосвязь с пользовательскими интерфейсами и Back-end системами.

Диаграмма трех состояний сред QlikView (Среды “Development” -> “Testing” -> “Production”)

Для того, чтобы в промышленной системе вносить изменения, рекомендуется придерживаться следующей схемы взаимодействия сред:
Development_Testing_Production

Что такое инкрементальная загрузка данных (Incremental Load) и как ее организовать?

Полная перезагрузка данных несет в себе ряд существенных недостатков:
1. Со временем, время, которое затрачивается на извлечение данных увеличивается до такой степени, что получать своевременно документы QlikView не представляется возможным (даже к середине рабочего дня, при условии запуска загрузки поздно вечером).
2. Полная перезагрузка данных значительно увеличивает нагрузку на сервер базы данных и сеть, что в свою очередь отрицательно сказывается на производительности «соседних» информационных систем.
3. Нет возможности сделать оперативную загрузку новых данных днем, т.к. процесс занимает значительное время.
Инкрементальная загрузка — это процесс загрузки только новых или обновленных записей из базы данных в отдельный QVD файл. Инкрементальная загрузка данных очень полезна, т.к. она работает намного эффективней по сравнению с полной загрузой, в частности при наличии большого объема данных.

Вариант 1 “INSERT ONLY”

  • Может использоваться для любой базы данных;
  • Загружает только новые записи (Inserted records);
  • Требуется поле ModificationDate.

Схема загрузки данных:
insert_only

Вариант 2 “INSERT & UPDATE”

  • Может использоваться для любой базы данных;
  • Загружаются вставленные и обновленные записи;
  • Требуются поля ModificationDate и PrimaryKey.

Схема загрузки данных:
insert_and_update

Вариант 3 “INSERT, UPDATE & DELETE”

  • Может использоваться для любой базы данных;
  • Загружаются вставленные и обновленные записи;
  • Удаляются DELETED записи (те, которые были удалены в базе данных);
  • Требуются поля ModificationDate и PrimaryKey;
  • Медленно работает, т.к. выполняется Inner Join;
  • Сложная схема реализации (нетривиальная задача).

Схема загрузки данных:
insert_update_delete

Вариант 4 “INSERT, UPDATE & DELETE” при наличии в базе данных флага DeletionFlag

  • Может использоваться для любой базы данных;
  • Загружаются вставленные и обновленные записи;
  • Удаляются DELETED записи (те, которые были удалены в базе данных);
  • Требуются поля ModificationDate, PrimaryKey, DeletionFlag;
  • Сложная схема реализации (нетривиальная задача).

Вариант 5 “Дополнительные правки итогового скрипта для Incremental Load”

Кейс «Инкрементальная загрузка данных — организация QVD-файлов»

Возник небольшой кейс по инкрементальной загрузке данных:
Необходимо обновлять последние три месяца, при этом в новом месяце добавляется новый файл QVD, а последний месяц (самый старый) удаляется.
Схема инкрементальной загрузки:
qlikview инкрементальная загрузка данных в QVD

Код решения

ПЕРЕМЕНННЫЕ:

ПОЛНАЯ ПЕРЕГРУЗКА ДАННЫХ:

ИНКРЕМЕНТАЛЬНАЯ ЗАГРУЗКА:

qlikview

Что такое CSV Batch Load и как ее организовать в QlikView?

Шаги процесса выгрузки данных по схеме «CSV Batch Load»:
1. PHP скрипты на стороне сервера подключаются к базе данных, извлекают данные и сохраняют их в формате CSV.
2. При необходимости можно масштабировать процесс извлечения, используя несколько серверов. Это позволяет значительно увеличить скорость извлечения данных.
3. Далее с помощью SCP или других программ, копируются файлы на QlikView сервер.
4. QlikView приложение загружает данные из всех CSV файлов, обрабатывает данные и сохраняет на QlikView сервер обработанные данные в формате QVD.
5. После этого приложения пользователей подгружают обработанные данные из QVD.

Схема процесса CSV Batch Load:
CSV_Batch_Load_QlikView

Немного о PHP

PHP-код — один из популярных сценарных языков, который является кросспратформенным. Данный язык является серверным языком, поэтому для него нужен интерпретатор. Для веб-серверов существуют php модули, которые позволяют запускать PHP скрипты. Интерпретатор PHP выполняется в окружении процесса веб-сервера. Веб-сервер управляет количеством запущенных процессов PHP и сообщает им какие скрипты требуется исполнить.

Возможности по автоматизации интеграции с внешними системами через Web-сервисы

qlikview_integration

Что такое дашборд (приборная панель или панель индикаторов)?

Панель индикаторов (Dashboard) — инструмент визуализации, используемый в операционно-ориентированных системах управления эффективностью и позволяющий измерять значения показателей по отношению к целевым и пороговым значениям на основании данных, представляемых в режиме нужного времени.
Панель индикаторов (Dashboard) – это визуальное отображение наиболее важной информации, необходимой для достижения одной или нескольких целей, которая помещается целиком на одном экране и которую можно контролировать с первого взгляда.
dashboard_example
В организации могут существовать различные типы панелей индикаторов (дашбордов):
Операционная панель индикаторов (Operational dashboard). Система управления эффективностью, которая представляет информацию об операционных процессах, причем мониторингу в рамках панели индикаторов уделяется большее внимание, нежели возможностям анализа или менеджмента.
Стратегическая панель индикаторов (Strategic dashboard). Система управления эффективностью, фокусирующая внимание сотрудников на заданиях и направлениях деятельности, которые максимально способствуют достижению стратегических целей и обеспечивают ценность бизнеса в долгосрочном плане. При этом больше внимания в рамках панели индикаторов уделяется менеджменту, нежели возможностям анализа и мониторинга.
Тактическая панель индикаторов (Tactical dashboard). Система управления эффективностью, которая позволяет менеджерам и аналитикам отслеживать продвижение различных программ и проектов по отдельным подразделениям компании и анализировать тенденции и возникающие проблемы. При этом больше внимания в рамках панели индикаторов уделяется анализу, нежели мониторингу и возможностям менеджмента.

Что такое Ad-hoc отчеты в QlikView и как это делается?

Ad-hoc отчет в QlikView — это Straight table, которая отображает выбранные измерения и выбранные метрики. Причем, пользователь сам в интерактивном режиме задает перечень измерений и метрик для отчета, кликая в списке измерений и списке метрик по интересующим его пунктам.
adhoc_report_in_qlikview

Что такое Data Island в QlikView и как его использовать?

Иногда в документе QlikView требуется создать связь между двумя таблицами, у которых нет общих полей (т.е. фактически связи между таблицами). Таблица, которая не имеет каких-либо ассоциативных связей с другими таблицами, называется «Data Island (Остров данных)». В QlikView можно создать связь между двумя таблицами с помощью функции Concat().
Синтаксис функции Concat():

Возвращает объединенную строку всех значений expression. Каждое значение может быть разделено символом, указанным в delimiter (разделитель). Порядок объединения может определяться sort-weight. Sort-weight должен возвратить целочисленное значение (чем меньше весовой коэффициент, тем больше приоритет). Если слово distinct указано перед выражением, все дубликаты будут проигнорированы.

В результате выполнения скрипта образуются две несвязанные таблицы:
data_island
1. Добавляем на лист документа элемент List Boxes для Product_Ref;
2. Добавляем Straight Table и используем DATE и PRODUCT в качестве измерений
data_island_dimension_example
3. Добавляем выражение с применением Set Analysis:

data_island_expression
В результате в Straight Table продажи изменяются в зависимости от выбора Products из списка Product_Ref. Исходный вариант таблицы:
data_island_tables
Реагирование на выборку значений:
data_island_result

Что такое DMS авторизация?

DMS (Document Metadata Service) авторизация позволяет давать разрешение на документы используя Active Directory Groups, а также можно давать доступ отдельным пользователям.
Document_Metadata_Service_enable
Document_Metadata_Service_qvw_document
Document_Metadata_Service_autorization

Что такое секция доступа (Section Access)?

Section Access (секция доступа) – это участок скрипта загрузки QlikView, которую можно использовать для ограничения доступа. Если секция доступа в скрипте QlikView настроена на автоматическую защиту, то один файл может содержать данные для нескольких пользователей или групп пользователей. QlikView будет использовать информацию в секции доступа для аутентификации и авторизации, а также для динамического сокращения данных, чтобы пользователь мог видеть только свои данные.
Защита встроена в сам файл, поэтому даже загруженный файл в некоторой степени защищен. Однако, если потребности защиты высоки, следует предупреждать загрузку файлов и использование в автономном режиме. Файлы должны публиковаться только сервером QlikView. Так как все данные находятся в файле, размер данного файла может быть очень большим.
Все системные поля Секции доступа используются для аутентификации или авторизации. Ниже описан полный набор системных полей секции доступа.
В секцию доступа можно загрузить ни одного, все или любую комбинацию полей безопасности. Если использование USERID не требуется, авторизация может быть проведена с помощью других полей, например только серийного номера.

  • ACCESS — Поле, определяющее, какой уровень доступа имеет соответствующий пользователь.
  • USERID — Поле, которое должно содержать принятый идентификатор пользователя. QlikView запросит идентификатор пользователя и сравнит его со значением в данном поле. Данный идентификатор пользователя не совпадает с идентификатором пользователя Windows.
  • PASSWORD — Поле, которое должно содержать принятый пароль. QlikView запросит пароль и сравнит его со значением в данном поле. Данный пароль не совпадает с паролем Windows.
  • SERIAL — Поле, которое должно содержать номер, соответствующий серийному номеру QlikView. Пример: 4900 2394 7113 7304 QlikView проверит серийный номер пользователя и сравнит его со значением в данном поле.
  • NTNAME — Поле, которое должно содержать строку, соответствующую имени пользователя или группы домена NT Windows. QlikView выдаст сведения о пользователе из ОС и сравнит ее со значением в данном поле.
  • NTDOMAINSID — Поле, которое должно содержать строку, соответствующую SID домена NT Windows. Пример: S-1-5-21-125976590-4672381061092489882 QlikView выдаст сведения о пользователе из ОС и сравнит ее со значением в данном поле.
  • NTSID — Поле, которое должно содержать Windows NT SID. Пример: S-15-21-125976590-467238106-1092489882-1378 QlikView выдаст сведения о пользователе из ОС и сравнит ее со значением в данном поле.
  • OMIT — Поле, которое должно содержать поле, которое должно быть опущено для конкретного пользователя. Могут использоваться подстановочные знаки, и поле может быть пустым. Простой способ сделать это – использовать подполе.

Пример синтаксиса:

<<< Вернуться в основной раздел «QlikView — краткий учебник»

Как задаются переменные и разница между операторами SET и LET?

Переменные в QlikView можно задать несколькими способами:
Способ 1: Использование операторов SET и LET в скрипте загрузки данных, либо использование выражений, результатом которых будет создание соответствующих переменных (например, после выражения Y=1+2 в скрипте загрузки создастся переменная Y);
Способ 2: Создание переменных в визуальном редакторе переменных (Variable Overview);
Способ 3: Использование Automation API функций, например функции CreateVariable класса Document (ActiveDocument.CreateVariable «MyVar»).

Оператор SET обычно используется тогда, когда необходимо описать невычисляемую переменную, например, путь к директории, наименование файла и т.п.
Оператор LET используется для определения переменных, которые необходимо вычислить в ходе выполнения скрипта загрузки.
Пример:

Переменная exampleString1 вернет строку “’abc’ & ‘def’”, а exampleString2 вернет склеенную строку – “abcdef”.

Пример:
Для задания значений переменным с помощью функций, необходимо использовать оператор LET

Пример:
Для того, чтобы произвести вычисление переменной, объявленной с помощью SET, необходимо использовать конструкцию $(variableName).

В результате выполнения скрипта переменная vResult будет иметь значение равное 12.

Примечание:
Оператор LET не является обязательным при объявлении вычисляемых переменных внутри скрипта загрузки. Поэтому вычисляемые переменные можно указывать (но лучше не стоит так делать!) без оператора LET:

Значение переменной vResult будет равно 8.

Как написать динамический SQL запрос в QlikView?

Пусть у нас имеется схема MySchemaName в базе данных. Допустим, что нам нужно получить количество строк по каждой из таблице в схеме MySchemaName. Для этого можно написать вот такой скрипт (строка подключения к базе данных должна быть прописана):

Как найти интервал времени в скрипте QlikView?

qlikview

Если у Вас имеются две даты в формате timestamp, одна из которых означает дату начала того или иного действия, а вторая дата означает окончание действия, то интервал времени можно рассчитать при помощи функции interval:

Описание функции Keep в QlikView

Функция keep, которая позволяет уменьшить одну или обе таблицы до пересечения данных таблиц перед сохранением таблиц в QlikView, предназначена для уменьшения количества случаев, когда необходимо использовать явные объединения.

Явный префикс join в языке скрипта QlikView позволяет выполнять полное объединение двух таблиц. В результате получается одна таблица. Во многих случаях такие объединения приводят к созданию очень больших таблиц. Одной из основных функций QlikView является способность к ассоциированию таблиц вместо объединения, что позволяет сократить использование памяти, повысить скорость обработки и гибкость.
Функция keep предназначена для сокращения числа случаев необходимого использования явных объединений. Префикс keep между двумя операторами load или select позволяет уменьшать одну или обе таблицы путем пересечения данных таблиц перед их сохранением в QlikView. Префиксу keep должно всегда предшествовать одно из ключевых слов inner, left или right. Выборка записей из таблицы осуществляется так же, как и при соответствующем объединении. Однако две таблицы не соединяются и сохраняются в QlikView в виде двух отдельных именованных таблиц.

Пример функции keep:

После выполнения скрипта образуется взаимосвязь между таблицами:
keep_table_result
Если на листе QlikView создать Table Box, то в результате получим, следующую картинку:
result_keep_table_box
Если бы мы использовали вместо Right Keep функцию INNER KEEP, то результирующая таблица Table Box имела бы следующий вид:
inner_keep_result_table_box

Общая схема Keep и Join:
keep_statement_qlikview
join_statement_qlikview

Чеклисты по разработке

Производительность модели данных

  • Синтетические ключи удалены из модели данных
  • Неоднозначные петли (ambiguous loops) удалены из модели данных
  • Правильная степень детализации данных (гранулярность данных)
  • По возможности используются QVD
  • По возможности используйте целочисленные ключи для объединения таблиц
  • Удалены системные ключи/timestamps (формат дата,время) из модели данных
  • Неиспользуемые поля удалены из модели данных
  • Удалены связующие таблицы из очень больших моделей данных
  • Удалены ненужные таблицы в схеме снежинка (произведена консолидация данных)
  • Разорвите сцепленные поля с измерениями в отдельные поля
  • Оптимизирована работа с QVD файлами
  • Используется метод Autonumber для замены больших сцепленных ключей (concatenated keys)

Лучшие практики проектирования (дизайна)

  • Используете цвета только для контраста и фокусирования
  • Используете нейтральные и приглушенные цвета
  • Используете шаблоны или темы там, где они доступны
  • Приложение оптимизировано для разрешения экрана пользователя
  • Дизайн согласован между вкладками приложения
  • Формат объектов листа согласован
  • Наиболее часто используемые выборки находятся вверху, наименее популярные — внизу
  • Доступны drop-down выборки для всех столбцов straight или pivot таблиц
  • Версия QV разработчика соответствует версии, которая используется или будет использоваться в промышленной эксплуатации
  • Используются общие переменные в выражениях
  • Используются условия расчета (calculation conditions) на больших диаграммах

Производительность интерфейса

  • Запустите QlikView Optimizer для того, чтобы протестировать использование памяти
  • Минимизируйте количество различных функций
  • Минимизируйте вложенные IF условия
  • Минимизируйте строковые сравнения
  • Макросы минимизированы или устранены
  • Минимизируйте показание частотных характеристик
  • Минимизируйте set analysis в отношении больших таблиц фактов
  • Минимизируйте pivot диаграмма для больших приложений

Лучшие практики по написанию скриптов

  • Стандарт наименования используется для полей, таблиц, переменных
  • Скрипт хорошо комментируется — изменения помечены датой
  • Первая вкладка скрыта и содержит информационный раздел
  • Каждая предметная область имеет вкладку в скрипте
  • Используется подключение файлов через include или в скрытом скрипте для всех ODBC подключений
  • Все блоки кода дополнены комментариями
  • Все ссылки на файлы используют стандарт наименования
  • Используются бизнес-имена для полей в пользовательском интерфейсе
  • Скрипт безопасности содержится в подключаемом файле с помощью include процедуры

Что такое drill?

Интерактивная навигация по данным запроса
Источник: Введение в многомерный анализ
Drill – это детализация отчета с помощью уменьшения степени агрегации данных, совмещенное с фильтрацией по какой-нибудь другой оси (или нескольким осям).

Сверление бывает нескольких видов:

  • Drill-down – фильтрация по одной из исходных осей отчета с выводом детальной информации по потомкам в рамках иерархии выбранного фильтрующего члена. Например, если имеется отчет по распределению заказов в разрезе Стран и Годов, то при щелчке на 2015-м году выведется отчет в разрезе тех же Стран и месяцев 2015 года.
  • Drill-aside – фильтрация под одной или нескольким выбранным осям и снятие агрегации по одной или нескольким другим осям. Например, если имеется отчет по распределению заказов в разрезе Стран и Годов, то при щелчке на 2015-м году выведется другой отчет в разрезе, например, Стран и Поставщиков с фильтрацией по 2015 году.
  • Drill-trough – снятие агрегации по всем осям и одновременная фильтрация по ним же – позволяет увидеть исходные данные из таблицы фактов, из которых получено значение в отчете. Т.е. при щелчке по значению ячейки выводится отчет со всеми заказами, которые дали эту сумму. Эдакое мгновенное бурение в самые «недра» куба.

Что такое MAD фреймворк и DAR методология?

MAD Framework — концепция, которая гласит о том, что архитектура системы BI должна позволять пользователям переходить от самой агрегированной информации к подробным данным.
DAR MAD Методология в QlikView
Зачем это нужно: в первую очередь, данная концепция позволяет наиболее оптимально принимать управленческие решения. Вы обнаруживаете проблемы на KPI, аналитики локализируют проблемы, рабочие устраняют проблемы на основе детальных данных.

Схема концепции MAD:
mad_framework

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

Существует аналогичный термин — методология DAR (Dashboard, Analysis, Reporting). Структура приложения строится таким образом, что пользователь переходит от общих дашбордов (Dashboard) к детализированным отчетам (Reporting). Данная методология позволяет быстро выявлять проблемные точки (продукты, подразделения, каналы сбыта и т.д) на высоком уровне, а затем углубляться в анализ причин отклонений переходя на слои Analysis и Reporting.
Более подробнее можно ознакомиться в руководстве: Technical Paper — DAR — QlikView.pdf

Как получить переменную с одинарной кавычкой в QlikView?

Иногда необходимо сформировать из значений поля в таблице переменную, при этом значения должны быть обернуты в одинарные кавычки и разделены запятыми. Ниже приведен рабочий пример:

С помощью такого подхода можно использоваться данные из QVD-файлов в динамическом построении исполняемых SQL-запросов.

Удаление таблиц или полей в QlikView

Удалить можно одну таблицу, а можно несколько:

Синтаксис удаления полей из таблицы в QlikView:

Как запустить процедуру PL/SQL из скрипта QlikView?

Для запуска процедуры PL/SQL в Oracle DB из скрипта QlikView, необходимо использовать следующий синтаксис:

Как включить подробное логирование в QlikView?

Для того, чтобы при загрузке данных (выполнении скрипта) генерировался log-файл, необходимо в свойствах документа включить генерацию лог-файла: Settings -> Document Properties -> отметить «Generate Logfile».
Generate Logfile

Как сделать URL-ссылки в таблице?

Допустим, что у нас есть таблица с названием статей и ссылками на статьи:

Нам необходимо создать таблицу в QlikView, из которой можно было бы попасть на сайт со статьей. Делается это очень просто:
dimension_table_link
expressions_table_link_qlikview_1
expressions_table_link_qlikview_2
Результирующая таблица:
table_link_qlikview

Как создать выпадающий список для присвоения значения переменной в QlikView?

Вот такое можно сделать:
drop_down_list_input_box
Исходные данные:

Шаг 1 — выбираем объект Input Box:
input_box_qlikview
general_input_box_qlikview
Шаг 2 — настраиваем Constraints:
constraints_input_box_qlikview
Шаг 3 — Формируем список:
expression_input_box_qlikview

Шаг 4 — Убираем знак равно:
list_box_qlikview

Обработка нестандартных дат — форматирование дат в QlikView

Как из такой даты ‘2015-07-28T12:26:05.265+00:00’ получить вот такую дату ‘28.07.2015 12:26:05.265’? Очень просто!

Получаем дату:

Получаем время:

Формируем требуемую дату:

Дата минус количество дней — как получить?

Иногда в отчетах необходимо отобразить N количество дней от текущей даты. Для этого необходимо создать переменную с текущей датой (можно создать в скрипте загрузке данных):

Далее в Label и Expression используем выражения:

Как вывести в Straight Table топовые продукты при использовании в рассчитываемом измерении ValueList()

Как исключить влияние выборок во всех измерениях, кроме перечисленных, на конкретную диаграмму в QlikView?

На помощь приходит системное поле $Field и Set Analysis:

В окне Expression выражение будет подчеркнуто как неправильное (но сам подход проверен и работает 😉 ).
Исключение влияния всех выборок кроме некоторых на диаграмму

Массовая загрузка файлов в QlikView из директории (числов файлов не известно заранее)

qlikview

Массовая загрузка данных в таблицу фактов

Иногда требуется загрузить данные из подготовленных qvd файлов разных форматов. Для этих целей применяется concatenate операция:

Как вытащить из модели/приложения QlikView данные в qvd или csv?

Для того, чтобы вытащить данные из модели QlikView (файл формата qvw), достаточно запустить вот такой вот скриптик:

«Импровизированный» генератор случайных чисел в QlikView

Создание календаря в QlikView

Для того, чтобы получить календарь в QlikView, достаточно взять ниже приведенный код и заменить наименование таблицы, в которой находятся даты. QlikView получает минимальную и максимальную дату и на основе этих данных генерирует массив дат с различными атрибутами (номер недели, месяц и т.п.):

Создание исполняемого файла (Executable application.exe in qlikview)

Для того, чтобы создать исполняемый файл, необходимо в приложении с лицензией зайти в меню и произвести следующие действия (привожу только картинки):
Исполняемый файл exe в qlikview
settings_exe_qlikview
qlikview

Как через url открыть другой файл QlikView

В Straight table можно создать URL, который будет вести к приложению с детальными данными:

Внимание: этот подход работает только с диска C (где установлена винда).

Получить текущую директорию и родительскую директорию в скрипте QlikView

Получить текущую директорию (папку, в которой находимся):

Получить родительскую директорию (и т.д.):

Загрузить только первые 10 строк записей в таблицу в QlikView

Для того, чтобы загрузить первые N строк, необходимо перед Load добавить фразу First N. Пример для 10 строк (N=10):

Рестарт сервисов QlikView Server

Restart QlikView Services.bat

qlikview

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x