S ShaoShurProject / QVD Control
Qlik Script · modular library

QVD Control Library

Подпрограммы.
Как библиотека.

Модульная система QVS-подпрограмм: нужная папка подключается одной командой, каждый файл добавляет собственную логику, а затем библиотека сама вызывает обработчики очистки и убирает служебные переменные.

ZIP содержит только QVS-файлы в папке Scripts с сохранением структуры каталогов

LIBCONNECTION.QVS / TRACE
INCLUDE GROUPККД
4 modules found
Формат.qvs modules
Подключение$(pInclude(...))
КонтрольQVD quality gates
ОчисткаAutomatic _clear

Одна команда.
Вся нужная библиотека.

Вместо ручного перечисления файлов `IncludeLib` обходит каталог, формирует цепочку `MUST_INCLUDE` и одновременно собирает вызовы очистки для каждого подключённого модуля.

01 / CALL

$(pInclude(ККД))

Приложение запрашивает конкретную группу библиотек.

02 / DISCOVER

FileList(/*.qvs)

Qlik находит все QVS-файлы в выбранном каталоге.

03 / INCLUDE

MUST_INCLUDE

Из найденных путей динамически собирается очередь подключения.

04 / CLEAN

$(pClear)

После работы вызываются `_clear` всех загруженных подпрограмм.

Папка с QVS —
одна библиотека.

Подпрограммы раскладываются по назначению: `ЛОГ`, `ККД`, `ДЕВ` и так далее. `$(pInclude(ККД))` обходит выбранную папку и подключает все QVS-файлы — отдельный `MUST_INCLUDE` для нового модуля не нужен.

СоглашениеСлужебные переменные начинаются с `p`, а каждый модуль предоставляет собственный обработчик `_clear`.

ИспользованиеПодключаем общий `Scripts.qvs`, нужную группу и завершаем загрузку через `Call Exit`.

ОбменQVS-файл, собранный по этим правилам, можно передать коллеге: достаточно положить его в соответствующую папку.

По модели использования это отдалённо напоминает класс: с внешними методами и скрытым по соглашению служебным состоянием. Это только аналогия — сам Qlik Script объектно-ориентированным от этого не становится.

Подключить.
Выполнить.
Убрать за собой.

У Qlik Script нет привычной изоляции локальных переменных внутри подключённых подпрограмм. Поэтому вместе с цепочкой include формируется `pClear`: список вызовов одноимённых `_clear`, который очищает служебное состояние всей библиотеки.

APP SCRIPTWINDOWS-1251 / QLIK SCRIPT
$(MUST_INCLUDE=lib://*/Scripts/Scripts.qvs); // подключаем общий скрипт
$(pInclude(ККД)); // подключаем библиотеку скриптов

// Работаем

Call Exit;

Предсказуемая структура
каждой подпрограммы.

Единые правила уменьшают конфликты глобальных переменных и позволяют подключать новые QVS-файлы без переписывания центрального загрузчика.

_INFO

Самодокументирование

Модуль умеет вывести в trace назначение, версию, ответственного и варианты вызова.

MAIN

Основная логика

Подпрограмма без постфикса предоставляет публичный сценарий использования модуля.

_CLEAR

Собственная уборка

Каждый модуль знает свои служебные переменные и гарантированно очищает их после работы.

Контроль качества
как часть ETL.

Проверки и технические операции вызываются тем же способом, что и обычная бизнес-логика приложения.

BACKUP

Backup

Резервные копии QVD по расписанию: при каждой загрузке, ежедневно, еженедельно или ежемесячно.

COMPARE

Compare

Сопоставление текущей таблицы с сохранённой версией по ключам, количеству и значениям мер.

ROWS

CheckRowsCount

Контроль неожиданных изменений количества строк между этапами загрузки.

UNIQUENESS

CheckUniqRecords

Поиск неуникальных записей по ключу с исключениями и отдельным списком мер.

LOGGING

AppLog

Журналирование приложения, источников, сохранений, измерений, мер, тегов и комментариев.

EXTENSIBLE

Новый .qvs

Достаточно положить модуль в библиотечную папку и реализовать контракт `_clear` — загрузчик найдёт его сам.

Соглашения по разработке
библиотек подпрограмм.

Основной архив содержит только исполняемые QVS-файлы. Описание модулей и правила расширения библиотеки можно скачать отдельно.

Код загрузки тоже
должен быть системой.

Архитектура библиотеки создавалась для повторного использования, контролируемой поддержки и чистого состояния после выполнения.

Скачать QVD Control Library