Technique d’optimisation Qlikview

Si vous utilisez régulièrement Qlikview comme outil de reporting, vous avez sûrement être confronté à la question du chargement de données volumineuses. Voici une technique qui vous permettra de vous sortir de bien des situations.

qlikview-logo

Qlikview, un logiciel puissant

Qlikview est le logiciel chouchou des analystes avec des compétences techniques, cet outil étant plus léger et rapide à utiliser que d’autres solutions disponibles sur le marché, permettant notamment un chargement rapide des données. Les entreprises demandent toujours plus de réactivité et le marché de la BI (Business Intelligence) a du prendre ce paramètre en ligne de compte dans les développement des solutions.

Il n’est pas forcément souhaitable pour un analyste qui va devoir multiplier les rapports, de voir écrire un document de spécification de création de cube, de l’envoyer au service informatique, de multiplier les échanges pour être certain que le besoin a bien été compris, d’attendre que le besoin soit priorisé, tout cela avant que l’analyste puisse commencer à manipuler les données. Trop long, beaucoup trop long: Qlikview a permis aux utilisateurs finaux (les analystes, les financiers, …) de s’affranchir des informaticiens et de gagner en autonomie.

Le cas limite se pose cependant du chargement des données depuis des bases SQL qui seraient un peu lentes, surchargées ou tout simplement d’un besoin d’extraction important. On ne parle pas ici d’un simple tableau de bord dont la source principale serait un fichier Excel ou un .CSV chargé directement à partir de l’assistant de création des rapports. Non, il s’agit bien dans ce cas d’un chargement de données à partir de l’éditeur de script (éditeur accessible directement en faisant un simple ctrl + E dans un document qlikiew).

Des contraintes de données trop importantes

Dans certains cas, les bases de données sur lesquelles vous travaillez sont particulièrement lentes. Exécuter une simple requête SQL peut vous prendre beaucoup de temps. Le nombre d’utilisateurs de la base de données peut être très élevé, les opérations coûteuses en terme de CPU. Vous pouvez aussi avoir des besoins d’analyse qui vont vous demander beaucoup de données: de très nombreux croisements, des dimensions par dizaines, bref, votre besoin en données peut être beaucoup trop important pour que vous puissiez récupérer toutes les données en une seule fois.

La parade est relativement simple à mettre en œuvre si tant est que l’on ne soit pas effrayé par l’utilisation du code informatique. Il ne faut pas pour cela avoir fait 10 ans d’études en informatique, un peu de lecture du mode d’emploi de Qlikview et un peu de logique (ce qui est à la portée à pariori d’un analyste) suffit à résoudre le problème.

Il faut savoir que Qlikview embarque un format de fichiers, dont l’extension est un .QVD. Il s’agit d’un format comme le .CSV ou le .TXT en sont un autre. La particularité de cette extension est que lorsque le document Qlikview utilisera un fichier en .QVD pour charger les données, les temps de chargement seront au moins 10 à 100 fois plus rapides que tout autre format. Les données dans un fichier QVD sont compactées et ce format est une technologie particulière et brevetée déposée par Qlikview (vous pouvez en apprendre un peu plus en consultant cet article). L’autre grand avantage est que le chargement des données se fera dans un fichier une seule fois. Chaque jour, vous pourrez créer de nouveaux fichiers qui intégreront les données de votre base de données: les serveurs seront donc nettement moins sollicités. Gain de temps donc et de performance.

Une fois le décor planté, la technique est donc simple.

La technique de chargement

Vous allez dans un premier temps créer une application Qlikview, dont l’objet sera uniquement de créer des fichiers .QVD. Ce document Qlikview contiendra votre script de création des fichiers QVD et sera exécuté chaque jour par exemple.

Vous allez écrire une requête SQL qui permettra d’aller récupérer toutes les données nécessaires mais uniquement pour une seule journée. Le bout de code que vous aurez écrit dans l’application Qlikview répétera la même opération chaque jour pour créer des fichiers .QVD

Une fois ces fichiers crées, qui contiendront toutes vos données, vous pourrez créer une deuxième application qlikview qui contiendra le dashboard ou tableau de bord en français souhaité. La source de données de cette application? Vous l’aurez compris: directement les fichiers .QVD que la première application aura crée.

Concrètement, imaginez devoir pour votre analyse être confronté au cas où vous devez récupérer 8 millions de lignes. Pour une raison X ou Y, votre administrateur système ou les capacités de serveur, ne permettent pas d’exécuter une requête SQL pour aller chercher toutes ces données. De plus, si vous répétez l’opération chaque jour, vous allez consommer de la CPU sur votre serveur pour rien (surtout si par exemple sur 30 jours, vous ne devez allez concrètement que récupérer les données de la dernière journée écoulée. Vous aurez déjà les journées précédentes, les recalculer serait totalement inutile).

Chaque jour, votre première application va aller récupérer les données de la dernière journée. Vous aurez au final une collection de .QVD que vous viendrez charger dans l’application contenant votre tableau de bord tout en ayant optimisé l’utilisation de votre serveur et en étant capable de charger rapidement et de la meilleure manière possible les données nécessaires.

Les fonctions Qlikview pour faire cela pouvant vous intéresser sont:

  • store <tableName> into C:\\pathToApplication\fichierCree.qvd(qvd);
  • sub … call
  • for each … in …