Zu Hauptinhalt springen
QVD-Dateien #QVD-Dateien

AUF DIESER SEITE

QVD-Dateien

QVD (QlikView Data)-Dateien enthalten Datentabellen, die aus Qlik Sense oder QlikView exportiert werden. QVD ist ein natives Qlik Format, das nur von Qlik Sense oder QlikView gelesen oder geschrieben werden kann. Das Dateiformat ist für besonders schnelles Laden aus einem Qlik Sense-Skript optimiert, aber gleichzeitig sehr kompakt. Das Einlesen von Daten aus QVD-Dateien ist etwa 10-100 Mal schneller als das Einlesen aus anderen Datenquellen.

QVD-Dateien können in zwei Modi gelesen werden: Standard (schnell) und optimiert (schneller). Der ausgewählte Modus ergibt sich automatisch aus dem Qlik Sense-Skriptmodul. Der optimierte Modus kann nur verwendet werden, wenn alle geladenen Felder oder Teile davon ohne Umformung (Formeln, die an den Feldern aktiv werden) eingelesen werden. Felder dürfen jedoch umbenannt werden. Eine Where-Bedingung, bei der Qlik Sense die Datensätze auspackt, deaktiviert auch die optimierte Ladung.

Eine QVD-Datei enthält immer genau eine Tabelle und besteht aus drei Teilen:

  • Ein XML-Header (im UTF-8 Zeichensatz), der Metadaten enthält, z. B. eine Beschreibung der Felder und des Aufbaus der Tabelle.
  • Symboltabellen, unter Anwendung von Bytestuffing.
  • Die eigentlichen Tabellendaten, unter Anwendung von Bitstuffing.

QVD-Dateien sind in verschiedenen Situationen hilfreich. Vier häufige Anwendungsbereiche sind schnell genannt. Oft sprechen auch gleich mehrere Gründe für den Einsatz von QVD-Dateien.

  • Verkürzte Ladezeiten
  • Daten, die sich gar nicht oder nur in großen Zeitabständen verändern, lassen sich in QVD-Dateien puffern. Dadurch wird für die Ausführung des Skripts erheblich weniger Zeit benötigt. Dieser Effekt macht sich insbesondere bei großen Datenmengen bemerkbar.

  • Entlastung für Datenbankserver
  • Die aus externen Quellen geladene Datenmenge verringert sich erheblich. Datenbankserver und Netzwerke werden entlastet, weil weniger Daten bewegt werden. Wenn mehrere Qlik Sense-Skripte dieselben Daten verwenden, müssen sie nur einmal aus der Quelldatenbank in eine QVD-Datei geladen werden. Die anderen Anwendungen können über diese QVD-Datei die gleichen Daten verwenden.

  • Integration von Daten aus mehreren Qlik Sense-Anwendungen
  • Mit dem Skriptbefehl Binary lassen sich nur Daten aus einer Qlik Sense-Anwendung in eine andere laden. Mit QVD-Dateien jedoch kann ein Qlik Sense-Skript Daten aus beliebig vielen Qlik Sense-Anwendungen kombinieren. Ein möglicher Anwendungsbereich ist z. B. der Vergleich von Daten aus verschiedenen Abteilungen eines Betriebs.

  • Inkrementelles Laden
  • In vielen Fällen kann man QVD-Dateien für inkrementelle Ladevorgänge benutzen, bei denen nur neue oder veränderte Datensätze aus einer umfangreichen Datenbank gelesen werden.

Erstellen von QVD-Dateien

Eine QVD-Datei kann auf zwei verschiedene Arten erstellt werden:

  • Explizite Erstellung und Benennung mithilfe des Store-Befehls im Qlik Sense Skript.
  • Dazu definieren Sie im Skript, dass eine bereits eingelesene Tabelle oder ein Teil davon in eine Datei exportiert werden soll, deren Namen und Speicherort Sie bestimmen.

  • Automatische Generierung durch das Skript.
  • Wird das Buffer-Präfix einem load- oder select-Befehl vorangestellt, erstellt Qlik Sense automatisch eine QVD-Datei, die unter bestimmten Bedingungen beim erneuten Laden der Daten anstelle der ursprünglichen Datenquelle verwendet werden kann.

Die Art und Weise des Anlegens hat keinerlei Einfluss auf die Eigenschaften der QVD-Datei, d  h. die Zugriffsgeschwindigkeit ist gleich.

Store

Diese Skriptfunktion erstellt eine ausdrücklich benannte QVD-, CSV- oder txt-Datei.

Syntax:  

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

Durch den Befehl werden Werte einer Datentabelle in die neue Datei exportiert. Wenn Felder aus mehreren Tabellen exportiert werden sollen, muss zuvor im Skript eine explizite Zusammenfügung erstellt werden, um die zu exportierende Datentabelle zu generieren.

Textwerte werden im UTF-8-Format in eine CSV-Datei exportiert. Es kann ein Trennzeichen festgelegt werden (siehe LOAD). Der Store-Befehl in einer CSV -Datei unterstützt keinen 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. Öffnen Sie die App Erweitertes Skript-Tutorial.
  2. Klicken Sie auf den Skriptabschnitt Product.
  3. Fügen Sie Folgendes zum Ende des Skripts hinzu:
  4. Store * from Product into [lib://DataFiles/ProductData.qvd](qvd);

    Ihr Skript sollte folgendermaßen aussehen:

    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. Klicken Sie auf Daten laden.
  6. Die Product.qvd-Datei sollte nun in der Dateiliste aufgeführt werden.

    Diese Datendatei stammt aus dem Crosstable-Skript und umfasst drei Spalten – eine Spalte pro Kategorie (Product, Month, Sales). Diese Datendatei kann nun verwendet werden, um gesamten Product -Skript-Abschnitt zu ersetzen.

Daten aus QVD-Dateien einlesen

Es gibt verschiedene Möglichkeiten, QVD-Dateien mithilfe von Qlik Sense zu lesen oder darauf zuzugreifen:

  • Laden einer QVD-Datei als Datenquelle. QVD-Dateien können mit einem load-Befehl im Qlik Sense-Skript genau wie andere Textdateitypen (csv, fix, dif, biff usw.) referenziert werden.
  • 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);
  • Automatisches Laden von gepufferten QVD-Dateien. Wenn Sie den buffer-Zusatz vor einem load- oder select-Befehl verwenden, benötigen Sie keinen separaten Befehl zum Einlesen der QVD-Datei. Qlik Sense prüft automatisch, welche Daten aus der QVD-Datei und welche aus dem zugrunde liegenden originalen LOAD oder SELECT -Befehl gelesen werden können.
  • Zugriff auf QVD-Dateien über das Skript. Eine Reihe neuer Skriptfunktionen (ihre Namen beginnen alle mit QVD) helfen Ihnen, die Informationen im XML-Header der QVD-Datei auszulesen.

  1. Kommentieren Sie das ganze Skript im Skriptabschnitt Product aus.
  2. Geben Sie folgendes Skript ein:
  3. Load * from [lib://DataFiles/ProductData.qvd](qvd);			

  4. Klicken Sie auf Daten laden.
  5. Die Daten werden aus der QVD-Datei geladen.

    Fenster für Datenladefortschritt

    Fenster für Datenladefortschritt.
InformationshinweisInformationen zur Verwendung von QVD-Dateien für inkrementelles Laden finden Sie in folgendem Blog-Eintrag in Qlik Community: Overview of Qlik Incremental Loading (Überblick über inkrementelles Laden in Qlik)

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.

Beispiel:  

Buffer load * from MyTable;

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

Amount ist eine Zahl, die den Zeitraum definiert. Decimals dürfen verwendet werden. Ist keine Einheit angegeben, nimmt das Programm Tage an.

Die Option stale after ist für Datenbanken vorgesehen, deren Originaldaten keinen Zeitstempel enthalten. Eine stale after-Bedingung 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.

Beispiel:  

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

Incremental

Durch die Option incremental wird nur ein Teil der Daten aus der Originaldatenquelle gelesen. Die bisherige Größe der Datei 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.

Beachten Sie, dass die Option incremental nur mit LOAD-Anweisungen und Textdateien verwendet werden kann und dass incremental load nicht verwendet werden kann, wenn alte Daten geändert oder gelöscht wurden.

Beispiel:  

Buffer (incremental) load * from MyLog.log;

Normalerweise löscht das Programm automatisch QVD-Buffer, auf die während der Ausführung des Skripts nicht mehr zugegriffen wird. Auch beim Löschen der App werden die QVD-Buffer automatisch mitgelöscht. Die Store-Anweisung muss verwendet werden, wenn Sie den Inhalt des Buffers als QVD oder CSV-Datei behalten möchten.

  1. Erstellen Sie eine neue App und geben Sie ihm einen Namen.
  2. Fügen Sie einen neuen Skriptabschnitt im Dateneditor hinzu.
  3. Klicken Sie im rechten Menü unter DataFiles auf Daten auswählen.

  4. Laden Sie Cutlery.xlsx hoch und wählen Sie die Datei aus.
  5. Klicken Sie im Fenster Daten auswählen aus auf Skript einfügen.
  6. Kommentieren Sie die Felder in der load-Anweisung aus und ändern Sie die load-Anweisung wie folgt:
  7. Buffer LOAD *

    Ihr Skript sollte folgendermaßen aussehen:

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

  8. Klicken Sie auf Daten laden.
  9. Wenn Sie Daten zum ersten Mal laden, werden sie aus Cutlery.xlsx geladen.

    Fenster für Datenladefortschritt

    Fenster für Datenladefortschritt.

    Die Buffer-Anweisung erstellt auch eine QVD-Datei und speichert sie in Qlik Sense. In einer Cloud-Bereitstellung wird sie direkt in einem Verzeichnis in der Cloud gespeichert.

  10. Klicken Sie erneut auf Daten laden.
  11. Dieses Mal werden die Daten aus der QVD-Datei geladen, die von der Buffer-Anweisung beim ersten Laden der Daten erstellt wurde.
  12. Fenster für Datenladefortschritt

    Fenster für Datenladefortschritt.

Vielen Dank!

Sie haben dieses Tutorial jetzt abgeschlossen und hoffentlich grundlegende Kenntnisse zur Verwendung von Skripts in Qlik Sense erworben. Nähere Informationen zu weiteren Schulungen erhalten Sie auf unserer Webseite.