# Buffer

QVD-Dateien können mit Hilfe des buffer-Zusatzes im Skript automatisch generiert werden. Dieser Zusatz kann zusammen mit den meisten LOAD- und SELECT-Befehlen verwendet werden. Er dient dazu, die eingelesenen Daten in einer QVD-Datei zu cachen bzw. zu buffern.

Syntax:

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

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

Ist keine Option definiert, wird die bei der ersten Skriptausführung generierte QVD-Datei auf unbestimmte Zeit weiterverwendet.

Die Pufferdatei ist im Unterordner Buffers gespeichert, in der Regel unter C:\ProgramData\Qlik\Sense\Engine\Buffers (Serverinstallation) oder C:\Users\{user}\Documents\Qlik\Sense\Buffers (Qlik Sense Desktop).

Der Name der QVD-Datei ist ein generierter Name, ein hexadezimaler 160 bit-String, der den nachfolgenden LOAD- oder SELECT-Befehl und andere Informationen in abgekürzter Form enthält. Wird der nachfolgende QVD- oder LOAD-Befehl verändert, wird der SELECT-Puffer ungültig.

Normalerweise löscht das Programm automatisch QVD-Puffer, auf die während der Ausführung eines vollständigen Skripts in der App, die ihn erstellt hat, nicht mehr zugegriffen wird. Auch beim Löschen der App werden die Buffer automatisch mitgelöscht.

Argumente:

Argumente

| Argument | Beschreibung |
| --- | --- |
| incremental | Durch die Option incremental wird nur ein Teil der Daten aus der Originaldatenquelle gelesen. Die bisherige Größe der Quelldatei ist im XML-Header der QVD-Datei gespeichert. Dies ist insbesondere für log-Dateien nützlich. Alle bereits in der QVD-Datei vorhandenen Datensätze werden von dort eingelesen, alle neuen Datensätze aus der Originaldatenquelle. Am Ende dieses Vorgangs wird eine aktualisierte Version in der QVD-Datei gespeichert.<br><br>Die Option incremental kann nur mit LOAD-Befehlen und Textdateien verwendet werden. Inkrementelles Laden kann nicht verwendet werden, wenn alte Daten geändert oder gelöscht werden. |
| stale [after] amount [(days \| hours)] | amount ist eine Zahl, die den Zeitraum definiert. Es dürfen Dezimalzahlen verwendet werden. Ist keine Einheit angegeben, nimmt das Programm Tage an.<br><br>Die Option stale after ist für Datenbanken vorgesehen, deren Originaldaten keinen Zeitstempel enthalten. Stattdessen definiert man, wie alt der QVD-Schnappschuss maximal sein darf, um anstelle der Originaldatenquelle eingelesen zu werden. Eine Bedingung stale after gibt einfach einen Zeitraum für das Erstellungsdatum des QVD-Buffers an. Danach ist er nicht mehr gültig. Vor dem Zeitrahmen wird der QVD-Buffer als Quelle für Daten verwendet, und danach gilt die ursprüngliche Datenquelle. In diesem Fall wird eine aktualisierte Version der QVD-Datei gespeichert, und die Zeitspanne beginnt von Neuem. |

Beschränkungen:

Im Gebrauch des buffer-Zusatzes bestehen einige Einschränkungen. Die wichtigste besteht darin, dass der Zusatz nur für LOAD- oder SELECT-Befehle benutzt werden darf, die Daten aus einer Datei lesen.

Beispiel 1:

`Buffer SELECT * from MyTable;`

Beispiel 2:

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

Beispiel 3:

`Buffer (incremental) LOAD 
 * from MyLog.log;`