A QVD (QlikView Data) file is a file containing a table of data exported from QlikView. QVD is a native QlikView format and can only be written to and read by QlikView. The file format is optimized for speed when reading data from a QlikView script but it is still very compact. Reading data from a QVD file is typically 10-100 times faster than reading from other data sources.
QVD files can be read in two modes: standard (fast) and optimized (faster). The selected mode is determined automatically by the QlikView script engine. Optimized mode can be utilized only when all loaded fields are read without any transformations (formulas acting upon the fields), though the renaming of fields is allowed. A WHERE clause causing QlikView to unpack the records will also disable the optimized load. An optimized .qvd is extracted and handled according to standard Extract-Transform-Load (ETL ) when a field transformation is performed, this results in a degradation of performance. The specified format will not be maintained and the underlying raw number format will be used instead and recognized. Transformations of the field in a .qvd is allowed, the former "Optimized" .qvd then becomes a standard non-optimized .qvd.
A QVD file holds exactly one data table and consists of three parts:
- A well formed XML header (in UTF-8 char set) describing the fields in the table, the layout of the subsequent information and some other meta-data.
- Symbol tables in a byte stuffed format.
- Actual table data in a bit-stuffed format.
Purpose of QVD Files
QVD files can be used for many purposes. At least four major uses can be easily identified. More than one may apply in any given situation:
Increasing Load Speed
By buffering non-changing or slowly changing blocks of input data in QVD files, script execution becomes considerably faster for large data sets.
Decreasing Load on Database Servers
The amount of data fetched from external data sources can also be greatly reduced. This reduces work load on external databases and network traffic. Furthermore, when several QlikView scripts share the same data it is only necessary to load it once from the source database into a QVD file. The other applications can make use of the same data via this QVD file.
Consolidating Data from Multiple QlikView Applications
With the binary script statement it is possible to load data from only one single QlikView application into another one, but with QVD files a QlikView script can combine data from any number of QlikView applications. This opens up possibilities e.g. for applications consolidating similar data from different business units etc.
In many common cases the QVD functionality can be used for facilitating incremental load, i.e. exclusively loading new records from a growing database.
Create QVD Files
A QVD file can be created by one of three different methods:
- Explicit creation and naming using the store command in the QlikView script. Simply state in the script that a previously read table or part thereof is to be exported to an explicitly named file at a location of your choice.
- Automatic creation and maintenance from script. By preceding a load or select statement with the buffer prefix, QlikView will automatically create a QVD file which under certain conditions can be used instead of the original data source when reloading data.
Explicit, manual creation and naming from layout or via the Internal Macro Interpreter. Data can be exported from the QlikView layout via GUI commands or Automation macros. In the GUI you will find QVD as one of the possible export formats under the Export... command, found on the object menu of most sheet objects.
There is no difference between the resulting QVD files, e.g. with regard to reading speed etc.
Reading Data from QVD Files
A QVD file can be read into or accessed by QlikView by the following methods:
Loading a QVD file as an explicit data source. QVD files can be referenced by a load statement in the QlikView script just like any other type of text files (csv, fix, dif, biff etc). The File Wizard: Type handles QVD files by the same principles.
- Automatic loading of buffered QVD files. When using the buffer prefix on load or select statements, no explicit statements for reading are necessary. QlikView will determine the extent to which it will use data from the QVD file as opposed to acquiring data via the original load or select statement.
Accessing QVD files via the script. A number of script functions (all beginning with qvd) can be used for retrieving various information on the data found in the XML header of a QVD file.
load * from xyz.qvd (qvd);
load Name, RegNo from xyz.qvd (qvd);
load Name as a, RegNo as b from xyz.qvd (qvd);
Importing QVD with asterisks are not supported.
You can encrypt sensitive data in QVD files with customer supplied key pairs which allows you to control who gets access to your data.
The encryption is configured in the settings.ini file where encryption is enabled and the certificate thumbprint is added. QVD encryption is not enabled by default.
Older versions of Qlik Sense and QlikView returns an error when reading encrypted QVDs files.