Qlik Sense QVD 文件
QVD 文件
QVD (QlikView Data) 文件是包含从 Qlik Sense 或 QlikView 中所导出数据的表格的文件。QVD 是本地 Qlik 格式,只能由 Qlik Sense 或 QlikView 写入和读取。当从 Qlik Sense 脚本中读取数据时,该文件格式可提升速度,同时又非常紧凑。从 QVD 文件读取数据通常比从其他数据源读取快 10 到 100 倍。
QVD 文件可以用两种模式读取:标准(快速)和优化(超快)。所选模式由 Qlik Sense 脚本引擎自动确定。尽管字段可以重命名,但仅当全部加载字段在无任何转换的形式下读取(操作字段公式)时才可以使用优化模式。导致 Qlik Sense 解压记录的 Where 子句也将禁用优化加载。
QVD 文件正好包含一个数据表,由三个部分组成:
- 在表格中描述字段的 XML 标题(UTF-8 字符集)、后续信息的布局以及一部分其他元数据。
- 字节填充格式符号表。
- 位填充格式实际表。
QVD 文件具有许多用途。可轻易识别四种主要的用途。在任何给定的情况下都可以应用不只一个:
从外部数据源提取的数据量也可大幅度降低。这可减少外部数据库的工作量和网络流量。而且,当几个 Qlik Sense 脚本共享相同的数据时,只需要将这些数据从源数据库加载到 QVD 文件一次即可。其他应用程序可以利用此 QVD 文件中相同的数据。
使用 Binary 脚本语句,可能只能从单个 Qlik Sense 应用程序将数据加载到另一个应用程序,但使用 QVD 文件,Qlik Sense 脚本可以合并任何数量的 Qlik Sense 应用程序数据。这使在一个应用程序中合并不同企业单位的相似数据等成为可能。
在许多常见情况下,QVD 功能可用于简化增量加载,通过独家从不断扩大的数据库中加载新记录。
- 降低数据库服务器上的加载量
- 合并多个 Qlik Sense 应用程序数据。
- 增量加载
创建 QVD 文件
可以使用脚本中的 store 命令创建和命名 QVD 文件。在脚本中说明要将先前读取的表格或其部分导出到您选定位置上的一个明确命名文件。
Store
该脚本语句创建显式命名的 QVD、Parquet、CSV 或 TXT 文件。
语法:
Store[ *fieldlist from] table into filename [ format-spec ];
该语句仅会从一个数据表格中导出字段。如果要从多个表格中导出字段,必须明确命名之前在脚本中生成的联接以创建应导出的数据表。
文本值将以 UTF-8 格式导出至 CSV 文件。可以指定一个分隔符,请参阅 LOAD。store 语句不支持将 BIFF 导出至 CSV 文件。
示例:
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];
执行以下操作:
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);
Product.qvd 文件现在将会出现在文件列表中。
此数据文件是 Crosstable 脚本的结果且也是一个包含三列的表格,每个类别都拥有一列 (Product, Month, Sales)。此数据文件现在可用于替换整个 Product 脚本部分。
- 打开高级脚本编写教程应用程序。
- 单击 Product 脚本段。
- 将以下内容添加至脚本的末尾:
- 单击加载数据。
从 QVD 文件读取数据
可以通过以下方法由 Qlik Sense 读入或访问 QVD 文件:
示例:
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 文件作为显式数据源。QVD 文件可由 Qlik Sense 脚本中的 load 语句引用,与任何其他类型的文本文件一样(csv、fix、dif、biff 等)。
- 通过脚本访问 QVD 文件。许多脚本函数(都以 QVD 开头)都可用于检索在 QVD 文件的 XML 标题中发现的数据的不同信息。
执行以下操作:
Load * from [lib://DataFiles/ProductData.qvd](qvd);
将数据从 QVD 文件加载。
数据加载进度窗口
- 在 Product 脚本段中注释掉整个脚本。
- 输入以下脚本:
- 单击加载数据。
QVD File Format
The QVD file format is a binary file format that is used by QlikView to store data. The format is proprietary. However, the format is well documented and can be parsed without the need of a QlikView installation. In fact, a QVD file consists of three parts: a XML header, and two binary parts, the symbol and the index table. The XML header contains meta information about the QVD file, such as the number of data records and the names of the fields. The symbol table contains the actual distinct values of the fields. The index table contains the actual data records. The index table is a list of indices which point to values in the symbol table.
XML Header
The XML header contains meta information about the QVD file. The header is always located at the beginning of the file and is in human readable text format. The header contains information about the number of data records, the names of the fields, and the data types of the fields.
Symbol Table
The symbol table contains the distinct/unique values of the fields and is located directly after the XML header. The order of columns in the symbol table corresponds to the order of the fields in the XML header. The length and offset of the symbol sections of each column are also stored in the XML header. Each symbol section consist of the unique symbols of the respective column. The type of a single symbol is determined by a type byte prefixed to the respective symbol value. The following type of symbols are supported:
Code | Type | Description |
---|---|---|
1 | Integer | signed 4-byte integer (little endian) |
2 | Float | signed 8-byte IEEE floating point number (little endian) |
4 | String | null terminated string |
5 | Dual Integer | signed 4-byte integer (little endian) followed by a null terminated string |
6 | Dual Float | signed 8-byte IEEE floating point number (little endian) followed by a null terminated string |
Index Table
After the symbol table, the index table follows. The index table contains the actual data records. The index table contains binary indices that refrences to the values of each row in the symbol table. The order of the columns in the index table corresponds to the order of the fields in the XML header. Hence, the index table does not contain the actual values of a data record, but only the indices that point to the values in the symbol table.
QVD Reader Project
qvd4js - npmUtility library for reading/writing Qlik View Data (QVD) files in JavaScript.. Latest version: 1.0.5, last published: 6 months ago. Start using qvd4js in your project by running `npm i qvd4js`. There are no other projects in the npm registry using qvd4js.https://www.npmjs.com/package/qvd4jsCSViewer – EasyQlikhttps://easyqlik.com/csviewer/Use your Qlik QVD data in other systems with the QVD Converter by TIQ
GitHub - ralfbecher/QlikView_QVDReader_Examples: QlikView QVDReader Examples, QVDReader is part of the QVDConverter Java library to create and process QlikView data files (.qvd)QlikView QVDReader Examples, QVDReader is part of the QVDConverter Java library to create and process QlikView data files (.qvd) - ralfbecher/QlikView_QVDReader_Exampleshttps://github.com/ralfbecher/QlikView_QVDReader_Examples