Accéder au contenu principal

Fichiers QVD

Un fichier QVD (QlikView Data) est un fichier qui comprend une table de données exportées à partir de Qlik Sense ou de QlikView. Le format QVD est un format Qlik natif qui ne peut être modifié et lu que par Qlik Sense ou QlikView. Le format de fichier est optimisé pour la vitesse de lecture des données à partir d'un script Qlik Sense tout en demeurant très compact. La lecture de données à partir d'un fichier QVD est généralement 10 à 100 fois plus rapide qu'à partir d'autres sources de données.

Les fichiers QVD peuvent être lus dans deux modes : standard (rapide) et optimisé (plus rapide). Le mode sélectionné est déterminé automatiquement par le moteur de script Qlik Sense. Le mode optimisé s'utilise uniquement lorsque tous les champs chargés sont lus sans aucune transformation (formules agissant sur les champs) ; il est toutefois possible de renommer les champs. Une clause Where entraînant la décompression des enregistrements par Qlik Sense désactive également le chargement optimisé.

Un fichier QVD contient exactement une table de données et se compose de trois parties :

  • Un en-tête XML (dans le jeu de caractères UTF-8) qui décrit les champs de la table, la disposition des informations ultérieures et d'autres métadonnées.
  • Des tables de symboles dans un format à remplissage de bits.
  • Les données de la table dans un format à remplissage de bits.

Les fichiers QVD s'utilisent à de nombreuses fins. Quatre usages principaux sont facilement identifiables. Plusieurs pourront s'appliquer dans n'importe quelle situation :

  • Augmentation de la vitesse de chargement des données
  • Grâce à la mise en mémoire tampon de blocs de données d'entrée qui ne changent pas ou qui changent lentement dans les fichiers QVD, l'exécution du script devient beaucoup plus rapide pour les grands ensembles de données.

  • Diminution de la charge sur les serveurs de base de données
  • Il est par ailleurs possible de réduire considérablement la quantité de données récupérées à partir de sources de données externes. Conséquence : une diminution de la charge de travail pour les bases de données externes et le trafic réseau. En outre, lorsque les mêmes données sont utilisées dans plusieurs scripts Qlik Sense à la fois, il suffit de les charger une seule fois dans un fichier QVD à partir de la base de données source. Les autres applications peuvent ensuite exploiter les mêmes données par le biais de ce fichier QVD.

  • Consolidation de données provenant de plusieurs applications Qlik Sense
  • L'instruction de script Binary permet de charger les données d'une seule application Qlik Sense dans une autre. Cependant, avec les fichiers QVD, un script Qlik Sense peut combiner les données issues d'un nombre indéfini d'applications Qlik Sense. Cette méthode ouvre des possibilités, par exemple pour des applications destinées à consolider des données similaires issues de différentes unités commerciales, etc.

  • Chargement incrémentiel
  • Dans de nombreux cas courants, il est possible d'employer la fonctionnalité QVD dans le but de faciliter le chargement incrémentiel, c'est-à-dire en chargeant exclusivement les nouveaux enregistrements d'une base de données en cours d'expansion.

Création de fichiers QVD

Il existe deux façons de créer un fichier QVD :

  • Création et dénomination explicites en utilisant la commande Store dans le script Qlik Sense.
  • Il suffit de spécifier dans le script qu'une table déjà lue en totalité ou en partie doit être exportée vers un fichier explicitement nommé à l'emplacement de votre choix.

  • Création et maintenance automatiques depuis le script.
  • En faisant précéder une instruction load ou select du préfixe Buffer, Qlik Sense crée automatiquement un fichier QVD qui, sous certaines conditions, peut être utilisé à la place de la source de données d'origine lors du rechargement des données.

Les fichiers QVD résultants ne présentent aucune différence en termes de vitesse de lecture.

Store

Cette fonction de script crée un fichier QVD, CSV ou txt avec un nom explicite.

 

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

L'instruction permet uniquement d'exporter des champs provenant d'une table de données. Si vous devez exporter des champs issus de plusieurs tables, définissez au préalable une jointure explicite dans le script afin de créer la table de données à exporter.

Les valeurs de texte sont exportées vers le fichier CSV au format UTF-8. Vous pouvez spécifier un délimiteur (voir LOAD). L'instruction store envoyée à un fichier CSV ne prend pas en charge l'exportation BIFF .

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. Ouvrez l'application Advanced Scripting Tutorial.
  2. Cliquez sur la section de script Product.
  3. Ajoutez ce qui suit à la fin du script :
  4. Store * from Product into [lib://DataFiles/ProductData.qvd](qvd);

    Le script devrait avoir l'aspect suivant :

    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. Cliquez sur Charger les données.
  6. Le fichier Product.qvd doit désormais figurer dans la liste des fichiers.

    Ce fichier de données est le résultat du script Crosstable ; il s'agit d'une table de trois colonnes, une par catégorie (Product, Month, Sales). Ce fichier de données peut remplacer toute la section de script Product à présent.

Lecture de données à partir de fichiers QVD

Il est possible de lire un fichier QVD ou d'y accéder au moyen de Qlik Sense en recourant aux méthodes suivantes :

  • Chargement d'un fichier QVD comme source de données explicite. Les fichiers QVD peuvent être référencés par une instruction load dans le script Qlik Sense comme tout autre type de fichier texte (csv, fix, dif, biff, etc).
  • 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);
  • Chargement automatique de fichiers QVD placés en mémoire tampon. Lorsque vous utilisez le préfixe buffer avec des instructions load ou select, aucune instruction explicite n'est nécessaire pour la lecture. Qlik Sense détermine dans quelle mesure il utilisera les données du fichier QVD plutôt que d'acquérir les données au moyen de l'instruction LOAD ou SELECT d'origine.
  • Accès aux fichiers QVD à partir du script. Il est possible d'utiliser un certain nombre de fonctions de script (toutes celles commençant par QVD) pour récupérer différentes informations sur les données figurant dans l'en-tête XML d'un fichier QVD.

  1. Mettez des commentaires sur tout le script dans la section de script Product.
  2. Saisissez les lignes de script suivantes :
  3. Load * from [lib://DataFiles/ProductData.qvd](qvd);			

  4. Cliquez sur Charger les données.
  5. Les données sont chargées à partir du fichier QVD.

    Fenêtre de progression de chargement de données

    Fenêtre de progression de chargement de données.
Note InformationsPour en savoir plus sur l'utilisation de fichiers QVD pour les chargements incrémentiels, consultez cet article de blog dans Qlik Community: Vue d'ensemble du chargement incrémentiel Qlik

Buffer

Il est possible de créer et de gérer automatiquement des fichiers QVD à l'aide du préfixe Buffer. Ce préfixe peut être utilisé dans la plupart des instructions LOAD et SELECT du script. Il indique que des fichiers QVD sont utilisés pour mettre en cache/mémoire tampon le résultat de l'instruction.

 

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

Si aucune option n'est utilisée, le tampon (buffer) QVD créé par la première exécution du script est utilisé indéfiniment.

 

Buffer load * from MyTable;

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

Amount est un nombre spécifiant la période. Cet argument admet l'utilisation de décimales (Decimals). Si l'unité n'est pas précisée, les jours sont utilisés par défaut.

L'option stale after est généralement utilisée avec des sources de base de données qui ne comportent pas d'horodatage simple pour les données d'origine. Une clause stale after spécifie simplement une période commençant à la date de création du tampon QVD et après laquelle celui-ci ne sera plus considéré comme valide. Avant l'expiration de ce délai, le tampon QVD est utilisé comme source de données et après ce moment, c'est la source de données d'origine. Le fichier de tampon QVD est alors mis à jour automatiquement et une nouvelle période débute.

 

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

Incremental

L'option incremental permet de ne lire qu'une partie d'un fichier sous-jacent. La taille précédente du fichier est stockée dans l'en-tête XML du fichier QVD. Cette méthode s'avère particulièrement utile dans le cas des fichiers journaux. Tous les enregistrements chargés précédemment sont lus à partir du fichier QVD tandis que les nouveaux enregistrements ultérieurs sont lus à partir de la source d'origine, avant qu'un fichier QVD à jour ne soit créé.

Notez toutefois que l'option incremental s'emploie exclusivement avec des instructions LOAD et des fichiers texte, et qu'il est impossible d'utiliser le chargement incrémentiel lorsque d'anciennes données ont été modifiées ou supprimées.

 

Buffer (incremental) load * from MyLog.log;

Les tampons QVD sont normalement supprimés lorsqu'ils ne sont plus référencés nulle part lors d'une exécution de script complète dans l'application qui les a créés ou lorsque l'application qui les a créés n'existe plus. Il est recommandé d'utiliser l'instruction Store pour conserver le contenu du tampon dans un fichier QVD ou CSV.

  1. Créez une application et nommez-la.
  2. Ajoutez une nouvelle section de script dans l'éditeur de chargement de données.
  3. Sous DataFiles dans le menu droit, cliquez sur Sélectionner des données.

  4. Téléchargez, puis sélectionnez Cutlery.xlsx.
  5. Dans la fenêtre Sélectionner des données depuis, cliquez sur Insérer le script.
  6. Mettez des commentaires sur les champs dans l'instruction de chargement, puis changez l'instruction de chargement pour ce qui suit :
  7. Buffer LOAD *

    Le script devrait avoir l'aspect suivant :

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

  8. Cliquez sur Charger les données.
  9. La première fois que vous chargez des données, elles sont chargées à partir de Cutlery.xlsx.

    Fenêtre de progression de chargement de données

    Fenêtre de progression de chargement de données.

    L'instruction Buffer crée également un fichier QVD et le stocke dans Qlik Sense. Dans un déploiement cloud, il est stocké dans un répertoire dans le cloud.

  10. Cliquez de nouveau sur Charger les données.
  11. Cette fois-ci, les données sont chargées à partir du fichier QVD créé par l'instruction Buffer lorsque vous avez chargé les données la première fois.
  12. Fenêtre de progression de chargement de données

    Fenêtre de progression de chargement de données.

Merci !

Maintenant que vous êtes parvenu au terme de ce didacticiel, nous espérons que vous avez acquis de nouvelles connaissances en matière de création de scripts dans Qlik Sense. Pour en savoir plus sur les formations complémentaires disponibles, rendez-vous sur notre site Web.