Сегодня будем говорить о загрузке данных. Существует достаточно много префиксов для загрузки данных в QlikView, посмотрите сами – 22 разных варианта.
Сегодня хочу обратиться к BUFFER LOAD – этот тип загрузки полезен при оптимизации и тестировании приложений.
Введение в BUFFER LOAD
Прежде всего, давайте разберемся, где будет полезен префикс BUFFER.
Определение
QVD-файлы могут создаваться и поддерживаться автоматически через префикс buffer. Его можно использовать в большинстве выражений LOAD и SELECT. Используя именно этот тип загрузки данных, Вы определяете, что QVD-файлы работают в буфере.
Синтаксис:
Buffer [(option [ , option])] ( load statement | select statement )
option::= incremental | stale [after] amount [(days | hours)]
Если вы не используете дополнительные настройки, то QVD-буфер создается после первого выполнения скрипта. QVD-буфер хранится по умолчанию в C:\ProgramData\QlikTech\QlikView\Buffers, и выглядит это примерно вот так:
QVD буфер автоматически очищается, если в нем есть скрипты, которые нигде не задействованы или файл, например, удален.
При выполнении буфферной загрузки, вы увидите следующее окно:
Примеры использования
Недавно я получил задание сделать изменения в скрипте, при этом в модели данных было около 165 млн. записей. Каждая перезагрузка занимала три часа, причем выполняться должны были все операции за раз, и их нельзя было разделить. Как раз в этом случае полезно будет использовать буфферную загрузку данных, что я и сделал.
Также такую загрузку полезно использовать в инкрементальных загрузках. Вы можете установить дату или время, сколько должен храниться кэш.
После того как вы перемещаете модель данных в боевые условия, префикс буффер нужно удалить – вам не нужны локальные перезагрузки.
Заключение
В общем, Buffer – полезное решение для оптимизации выражений Select и тестирования приложений. Рекомендую использовать J
Друзья, успехов в разработке и до новых встреч!
Весьма сумбурная статья, основополагающая идея хорошая, но есть важные детали которые пропущены или искажены. Во встроенном в QV help намного более полезная информация, проще было бы кусками процитировать.
Некорректный перевод фразы «QVD buffers will normally be removed when no longer referenced anywhere throughout a complete script execution in the document that created it or when the document that created it no longer exists. »
Для отладки есть специальный режим выполнения скрипта — Debug, а также statement prefix — First (например First 100 LOAD * From …). Смысла использовать Buffer для отладки — никакого.
Из хелпа: «Note that the incremental option can only be used with load statements and text files«. То есть реальный инкремент задействован лишь при работе с лог-файлами. Применительно к СУБД — только примитивный способ «считать что источник не менялся и данные грузить из буфера»: «A stale after clause simply states a time period from the creation time of the QVD buffer after which it will no longer be considered valid. Before that time the QVD buffer will be used as source for data and after that the original data source will be used.