Buffer

QVD 文件可通过 buffer 前缀自动创建和维护。该前缀可用于脚本中大多数 LOADSELECT 语句。这表示 QVD 文件可用于缓存/缓冲该语句产生的结果。

Syntax:  

Buffer [(option [ , option])] ( loadstatement | selectstatement )

option::= incremental | stale [after] amount [(days | hours)]

 

如果未使用任何选项,则首次执行脚本时创建的 QVD 缓冲将无限期使用。

默认情况下,QVD 缓冲存储在 C:\ProgramData\QlikTech\QlikView\Buffers 中。

创建脚本的文档在整个脚本执行过程不再引用时,或者创建脚本的文档不再存在时,通常会移除 QVD缓冲。

Arguments:  

参数 说明
incremental incremental 选项可实现仅读取基础文件的一部分。文件先前大小存储在 QVD 文件中的 XML 页眉中。这对日志文件特别有用。上一步载入的全部记录都可从 QVD 文件读取,而后续新记录可从原始数据源读取,这样就可创建一个 QVD 更新文件。注意,incremental 选项只能与 LOAD 语句和文本文件,以及旧数据发生更改或被删除而导致无法使用增量加载的地方!
stale [after] amount [(days | hours)] amount 即指定时间周期的数字。可能要使用小数。如果省略,则假定单位为天数。
stale after 选项通常与 DB 源一起使用,DB 源在初始数据上并无简单的时间戳。相反,您可以指定 QVD 快照将能用多久。stale after 子句仅陈述自 QVD 缓冲创建时间计起的时间周期,此后其即被视为无效。QVD 缓冲在此之前会被用作数据源,在此之后则使用原始数据源。QVD 缓冲文件随后会自动更新,同时新周期开始。

Limitations:  

当然也存在许多限制,最明显的一点就是在任意复杂语句的核心必须有一个文件 LOADSELECT 语句。

Example 1:  

Buffer SELECT * from MyTable;

Example 2:  

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

Example 3:  

Buffer (incremental) LOAD * from MyLog.log;