# Buffer

QVD-filer kan skapas och underhållas automatiskt via prefixet buffer. Detta prefix kan användas på de flesta LOAD- och SELECT-satser i skript. Det anger att en QVD-fil används för att cacha/buffra satsens resultat.

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

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

Om inget alternativ används så används den QVD-buffert som skapades när skriptet kördes första gången på obegränsad tid.

Buffertfilen sparas i delmappen Buffers, normalt C:\ProgramData\Qlik\Sense\Engine\Buffers (serverinstallation) eller C:\Users\{user}\Documents\Qlik\Sense\Buffers (Qlik Sense Desktop).

QVD-filens namn är ett uträknat namn (ett 160-bitars hexadecimalt hash-värde av hela den efterföljande LOAD- eller SELECT-satsen samt annan särskiljande information). Detta innebär att QVD-bufferten blir ogiltig om ändringar görs i den efterföljande LOAD- eller SELECT-satsen.

Normalt avlägsnas QVD-buffertar när de inte längre blir refererade någonstans under en fullständig skriptexekvering i den applikation som skapade dem. De avlägsnas även när den applikation som skapade dem inte längre finns.

Argument

| Argument | Beskrivning |
| --- | --- |
| inkrementell | Med alternativet incremental öppnas möjligheten att enbart läsa in delar av den underliggande filen. Filens tidigare storlek lagras i XML-huvudet i QVD-filen. Detta är särskilt användbart för loggfiler. Alla tidigare inlästa poster läses in från QVD-filen medan nyare poster läses in från originalkällan och en uppdaterad QVD-fil skapas.<br><br>Alternativet incremental kan bara användas med LOAD-satser och textfiler. Inkrementell laddning kan inte användas där gamla data ändras eller raderas. |
| gammal [efter] belopp [(dagar \| timmar)] | amount är ett tal som anger tidsperioden. Decimals kan användas. Om ingen enhet anges förutsätts dagar.<br><br>Alternativet stale after används oftast med databaskällor vars originaldata är svåra att förse med en tidsmarkör. Istället anger man hur gammal en QVD-ögonblicksbild kan vara för att få användas. En stale after-sats anger helt enkelt en tidsperiod efter att QVD-bufferten skapades, efter vilken den inte längre kommer att anses vara giltig. Dessförinnan används QVD-bufferten som källa för data och därefter används den ursprungliga datakällan. Därefter uppdateras QVD-buffertfilen automatiskt och en ny period påbörjas. |

Det finns flera begränsningar, den mest anmärkningsvärda är att det måste finnas antingen en fil-LOAD- eller en SELECT-sats i basen för alla komplexa satser.

`Buffer SELECT * from MyTable;` `Buffer (stale after 7 
 days) SELECT * from MyTable;` `Buffer (incremental) LOAD 
 * from MyLog.log;`