Buffer

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

Syntax:  

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

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

 

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

缓冲文件存储在缓冲子文件夹中,通常是 C:\ProgramData\Qlik\Sense\Engine\Buffers(服务器安装)或 C:\Users\{user}\Documents\Qlik\Sense\Buffers (Qlik Sense Desktop)。

QVD 文件的名称是计算名称,整个后续 LOADSELECT 语句或其他区别性信息的 160 位十六进制散列。这就意味着 QVD 缓冲在后续LOADSELECT 语句有任何更改的情况下都会无效。

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

Arguments:  

参数 说明
增量 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;