使用 QVD 文件

QVD (QlikView Data)文件是包含从 Qlik Sense 中导出的数据表的文件。QVD 是本地 Qlik 格式,只能由 Qlik SenseQlikView 写入和读取。当从脚本中读取数据时该文件格式可提升速度,同时又非常紧凑。从 QVD 文件读取数据通常比从其他数据源读取快 10 到 100 倍。

QVD 文件可以用两种模式读取:标准(快速)和优化(超快)。所选模式由脚本引擎自动确定。

对于优化的加载存在一些限制。可重命名字段,但是此处提及的任何操作将禁用优化的加载并得到标准加载。

  • 加载的字段上的任何转换。
  • 使用 where 子句使得 Qlik Sense 将记录解压。
  • 在加载的字段上使用映射

QVD 文件的目的

QVD 文件可用于许多用途并且有一个以上可用在任何给定的情况中。至少可轻易识别四种主要的用途:

  • 提高加载速度
  • 通过缓冲 QVD 文件中输入数据的不改变或缓慢改变部分,执行大型数据集脚本可变得相当快。

  • 降低数据库服务器上的加载量
  • 从外部数据源提取的数据量也可大幅度降低。这可减少外部数据库的工作量和网络流量。而且,当几个脚本共享相同的数据时,只需要将这些数据从源数据库加载到 QVD 文件一次即可。其他应用程序可以利用此 QVD 文件中相同的数据。

  • 合并多个应用程序数据
  • 使用 binary 脚本语句,可能只能从单个应用程序将数据加载到另一个应用程序,但使用 QVD 文件,脚本可以合并任何数量的应用程序。例如,这样能够使应用程序合并不同业务部门的类似数据。

  • 增量
  • 在许多常见情况下,QVD 功能可用于简化增量加载,通过从不断扩大的数据库中加载新记录。

    有关更多信息,请参阅加载新的和更新的记录与增量加载

创建 QVD 文件

可通过两种方法创建 QVD 文件:

  • 在脚本中使用 store 命令可进行显式创建并命名。在脚本中说明要将先前读取的表格或其部分导出到您选定位置上的一个明确命名文件。

    有关更多信息,请参阅Store

  • 从脚本中自动创建并维护。当为 LOADSELECT 语句加入 buffer 前缀时,Qlik Sense 将自动创建 QVD 文件,但加载数据时需使用某些条件代替初始数据源。

    有关更多信息,请参阅Buffer

在结果 QVD 文件之间没有不同,如在读取速度方面。

QVD 文件读取数据

可以通过以下方法读取或访问 QVD 文件:

  • 加载 QVD 文件作为显式数据源。QVD 文件可由脚本中的 LOAD 语句引用,与任何其他类型的文本文件一样csvfixdifbiff 等)

    例如 (Windows)

    • LOAD * from xyz.qvd (qvd)
    • LOAD Name, RegNo from xyz.qvd (qvd)
    • LOAD Name as a, RegNo as b from xyz.qvd (qvd)

    例如 (Kubernetes):

    • LOAD * from [lib://MyDataFiles/xyz.qvd];
    • LOAD Name, RegNo from [lib://MyDataFiles/xyz.qvd];
    • LOAD Name as a, RegNo as b from [lib://MyDataFiles/xyz.qvd];
  • 自动加载缓冲 QVD 文件。当在 LOADSELECT 语句上使用 buffer 前缀时,无需明确说明读取的语句。Qlik Sense 将自行确定使用 QVD 文件数据的程度这一点同通过原始 LOADSELECT 语句获取数据相反。
  • 通过脚本访问 QVD 文件。许多脚本函数(都以 qvd 开头)都可用于检索一个 XML 文件的 QVD 标题中发现的数据的不同信息。

QVD 格式

QVD 文件正好包含一个数据表,由三个部分组成:

  • 标题。

    备注: 如果使用 QlikView 生成 QVD 文件,则标题为描述表格字段、后续信息布局及其他元数据的格式完整的 XML 标题(UTF-8 字符集)。
  • 字节填充格式符号表。
  • 位填充格式实际表。