Перейти к основному содержимому

Файлы QVD

Файл QVD (QlikView Data) — это файл, в котором содержится таблица данных, экспортируемых из программы Qlik Sense или QlikView. QVD является собственным форматом Qlik и может быть записан и прочтен только с помощью Qlik Sense или QlikView. Формат файла оптимизирован для скорости при чтении данных из скрипта Qlik Sense, но в то же время не занимает много места. Чтение данных из файла QVD обычно в 10–100 раз быстрее, чем чтение из других источников данных.

Файлы QVD можно читать в двух режимах: стандартном (быстром) и оптимизированном (сверхбыстром). Выбор режима выполняется обработчиком скриптов Qlik Sense автоматически. Оптимизированный режим может использоваться только в том случае, если все загруженные поля считываются без преобразований (формул, действующих на поля), но в то же время допускается изменение имен полей. Предложение Where в программе Qlik Sense управляет распаковкой записей и отключает оптимизированную загрузку.

Файл QVD содержит только одну таблицу данных и состоит из трех частей:

  • Заголовок XML (в кодировке UTF-8), который описывает поля в таблице, макета последующей информации и некоторых прочих метаданных.
  • Таблицы символов в формате, заполненном байтами.
  • Фактические данные таблиц в формате, заполненном битами.

Файлы QVD используются для многих целей. Можно выделить четыре главных области назначения. В любой из этих ситуаций может использоваться несколько из них:

  • Увеличение скорости загрузки данных
  • Для больших наборов данных выполнение скрипта значительно ускоряется благодаря буферизации неизменяющихся или медленно изменяющихся наборов входных данных в файлах QVD.

  • Снижение нагрузки на серверы баз данных
  • Объем данных, выбираемых из внешних источников данных, может также значительно сократиться. Это сокращает рабочую нагрузку на внешние базы данных и сетевой трафик. Более того, если несколько скриптов Qlik Sense совместно используют одни и те же данные, необходимо лишь один раз загрузить их из исходной базы данных в файл QVD. Другие приложения могут использовать те же данные с помощью файла QVD.

  • Консолидирование данных из нескольких приложений Qlik Sense.
  • При работе с оператором скрипта Binary можно загрузить данные только из одного приложения Qlik Sense в другое, но с файлами QVD скрипт Qlik Sense может совместно использовать данные из любого числа приложений Qlik Sense. Это открывает возможности для приложений по консолидации похожих данных из разных подразделений компании и т. д.

  • Инкрементальная загрузка
  • Часто функции QVD могут использоваться для облегчения инкрементальной загрузки, то есть загрузки только новых записей из постоянно растущей базы данных.

Создание файлов QVD

Файл QVD можно создать двумя способами:

  • Явное создание и присвоение имен с помощью команды Store в скрипте Qlik Sense.
  • Укажите в скрипте, что ранее считанную таблицу или ее часть необходимо экспортировать в явно названный файл в указанном вами местоположении.

  • Автоматическое создание и обслуживание из скрипта.
  • Путем постановки перед оператором load или select префикса Buffer приложение Qlik Sense автоматически создает файл QVD, который в некоторых случаях может использоваться вместо оригинального источника данных при перезагрузке данных.

Между итоговыми файлами QVD нет различий относительно скорости чтения.

Store

Эта функция скрипта создает файл QVD, CSV или txt с заданным именем.

Syntax:  

Store[ *fieldlist from] table into filename [ format-spec ];

Оператор может экспортировать поля только из одной таблицы данных. Если требуется экспортировать поля из нескольких таблиц, необходимо заранее сформировать явное объединение в скрипте для создания таблицы данных, которую следует экспортировать.

Текстовые значения экспортируются в файл CSV в формате UTF-8. Можно указать разделитель. См. LOAD. Оператор store для файла CSV не поддерживает экспорт BIFF .

Store mytable into [lib://DataFiles/xyz.qvd]; Store * from mytable into [lib://DataFiles/xyz.qvd]; Store myfield from mytable into [lib://DataFiles/xyz.qvd]; Store myfield as renamedfield, myfield2 as renamedfield2 from mytable into [lib://DataFiles/xyz.qvd]; Store mytable into [lib://DataFiles/myfile1.txt]; Store mytable into [lib://DataFiles/myfile2.csv];

Выполните следующие действия.

  1. Откройте приложение Учебное пособие по написанию скриптов продвинутого уровня.
  2. Щелкните раздел скрипта Product.
  3. Добавьте следующее в конец данного скрипта:
  4. Store * from Product into [lib://DataFiles/ProductData.qvd](qvd);

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

    CrossTable(Month, Sales) LOAD Product, "Jan 2014", "Feb 2014", "Mar 2014", "Apr 2014", "May 2014" FROM [lib://DataFiles/Product.xlsx] (ooxml, embedded labels, table is Product); Store * from Product into [lib://DataFiles/ProductData.qvd](qvd);

  5. Щелкните команду Загрузить данные.
  6. В списке файлов должен появиться файл Product.qvd.

    Этот файл данных является результатом скрипта Crosstable и представляет собой таблицу из трех столбцов, по одному столбцу для каждой категории (Product, Month, Sales). Этот файл данных теперь можно использовать для замены целого раздела скрипта Product .

Чтение данных из файлов QVD

Программа Qlik Sense может читать файл QVD или получать к нему доступ следующими способами:

  • Загрузка файла QVD в качестве явного источника данных. Оператор load может ссылаться на файлы QVD в скрипте Qlik Sense, как на любые другие типы текстовых файлов (csv, fix, dif, biff и т. д.).
  • LOAD * from [lib://DataFiles/xyz.qvd] (qvd); LOAD fieldname1, fieldname2 from [lib://DataFiles/xyz.qvd] (qvd); LOAD fieldname1 as newfieldname1, fieldname2 as newfieldname2 from [lib://DataFiles/xyz.qvd](qvd);
  • Автоматическая загрузка буферизованных файлов QVD. При использовании префикса buffer с операторами load или select для чтения явные выражения не требуются. Программа Qlik Sense определяет степень, до которой она использует данные из файла QVD, в отличие от получения данных с помощью оригинального оператора LOAD или SELECT.
  • Доступ к файлам QVD с помощью скрипта. Для получения различной информации о данных, находящихся в заголовке XML файла QVD может использоваться несколько функций скриптов (начинаются с QVD).

Выполните следующие действия.

  1. Закомментируйте весь скрипт в разделе скрипта Product.
  2. Введите следующий скрипт:
  3. Load * from [lib://DataFiles/ProductData.qvd](qvd); 

  4. Щелкните команду Загрузить данные.
  5. Данные загружаются из файла QVD.

    Окно хода выполнения загрузки данных
    Data load progress window.

Примечание об информацииЧтобы узнать об использовании файлов QVD для инкрементальных загрузок, см. эту запись блога в Qlik Community: Overview of Qlik Incremental Loading (Обзор инкрементальной загрузки в Qlik)

Buffer

Файлы QVD могут создаваться и обслуживаться автоматически посредством префикса Buffer. Этот префикс может использоваться на большинстве операторов LOAD и SELECT в скрипте. Он указывает на то, что файлы QVD используются для кэширования/буферизации результата оператора.

Syntax:  

Buffer [ (option [ , option])] ( loadstatement | selectstatement ) option::= incremental | stale [after] amount [(days | hours)]

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

Example:  

Buffer load * from MyTable;

stale [after] amount [(days | hours)]

Amount — число, обозначающее период времени. Могут использоваться десятичные числа Decimals. Единицей измерения являются дни, если не указано.

Параметр stale after обычно используется с источниками баз данных, где нет простой метки времени на оригинальных данных. Предложение stale after просто указывает период времени с момента создания буфера QVD, после которого оно будет считаться недействительным. До этого времени в качестве источника данных будет использоваться буфер QVD, а после этого — оригинальный источник данных. Файл буфера QVD будет автоматически обновлен, и начнется новый период.

Example:  

Buffer (stale after 7 days) load * from MyTable;

Incremental

Параметр incremental дает возможность прочитать только часть базового файла. Данные о предыдущем размере файла находятся в заголовке XML файла QVD. Это особенно полезно при работе с файлами журнала. Все записи, загруженные в предыдущий раз, считываются из файла QVD, в то время как последующие новые записи считываются из оригинального источника, в результате чего создается обновленный файл QVD.

Обратите внимание, что параметр incremental может использоваться только с операторами LOAD и текстовыми файлами, а инкрементальная загрузка не может использоваться там, где устаревшие данные изменены или удалены.

Example:  

Buffer (incremental) LOAD * from MyLog.log;

Обычно буферы QVD удаляются, если к ним больше не обращаются ни на каком этапе выполнения всего скрипта в приложении, его создавшем, либо в том случае, если приложение, его создавшее, уже не существует. Оператор Store используется, если необходимо сохранить содержимое буфера в качестве файлов QVD или CSV.

Выполните следующие действия.

  1. Создайте новое приложение и дайте ему имя.
  2. Добавьте новый раздел скрипта в Редакторе загрузки данных.
  3. Под элементом DataFiles в меню справа щелкните Выбрать данные.

  4. Загрузите, а затем выберите Cutlery.xlsx.
  5. В окне Выбрать данные из щелкните команду Вставить скрипт.
  6. Закомментируйте поля в операторе LOAD и измените его следующим образом:
  7. Buffer LOAD *

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

    Buffer LOAD * // "date", // item, // quantity FROM [lib://DataFiles/Cutlery.xlsx] (ooxml, embedded labels, table is Sheet1);

  8. Щелкните команду Загрузить данные.
  9. При первой загрузке данных они загружаются из Cutlery.xlsx.

    Окно хода выполнения загрузки данных
    Data load progress window.

    Оператор Buffer также создает файл QVD и сохраняет его в Qlik Sense. В облачном развертывании он сохраняется в каталог в облаке.

  10. Щелкните еще раз Загрузить данные.
  11. В этот раз данные загружаются из файла QVD, созданного оператором Buffer при первой загрузке данных.
  12. Окно хода выполнения загрузки данных
    Data load progress window.

Спасибо!

Вы закончили обучение по данному учебному пособию. Надеемся, вы узнали много нового о написании скриптов в программе Qlik Sense. Чтобы получить информацию о дальнейших курсах обучения, посетите наш веб-сайт.