В сегодняшней статье я хочу рассказать о разработанном мной инструменте, призванном помогать архитекторам/PM/разработчикам лучше понимать архитектуру и структуру развернутого решения (проекта) QlikView. Ведь лучшее понимание проекта — это путь к более эффективному его управлению, снижению рисков, повышению качества конечных продуктов.
Название инструмента — Lineage-Dependency Analyzer. Это приложение QlikView, назначение которого — визуализировать решение QlikView как Систему взаимосвязанных элементов (слово Система с большой буквы — чтобы подчеркнуть, что речь идет о «множестве элементов, находящихся в отношениях и связях друг с другом, которое образует определённую целостность, единство»).
Наглядная визуализация, построенная приложением, позволяет быстро и эффективно воспринять сложную структуру и множество связей.
Функции интерактивной навигации, которыми так славен QlikView (фильтрация мышкой прямо на чартах, ассоциативный поиск, подсветки и выделения, выборки «зеленый-белый-серый») обеспечивают возможность быстрого и бесшовного перемещения «от общего к частному» и «от частного к общему».
Но, прежде чем перейти к самому вкусному — описанию функционала и кейсов, несколько абзацев с теорией для затравки.
Что такое «решение QlikView«?
Давайте вначале определим, что собственно представляет собой развернутое решение QlikView, и почему говорим о взаимосвязях.
По большому счету, решение (проект) QlikView — это два блока элементов (иногда еще называют забавным словом «артефакты»):
1) набор файлов QVW/QVD, структурированный с помощью многоуровневой системы папок:
2) набор регламентных заданий (Tasks) по обновлению QVW, настроенный в QlikView Management Console:
В рамках данной статьи мы сфокусируемся на элементах из первого блока — файлы QVW (собственно документы QlikView со скриптами, моделью данных и пользовательским интерфейсом) и QVD (таблицы данных, сохраненные в проприетарном формате).
Связи между элементами
Очевидно, что элементы решения не живут обособленно, а взаимодействуют друг с другом.
Взаимодействие между приложениями QVW и таблицами QVD можно охарактеризовать так:
- Каждый отдельный QVW, как правило, загружает данные из одного и более QVD, и/или/и возможно — сохраняет данные в один или более QVD.
- Каждый отдельный QVD создается как минимум одним QVW, и используется одним или более QVW.
Иными словами между QVW и QVD существуют явные прямые взаимосвязи.
Явные они потому, что информация о них достаточно легко извлекается либо автоматически (с помощью чтения мета-данных файлов qvw\qvd), либо вручную путем чтения конструкций LOAD From в скрипте.
Но мы также знаем, что в BI-проектах уровнем выше простейшего, используется архитектура ETL — Extraction/Transformation/Loading, и как следствие, конечные приложения QVW загружают данные из QVD, созданных в результате трансформаций исходных данных техническими приложениями QVW — «трансформерами».
В такой схеме между QVW и QVD возникают неявные косвенные взаимосвязи (обозначены пунктиром на рисунке).
Неявные они потому, что информация о них специальным образом нигде не хранится, и для ее подготовки требуется усилия.
Чем полезна информация о косвенных взаимосвязях между QVW и QVD, и что такое Lineage и Dependency analysis?
Имея под рукой информацию о косвенных взаимосвязях, можно ответить на следующие два общих вопроса, которые в тех или иных вариациях встают перед разработчиком/менеджером при работе на проекте QlikView:
- Я смотрю на конкретный элемент, и хочу понять — от каких прочих элементов он так или иначе зависит?
- Если я внесу изменения в некоторый элемент, на каких прочих элементах, так или иначе зависящих от данного, эти изменения могут сказаться?
Общепринятые английские термины индустрии Business Intelligence для обозначения этих вопросов — Lineage analysis (все что происходит «выше по течению», хронологически раньше рассматриваемой точки) и Dependency analysis («ниже по течению», хронологически позже точки).
Что предлагает Qlik и другие вендоры для анализа косвенных взаимосвязей в системах
Qlik к сожалению не предлагает ничего внятного. Governance Dashboard покажет лишь прямые взаимосвязи для выбранного элемента. Expressor малопопулярен, а с октября 2015 и вовсе выведен из продуктовой линейки. Решения партнеров, рекомендованные Qlik — Alteryx и Lavastorm — содержат собственный ETL-механизм, и на уже развернутых «обычных» решениях QlikView никак не помогут.
В то же время, другие BI и RDBMS системы такую функциональность содержат, предоставляя информацию о прямых и косвенных взаимосвязях, начиная с иерархических списков, заканчивая наглядной визуализацией. Несколько примеров — Microsoft SQL Server Integration Services, SAP HANA, SAP BW.
Таким образом, в QlikView налицо некоторая брешь в функциональности, которую я и решил закрыть, разработав собственное приложение.
Ну и теперь — все о нем.
Lineage-Dependency Analyzer: Основные возможности
- Автоматически выявляет взаимосвязи между приложениями QlikView, таблицами QVD, плоскими файлами;
- С помощью наглядной визуализации показывает свойства Системы: цель, входы/выходы элементов, прямые и косвенные взаимосвязи;
- Позволяет выполнять ассоциативный поиск для акцентирования и детального изучения отдельных свойств;
- Дает единый взгляд на модели данных в приложениях и таблицах QVD для понимания сходств и различий, контроля единства и следования стандартам.
Lineage-Dependency Analyzer: Решаемые задачи
Задача 1. Показать все сущности и потоки данных на графе
Граф позволяет увидеть системные взаимосвязи между элементами решения QlikView. Сущности показаны на графе в виде кружков, а их взаимосвязи — через потоки данных в виде стрелок.
Граф однонаправленный, читается «слева направо». Левее всего — элементы, с которых все начинается (экстракторы, плоские файлы), правее всего — конечные приложения.
Приемы работы:
- щелкнуть на точку, чтобы увидеть название сущности и подсветить все прямо или косвенно связанные с ней. Посмотреть названия связанных элементов можно наведя курсор или щелкнув на них;
- навести курсор на точку и «анимировать» прямо связанные с ней сущности.
Как и на любом другом чарте, можно делать выделения сразу нескольких элементов с помощью drag-n-drop.
Задача 2. Показать структурные взаимоотношения и связи
Диаграммы отношений «родитель-потомок» и матрицы позволяют взглянуть на то, как связаны друг с другом поля, таблицы, источники, приложения.
Например:
- Какие таблицы и поля входят модель данных каждого из приложений/источников;
- Какие источники используются для каждого из приложений; каковы наиболее часто используемые;
- Какие поля/таблицы/источники используются многократно, т.е. более чем в одном приложении.
Задача 3. Показать статистику по каждой сущности, таблице и полю
Таблицы статистики представлены для всех категорий (сущности, приложения, источники, таблицы, поля) и позволяют узнать:
- Количество потоков данных, где участвует сущность;
- Количество связанных сущностей (прямо или косвенно);
- Количество таблиц/полей в модели данных;
- Количество источников для приложения;
- Количество приложений, где используется источник;
- Количество сущностей, в модели которых присутствует таблица/поле.
Задача 4. Показать свойства системных взаимосвязей
Списки свойств позволяют либо сделать выборку сущностей по определенным критериям, либо посмотреть значения этих свойств для выбранной сущности.
Например:
- Номер шага в схеме потоков данных;
- Список связанных сущностей (прямо или косвенно);
- Список потоков данных, в которых участвует сущность;
- Направление связи (предшественник-потомок).
Lineage—Dependency Analyzer: Для кого будет полезно
В своей практике я использую инструмент вот уже около полутора лет (естественно периодически дорабатывая его по мере обнаружения дефектов и возникновения новых идей и потребностей).
Вспомнив свои роли за это время и соответствующие задачи, решать которые помогло приложение, у меня получилась вот такая табличка-резюме с «бенефициарами»:
Позиция |
Задачи, решаемые Lineage-Dependency Analyzer |
Архитектор решений QlikView |
|
Менеджер/Руководитель проектов |
|
Разработчик QlikView |
|
Администратор QlikView, специалист по поддержке QlikView |
|
Lineage—Dependency Analyzer: Попробовать в действии
Как говорится в любимом слогане Qlik, «Seeing Is Believing». Скачайте и попробуйте приложение в действии! Возможно, вы найдете его полезным и решите обогатить им свою практику, сделав работу более эффективной, а ее результат – более качественным.
________________________
*Upd: приложение обновлено, стало бесплатным
Lineage—Dependency Analyzer: Реальные кейсы
В качестве иллюстрации практического использования, приведу три примера визуализации реальных решений QlikView, на которых был развернут инструмент.
Свежие комментарии