Gå till huvudinnehåll

QVD-filer

En QVD (QlikView Data)-fil är en fil som innehåller en tabell med data som har exporterats från Qlik Sense eller QlikView. QVD är ett Qlik-originalformat och kan bara skrivas till och läsas av Qlik Sense eller QlikView. Detta filformat är optimerat för hastighet vid datainläsning från ett Qlik Sense-skript, men är samtidigt mycket kompakt. Datainläsning från en QVD-fil är vanligtvis 10-100 gånger snabbare än inläsning från andra datakällor.

QVD-filer kan läsas in på två olika sätt: standard (snabbt) och optimerat (snabbare). Vilket sätt som används bestäms automatiskt av Qlik Sense-skriptmotorn. Det optimerade läget kan endast användas när alla inlästa fält läses utan någon typ av transformering (formler som påverkar fälten). Filnamnen kan dock ändras. En Where-sats som gör att Qlik Sense packar upp posterna leder också till att optimerad laddning inaktiveras.

En QVD-fil innehåller exakt en datatabell och består av tre delar:

  • Ett XML-huvud (i teckenuppsättningen UTF-8) som beskriver tabellens fält, layouten för den efterföljande informationen, samt vissa ytterligare metadata.
  • Symboltabeller i byte-komprimerat format.
  • Faktiska tabelldata i bit-komprimerat format.

QVD-filer har många användningsområden. Fyra huvudsakliga användningsområden kan omedelbart identifieras. Fler än ett användningsområde kan gälla på samma gång:

  • Snabbare dataladdningshastighet
  • Genom att buffra de block av indata som inte har ändrats respektive ändrats långsamt i QVD-filer kan skriptexekveringen snabbas upp väsentligt för stora datamängder.

  • Minskat tryck på databasservrar
  • Mängden data som hämtas från externa datakällor kan minskas avsevärt. Detta minskar arbetstrycket på de externa databaserna och mängden nätverkstrafik. En annan fördel är att när flera Qlik Sense-skript delar samma data, behöver data bara laddas en gång från källdatabasen till en QVD-fil. De andra applikationerna kan använda data genom denna QVD-fil.

  • Konsolidera data från flera Qlik Sense-applikationer.
  • Med Binary-skriptsatsen går det att ladda data från en enda Qlik Sense-applikation till en annan, men med QVD-filer kan ett Qlik Sense-skript kombinera data från flera olika Qlik Sense-applikationer. Detta möjliggör konsolidering av likartade data från olika affärsenheter med mera.

  • Inkrementell laddning
  • I många fall kan QVD-funktionaliteten användas för att förenkla inkrementell laddning genom att bara ladda nytillkomna poster i en växande databas.

Skapa QVD-filer

En QVD-fil kan skapas på två sätt:

  • Skapas och namnges explicit med hjälp av Store-kommandot i Qlik Sense-skriptet.
  • Ange i skriptet att en tabell, eller delar av en tabell, som tidigare har lästs in ska exporteras till en namngiven fil på en viss plats.

  • Skapa och sköta underhåll automatisk direkt från skriptet.
  • Om en load- eller select-sats föregås av prefixet Buffer, skapar Qlik Sense automatiskt en QVD-fil som under vissa omständigheter kan användas istället för den ursprungliga datakällan vid laddning.

De resulterande QVD-filerna skiljer sig inte åt vad gäller inläsningshastighet.

Store

Denna skriptfunktion skapar en namngiven QVD-, CSV- eller txt-fil.

Syntax:  

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

Satsen kan endast exportera fält från en datatabell. Om fält från flera tabeller ska exporteras, måste du först göra en explicit join i skriptet för att skapa den datatabell som ska exporteras.

Textvärdena exporteras till CSV-filen i UTF-8-format. En avgränsare kan anges, se LOAD. Satsen store (spara) till en CSV -fil stöder inte BIFF -export.

Store mytable into [lib://DataFiles/xyz.qvd]; Store * from mytable into [lib://DataFiles/xyz.qvd]; Store myfield from mytable into [lib://DataFiles/xyz.qvd]; Store myfield as renamedfield, myfield2 as renamedfield2 from mytable into [lib://DataFiles/xyz.qvd]; Store mytable into [lib://DataFiles/myfile1.txt]; Store mytable into [lib://DataFiles/myfile2.csv];

  1. Öppna appen Avancerad skriptvägledning.
  2. Klicka på skriptavsnittet Product.
  3. Lägg till följande i slutet av skriptet:
  4. Store * from Product into [lib://DataFiles/ProductData.qvd](qvd);

    Ditt skript bör se ut så här:

    CrossTable(Month, Sales) LOAD     Product,     "Jan 2014",     "Feb 2014",     "Mar 2014",     "Apr 2014",     "May 2014" FROM [lib://DataFiles/Product.xlsx]  (ooxml, embedded labels, table is Product);  Store * from Product into [lib://DataFiles/ProductData.qvd](qvd);

  5. Klicka på Ladda data.
  6. Filen Product.qvd bör nu finnas i listan med filer.

    Den här datafilen är resultatet av ett Crosstable-skript och är en tabell med tre kolumner, med en kolumn för varje kategori (Product, Month, Sales). Den här datafilen kan nu användas för att ersätta hela Product -skriptavsnittet.

Läsa in data från QVD-filer

En QVD-fil kan laddas eller nås av Qlik Sense på följande sätt:

  • Läsa in en QVD-fil som explicit datakälla. Det går att referera till QVD-filerna genom en load-sats i Qlik Sense-skriptet, precis som med vilken annan typ av textfil som helst (csv, fix, dif, biff och så vidare).
  • 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);
  • Automatisk inläsning av buffrade QVD-filer. När buffer-prefixet används för load- eller select-satser, behöver du inte uttryckligen ange hur inläsningen ska ske. Qlik Sense avgör i vilken utsträckning data från QVD-filen ska användas eller om data istället ska hämtas med hjälp av den ursprungliga LOAD- eller SELECT-satsen.
  • QVD-filer från skriptet. Ett antal skriptfunktioner (alla börjar med QVD) kan användas för att hämta olika typer av information för data som återfinns i XML-huvudet till en QVD-fil.

  1. Kommentera ut hela skriptet i Product-skriptavsnittet.
  2. Ange följande skript:
  3. Load * from [lib://DataFiles/ProductData.qvd](qvd);			

  4. Klicka på Ladda data.
  5. Data laddas från filen QVD.

    Förloppsfönster för dataladdning

    Förloppsfönster för dataladdning.
Anteckning om informationOm du vill veta mer om att använda QVD-filer för inkrementell laddning läser du det här blogginlägget i Qlik Community: Översikt över inkrementell laddning i Qlik

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.

Syntax:  

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.

Exempel:  

Buffer load * from MyTable;

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

Amount är ett tal som anger tidsperioden. Decimals kan användas. Om ingen enhet anges förutsätts dagar.

Alternativet stale after används oftast med databaskällor där det inte finns någon enkel tidsangivelse för ursprungsdata. En stale after-sats anger helt enkelt en tidsperiod efter att QVD-bufferten skapades då 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.

Exempel:  

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

Incremental

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 följande nya poster läses in från originalkällan. Slutligen skapas en uppdaterad QVD-fil.

Observera att alternativet incremental bara kan användas tillsammans med LOAD-satser och textfiler och att inkrementell laddning inte kan användas där gamla data ändras eller tas bort.

Exempel:  

Buffer (incremental) load * from MyLog.log;

Normalt avlägsnas QVD-buffertar när de inte längre blir refererade under en fullständig skriptexekvering i den app som skapade dem. De avlägsnas även när den app som skapade dem inte längre finns. Store-satsen ska användas om du vill behålla innehållet i bufferten som en QVD- eller CSV-fil.

  1. Skapa en ny app och ge den ett namn.
  2. Lägg till ett nytt skriptavsnitt i Skriptredigeraren.
  3. Klicka på Välj data under DataFiles i menyn till höger.

  4. Ladda upp och välj sedan Cutlery.xlsx.
  5. Klicka på Infoga skript i fönstret Välj data från.
  6. Kommentera ut fälten i load-satsen och ändra den till följande:
  7. Buffer LOAD *

    Ditt skript bör se ut så här:

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

  8. Klicka på Ladda data.
  9. Den första gången du laddar data laddas de från Cutlery.xlsx.

    Förloppsfönster för dataladdning

    Förloppsfönster för dataladdning.

    Buffer-satsen skapar även en QVD-fil och lagrar den i Qlik Sense. I en molnutrullning lagras den i en katalog i molnet.

  10. Klicka på Ladda data igen.
  11. Den här gången laddas data från QVD-filen som skapades av Buffer-satsen när du laddade data första gången.
  12. Förloppsfönster för dataladdning

    Förloppsfönster för dataladdning.

Tack!

Nu när du är klar med den här introduktionskursen vet du lite mer om skript i Qlik Sense. Besök gärna vår webbplats för mer information om den ytterligare utbildningar som finns tillgängliga.