Ga naar hoofdinhoud

QVD-bestanden

Een QVD (QlikView Data)-bestand is een bestand dat een tabel bevat met gegevens die vanuit Qlik Sense of QlikView zijn geëxporteerd. QVD is een speciale Qlik-indeling die uitsluitend kan worden geschreven naar en gelezen door Qlik Sense of QlikView. De bestandsindeling is geoptimaliseerd om snel gegevens in een Qlik Sense-script te kunnen lezen, maar is toch zeer compact. Gegevens uit een QVD-bestand worden 10-100 keer sneller gelezen dan gegevens uit een andere gegevensbron.

QVD-bestanden kunnen in twee modi worden gelezen: standaard (snel) en geoptimaliseerd (sneller). De geselecteerde modus wordt automatisch bepaald door de Qlik Sense-script-engine. De geoptimaliseerde modus kan alleen worden toegepast als alle geladen velden worden gelezen zonder dat er transformaties (formules die op de velden worden toegepast) nodig zijn. Alleen het hernoemen van velden is toegestaan. Een Where-clausule die ertoe leidt dat de records worden uitgepakt in Qlik Sense zorgt er eveneens voor dat geoptimaliseerd laden wordt uitgeschakeld.

Een QVD-bestand bevat precies één gegevenstabel en bestaat uit de volgende drie delen:

  • Een XML-koptekst (in UTF-8-tekenset) met daarin een beschrijving van de velden, de gegevensopmaak en bepaalde andere metagegevens.
  • Symbooltabellen in een byte-stuffed indeling.
  • Eigenlijke tabelgegevens in een bit-stuffed indeling.

QVD-bestanden kunnen voor vele doeleinden worden gebruikt. Vier daarvan zijn direct te onderkennen. Vaak is er meer dan één van toepassing:

  • Sneller gegevens laden
  • Door niet of langzaam veranderende blokken gegevensinvoer in QVD-bestanden te bufferen, wordt de scriptuitvoering van grote gegevensverzamelingen aanmerkelijk versneld.

  • Lagere belasting van databaseservers
  • Ook de hoeveelheid op te halen gegevens uit externe gegevensbronnen kan aanzienlijk worden gereduceerd. Hierdoor is er minder netwerkverkeer nodig en wordt de belasting van externe databases teruggebracht. Als meerdere Qlik Sense-scripts dezelfde gegevens delen, hoeven deze maar één keer uit de brondatabase te worden geladen in een QVD-bestand. De andere toepassingen kunnen via dit QVD-bestand gebruikmaken van dezelfde gegevens.

  • Gegevens uit meerdere Qlik Sense-toepassingen consolideren.
  • Met de Binary-scriptopdracht kunt u gegevens uit slechts één enkele Qlik Sense-toepassing in een andere laden, maar bij QVD-bestanden kunt u gegevens uit een willekeurige hoeveelheid Qlik Sense-toepassingen door middel van een Qlik Sense-script met elkaar combineren. Hierdoor wordt het mogelijk om binnen één toepassing gelijksoortige gegevens van bijvoorbeeld verschillende bedrijfsafdelingen te combineren.

  • Incrementeel laden
  • In veel voorkomende gevallen kan de QVD-functionaliteit worden gebruikt voor incrementeel laden, d.w.z. dat uitsluitend nieuwe records uit een database worden geladen.

QVD-bestanden maken

Een QVD-bestand kan op twee manieren worden gemaakt:

  • Door het expliciet te maken en een naam te geven met de opdracht Store in het Qlik Sense-script.
  • U geeft in het script aan dat u een eerder gelezen tabel of deel ervan wilt exporteren naar een expliciet genoemd bestand op een locatie van uw keuze.

  • Door dit automatisch te maken en beheren vanuit een script.
  • Als u een load- of select-opdracht van het prefix Buffer voorziet, maakt Qlik Sense automatisch een QVD-bestand dat bij het herladen van gegevens onder bepaalde voorwaarden in plaats van de originele gegevensbron kan worden gebruikt.

Tussen de verschillende aangemaakte QVD-bestanden bestaan geen verschillen wat betreft de leessnelheid.

Store

Deze scriptfunctie maakt een specifiek genoemd QVD-, CSV-, of txt-bestand.

Syntax:  

Store [ *fieldlist from] table into filename [ format-spec ];

De opdracht kan alleen velden exporteren uit één gegevenstabel. Als velden uit diverse tabellen moeten worden geëxporteerd, moet eerst een expliciete join in het script worden opgegeven om de te exporteren gegevenstabel te maken.

De tekstwaarden worden in de indeling UTF-8 naar het CSV-bestand geëxporteerd. U kunt een scheidingsteken opgeven, zie LOAD. De opslagopdracht voor een CSV -bestand ondersteunt geen BIFF -export.

Mytable opslaan in [lib://DataFiles/xyz.qvd]; * van mytable opslaan in [lib://DataFiles/xyz.qvd]; Myfield opslaan vanuit Mytable in 'lib://DataFiles/xyz.qvd'; Myfield opslaan als renamedfield, myfield2 als renamedfield2 vanuit Mytable in [lib://DataFiles/xyz.qvd]; Mytable opslaan in 'lib://DataFiles/myfile1.txt'; * van mytable opslaan in 'lib://DataFiles/myfile2.csv';

Doe het volgende:

  1. Open de app Zelfstudie voor geavanceerd scriptgebruik.
  2. Klik op de scriptsectie Product.
  3. Voeg het volgende toe aan het eind van uw script:
  4. Store * from Product into [lib://DataFiles/ProductData.qvd](qvd);

    Uw script zou er als volgt moeten uitzien:

    CrossTable(Month, Sales) LOAD Product, 'Jan 2014', 'Feb 2014', 'Mar 2014', 'Apr 2014', 'May 2014' FROM [lib://DataFiles/Product.xlsx] (ooxml, embedded labels, tabel is Product); * opslaan vanuit Product in [lib://DataFiles/ProductData.qvd](qvd);

  5. Klik op Gegevens laden.
  6. Het bestand Product.qvd zou zich nu in de lijst met bestanden moeten bevinden.

    Dit gegevensbestand is het resultaat van het Crosstable-script en is een tabel met drie kolommen, één kolom voor elke categorie (Product, Month, Sales). Het gegevensbestand zou nu kunnen worden gebruikt voor het vervangen van de hele Product -scriptsectie.

Gegevens uit QVD-bestanden lezen

Een QVD-bestand kan op de volgende manieren door Qlik Sense worden gelezen of geopend:

  • Een QVD-bestand laden als een expliciete gegevensbron. Er kan naarQVD-bestanden worden verwezen met een load-opdracht in het Qlik Sense-script, net als naar andere typen tekstbestanden (csv, fix, dif, biff enzovoort).
  • LOAD * from [lib://DataFiles/xyz.qvd] (qvd); LOAD fieldname1, fieldname2 from [lib://DataFiles/xyz.qvd] (qvd); LOAD fieldname1 as newfieldname1, fieldname2 as newfieldname2 from [lib://DataFiles/xyz.qvd](qvd);
  • Automatisch laden van gebufferde QVD-bestanden. Als u het prefix buffer in de load- of select-opdracht gebruikt, zijn er geen expliciete leesopdrachten nodig. Qlik Sense bepaalt automatisch in welke mate gegevens uit het QVD-bestand of uit de oorspronkelijke LOAD- of SELECT-opdracht worden gebruikt.
  • QVD-bestanden via het script benaderen. Een aantal scriptfuncties (alle functies die beginnen met QVD) kan worden gebruikt om informatie op te halen uit de XML-koptekst van een QVD-bestand.

Doe het volgende:

  1. Schakel het hele script uit in de scriptsectie Product.
  2. Voer het volgende script in:
  3. * laden uit [lib://DataFiles/ProductData.qvd](qvd); 

  4. Klik op Gegevens laden.
  5. De gegevens wordt geladen uit het QVD-bestand.

    Venster met voortgang laden van gegevens
    Data load progress window.

InformatieVoor meer informatie over het gebruik van QVD-bestanden voor incrementeel laden, bekijkt u deze blogpost in Qlik Community: Overzicht van Incrementeel laden met Qlik

Buffer

QVD-bestanden kunnen automatisch worden gemaakt en beheerd met behulp van het prefix Buffer. Dit prefix kan worden gebruikt bij de meeste LOAD- en SELECT-opdrachten in een script. Hiermee wordt aangegeven dat QVD-bestanden worden gebruikt als cache/buffer om het resultaat van de opdracht op te slaan.

Syntax:  

Buffer [ (option [ , option])] ( loadstatement | selectstatement ) option::= incremental | stale [after] amount [(days | hours)]

Als deze opties niet zijn gedefinieerd, wordt de QVD-buffer die bij de eerste uitvoering van het script werd gemaakt, voor onbepaalde tijd gebruikt.

Example:  

Buffer load * from MyTable;

stale [after] amount [(days | hours)]

Amount is een getal dat de tijdsperiode aangeeft. Het gebruik van Decimals is toegestaan. Als er geen eenheid is aangegeven, wordt verondersteld dat het om dagen gaat.

De optie stale after wordt meestal gebruikt voor databasebronnen waarbij de gegevens niet zijn voorzien van een tijdstempel. Een stale after-clausule geeft simpelweg een tijdsperiode aan vanaf het tijdstip van aanmaken van de QVD-buffer waarna de buffer niet meer als geldig wordt beschouwd. Voor deze tijd wordt de QVD-buffer gebruikt als gegevensbron, daarna wordt de oorspronkelijke gegevensbron gebruikt. Het QVD-bufferbestand wordt dan automatisch bijgewerkt en er begint een nieuwe periode.

Example:  

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

Incremental

Met de optie incremental wordt aangegeven dat alleen een gedeelte van een onderliggend bestand hoeft te worden gelezen. De vorige grootte van het bestand wordt opgeslagen in de XML-header van het QVD-bestand. Dit is vooral nuttig bij logbestanden. Alle records die eerder zijn geladen, worden gelezen uit het QVD-bestand. Nieuwe bestanden worden gelezen uit de originele bron en vervolgens wordt een bijgewerkt QVD-bestand gemaakt.

Let op! De optie incremental kan alleen worden gebruikt met LOAD-opdrachten en tekstbestanden, en incremental load kan niet worden gebruikt als oude gegevens zijn gewijzigd of verwijderd!

Example:  

Buffer (incremental) LOAD * from MyLog.log;

Een QVD-buffer wordt normaal gesproken verwijderd als er tijdens de volledige uitvoering van het script in de app waarvoor de buffer werd gemaakt, niet langer naar wordt verwezen of als de app waarvoor de buffer werd gemaakt, niet meer bestaat. De Store-opdracht moet worden gebruikt als u de inhoud van de buffer wilt bewaren als een QVD- of CSV-bestand.

Doe het volgende:

  1. Maak een nieuwe app en geef deze een naam.
  2. Voeg een nieuwe scriptsectie toe in de Editor voor het laden van gegevens.
  3. Onder DataFiles in het rechtermenu klikt u op Gegevens selecteren.

  4. Upload en selecteer Cutlery.xlsx.
  5. In het venster Selecteer gegevens uit klikt u op Script invoeren.
  6. Schakel de velden in de laadinstructie uit en verander de laadinstructie in het volgende:
  7. Buffer LOAD *

    Uw script zou er als volgt moeten uitzien:

    Buffer LOAD * // "date", // item, // quantity FROM [lib://DataFiles/Cutlery.xlsx] (ooxml, embedded labels, tabel is Sheet1);

  8. Klik op Gegevens laden.
  9. Als u voor de eerste keer gegevens laadt, worden deze geladen vanuit Cutlery.xlsx.

    Venster met voortgang laden van gegevens
    Data load progress window.

    De Buffer-instructie maakt ook een QVD-bestand en slaat dit op in Qlik Sense. In een cloudimplementatie wordt dit opgeslagen in een directory in de cloud.

  10. Klik nogmaals op Gegevens laden.
  11. De gegevens worden dit keer geladen vanuit het QVD-bestand dat door de Buffer-instructie is gemaakt toen u de gegevens voor de eerste keer hebt geladen.
  12. Venster met voortgang laden van gegevens
    Data load progress window.

Hartelijk dank!

U hebt deze zelfstudie nu voltooid en hopelijk beschikt u nu over wat meer kennis van het gebruiken van scripts in Qlik Sense. Bezoek onze website voor meer informatie over de verdere training die beschikbaar is.