XML-заголовки в Qlik QVD-файлах

QVD файлы составляют важную часть многих реализаций Qlik и являются идеальным способом хранения данных как в Qlik Sense, так и в QlikView. Однако вы можете не знать о том, что есть XML-заголовки для этих файлов, содержащие полезную информацию. Эта статья содержит описание XML-заголовков этот заголовок ссылки на загрузку вспомогательных утилит и описание способов их использования в Qlik Sense и QlikView.

Зачем использовать QVD файлы?

Этот вопрос мы уже подробно рассматривали в других наших статьях, поэтому здесь мы не будем подробно останавливаться на этом вопросе. Просто хотим еще раз сказать, что QVD файлы представляют собой метод наилучшей практики разделения уровней ETL и уровня представления данных в реализации приложений Qlik, они также необходимы для дополнительных нагрузок. Преимущества разбивки этапов ETL на отдельные задачи с QVD в качестве промежуточного файла — это то, благодаря чему различные части вашего кода могут быть протестированы и запускаться отдельно (что может ускорить разработку). Преимущества инкрементных нагрузок более очевидны, и вам нужно всего лишь вытащить последние или измененные данные из вашего источника данных, а остальные — из предварительно сохраненных QVD.

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

Что находится в XML-заголовке?

Самый простой способ узнать, что вам доступно в заголовке QVD, — это посмотреть. Если вы просто загрузите QVD в текстовый редактор, вы найдете заголовок вверху. Будьте осторожны, возможно, это не так разумно для очень больших QVD!

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

Загрузка XML-заголовка

Ниже, в этой статье, мы подробно опишем содержание этого заголовка и о том, как загрузить XML-заголовки QVD QlikView (загрузка заголовка в Qlik Sense выполняется аналогичным образом).

Просто создайте библиотеку, указывающую, где находятся ваши QVD (или вы, вероятно, уже это сделаете). Щелкните значок «Выбрать данные» точно так же, как и чтобы загрузить содержимое из QVD. Затем Qlik Sense корректно идентифицирует этот файл как QVD и предлагает прочитать его как распознанный формат файла. Используя раскрывающийся список, вы можете переопределить это, и сказать, что хотите загрузить часть XML-файла. Как только вы это сделаете, вы увидите заголовок XML в предварительном просмотре.

Когда вы нажмете «Вставить скрипт», код для загрузки заголовка QVD будет вставлен в ваш сценарий загрузки.

Мы заметили, что Qlik Sense может получить предварительный просмотр и код неправильно для больших QVD, но код одинаковый для любого QVD — сгенерируйте код на небольшом QVD, а затем укажите его на более крупный, который вам нужно прочитать.

Инструменты для просмотра заголовков QVD

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

Однако, как мы уже писали выше, просматривать данные структуры QVD можно непосредственно в QlikView или Qlik Sense. Здесь данные заголовка QVD могут быть загружены вместе с другими данными и доступны для пользователей через тот же Hub или AccessPoint, к которым они уже привыкли. И этот способ не требует дополнительного лицензирования и может использоваться у клиентов.

Подробнее о QVD-файлах

QVD-файлы являются основой любого хорошо разработанного приложения QlikView. Вы храните свои данные и читаете их снова — просто.

Файлы QVD являются файлами XML

Если вы когда-либо были достаточно любопытны, чтобы открыть QVD-файл в текстовом редакторе, вы могли увидеть, что файл начинается с фрагмента XML. Если вы этого еще не сделали, почему бы не сделать это сейчас? Когда вы просматриваете заголовки, вы увидите некоторую базовую информацию, например, время создания QVD. Далее в заголовке указано количество строк в файле. Вы можете быть уверены, что эти значения можно отнести к использованию нескольких функций, например:

QvdNoOfRecords ( 'C: \ QlikView \ Data \ MyQVD.qvd');

QvdNoOfFields ( 'C: \ QlikView \ Data \ MyQVD.qvd');

Также в заголовке файла вы найдете информацию о структуре поля QVD и линейке QVD (начальные операторы SELECT или LOAD, которые пошли на сборку QVD. В целом это очень интересно посмотреть в текстовом редакторе, однако Qlik не предоставил нам никаких функций для извлечения этих данных.

После заголовка, QVD превращается в двоичный файл для хранения самих данных.

Получение XML из QVD

Вы можете знать, что вы можете загружать данные из XML-файла в Qlik. Таким образом, следует, что вы можете загрузить XML из своего QVD в таблицу. И действительно, вы можете.

Когда вы нажимаете кнопку «Файлы таблицы» в QlikView и выбираете QVD, QlikView автоматически меняет загрузку данных QVD и показывает вам контент:

Прямо под переключателем QVD есть выбор для XML. Когда вы нажимаете эту кнопку, отображается другой вид QVD:

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

При нажатии кнопки «Готово» код загружается из заголовков XML в ваш сценарий загрузки. Сценарий для информации о поле выглядит следующим образом:

QvdFields:
LOAD
    FieldName,
    BitOffset,
    BitWidth,
    Bias,
    NoOfSymbols,
    [NumberFormat/Type] as Type,
    [NumberFormat/nDec] as nDec,
    [NumberFormat/UseThou] as UseThou
FROM [.\Data\MyQVD.qvd] (XmlSimple, Table is [QvdTableHeader/Fields/QvdFieldHeader]);

Когда вы сохраняете и перезагружаете, у вас есть таблица, показывающая все поля вашего QVD.

Загрузка из нескольких файлов

Это дает нам простой способ получить некоторую информацию QVD в документе Qlik (QlikView или QlikSense). Но что, если мы хотим просмотреть информацию для всей папки, с несколькими QVD-файлами? Мы можем просто перебрать их циклом. Перебор выполняется с помощью цикла for / next в инструкции FileList. Для каждого файла мы хотим взять имя и добавить его в качестве поля. Код (после очистки) выглядит следующим образом:

for each vFile in FileList('.\Data\*.qvd')
     let vFileName = mid(vFile, index(vFile, '\', -1) + 1, 99);
 
     QvdFields:
     LOAD
          1                      as FieldCount,
          '$(vFileName)'         as [File Name],
          FieldName              as [Field Name],
          BitOffset              as [Bit Offset],
          BitWidth               as [Bit Width],
          Bias                   as [Bias],
          NoOfSymbols            as [No Of Symbols],
          [NumberFormat/Type]    as Type,
          [NumberFormat/nDec]    as Dec,
          [NumberFormat/UseThou] as UseThou
     FROM [$(vFile)] (XmlSimple, Table is [QvdTableHeader/Fields/QvdFieldHeader]);
next

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

QvdTableHeader:
     LOAD
          1                      asQVDCount,
          '$(vFileName)'         as[FileName],
          QvBuildNo              as [QV Build No],
          CreatorDoc             as [QVD Creator],
          CreateUtcTime          as [Time Created],
          SourceFileSize         as [Source File Size],
          TableName              as [Table Name],
          RecordByteSize         as [Record Byte Size],
          NoOfRecords            as [Number Of Records]
     FROM [$(vFile)] (XmlSimple, Table is [QvdTableHeader]);

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

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

  • У каких QVD больше всего строк?
  • Какие QVD имеют большинство полей?
  • Какое название поля наиболее распространено в QVD?
  • Какое приложение QVDCreator создало QVD для клиентов?

Пример из практики

Недавний прецедент, который я использовал для профилирования всех QVD в реализации, был для миграции решения с одного сервера на другой. После периода параллельного запуска нам необходимо было обеспечить, чтобы данные во всех QVD были одинаковыми на старом сервере и на новом сервере. Помещая дополнительный цикл вокруг этих операторов, чтобы посмотреть в двух местах, называя места в каждой таблице и используя составной ключ (местоположение и имя файла); Я создал приложение, которое профилировало QVD с обоих серверов. Несколько простых прямых таблиц позже, и я смог с уверенностью сказать, что QVD имеют одинаковые строки на обоих серверах.

Помимо того, что вы заинтересованы, вы можете обнаружить, что вы можете превратить приложение в полезную часть документации для ваших пользователей. Они могут найти, где поля находятся в QVD, особенно полезно, если вы собираетесь, например, позволить им самостоятельно работать в QlikSense.

 

Надеюсь, вы найдете эту статью полезной для себя, и она укажет вам на новые способы максимально использовать ваши QVD.

 

Ресурсы

 

Подписка

RSS-материал