TUTORIEL · QLIK SENSE

Débuter avec le script de chargement Qlik

Apprendre pas à pas le chargement des données dans Qlik : LOAD, sources QVD, Excel et SQL, transformations, associations, JOIN, KEEP, CONCATENATE, Resident, Preceding Load, Mapping, STORE et DROP.

Comprendre ce que fait un chargement Qlik

Les données utilisées par une application Qlik proviennent d’une source : une base de données, un QVD, un fichier Excel, un CSV… Le script de chargement lit ces données et les charge dans Qlik sous forme de tables. Ces tables peuvent ensuite être transformées, associées ou utilisées dans les visualisations.

Un fichier Clients.qvd peut par exemple contenir une liste de clients. Tant que le script ne le charge pas, ces données restent uniquement dans le fichier. Une instruction LOAD peut les lire et créer dans Qlik une table appelée Clients. Les instructions placées plus loin dans le script peuvent alors utiliser cette table. À la fin du rechargement, les tables qui n’ont pas été supprimées constituent le modèle de données de l’application.

La source d’origine et la table chargée dans Qlik sont deux choses différentes. Un fichier QVD reste sur le disque tandis que les données lues dans ce fichier sont chargées dans l’application.

Exemple

Du fichier source au modèle de donnéesSource externe → LOAD → données disponibles dans une table Qlik → transformations → modèle de donnéesSTORE peut aussi écrire le contenu d’une table chargée dans Qlik dans un fichier QVD
Source externeBDD, QVD, Excel, CSV…
LOADfait entrer des données dans Qlik
Données chargéesaprès un LOAD, elles sont disponibles dans Qlik pour les instructions suivantes
Modèle finaltables encore présentes à la fin

Premier LOAD : charger des données depuis un QVD

Le fichier Clients.qvd contient des données que l’application doit utiliser. L’instruction LOAD permet de lire les champs souhaités dans ce fichier et de les charger dans Qlik.

Lorsque Qlik exécute ce LOAD, il lit dans Clients.qvd les trois champs indiqués : ID_CLIENT, NOM_CLIENT et VILLE. Ces données sont chargées dans l’application sous la forme d’une table appelée Clients. Le fichier Clients.qvd, lui, n’est pas modifié : il reste simplement la source des données sur le disque. La table Clients est maintenant chargée en mémoire par Qlik et les instructions suivantes du script peuvent l’utiliser.

Clients.qvd est le fichier source présent sur le disque. Clients est la table chargée dans l’application à partir de ce fichier. Une transformation appliquée ensuite à la table Clients ne modifie pas automatiquement le QVD d’origine.

Exemple

// Le fichier Clients.qvd est notre source de données.

Clients:
LOAD ID_CLIENT, NOM_CLIENT, VILLE
FROM [lib://Donnees/Clients.qvd] (qvd);

// Les données lues dans le QVD sont maintenant disponibles dans la table Clients.
Clients:nom donné à la table chargée dans l’application
LOADchamps que Qlik doit charger
FROMemplacement de la source
(qvd)indique que la source est un QVD

Charger depuis Excel ou CSV : le principe reste le même

Un QVD n’est pas la seule source possible. Qlik peut aussi charger un fichier Excel ou CSV. Le principe reste le même : LOAD lit les données de la source et les rend disponibles dans l’application.

Dans cet exemple, Produits.xlsx contient les données de départ. FROM indique où se trouve le fichier. La partie entre parenthèses précise comment Qlik doit lire ce fichier Excel. Une fois le LOAD terminé, les champs demandés sont disponibles dans une table Qlik appelée Produits. Le fichier Excel reste inchangé sur le disque.

FROM désigne la source et LOAD indique les champs à charger dans Qlik. Les options comme ooxml ou txt précisent simplement à Qlik comment lire le type de fichier concerné.

Exemple

// Produits.xlsx contient les données à charger.

Produits:
LOAD ID_PRODUIT, LIBELLE_PRODUIT, CATEGORIE
FROM [lib://Donnees/Produits.xlsx]
(ooxml, embedded labels, table is Produits);

// Les données sélectionnées sont maintenant disponibles dans la table Produits.
Sourcefichier Excel externe
LOADchoisit les colonnes à charger
Clause ooxmlexplique à Qlik comment lire Excel
Résultatles données sont disponibles dans la table Qlik Produits

Charger depuis une base de données : comprendre SELECT et LOAD

Avec une base de données, la source n’est plus un fichier. Une requête SQL demande d’abord les données à la BDD. Qlik peut ensuite appliquer un LOAD à ces données avant de les rendre disponibles dans l’application.

Dans l’exemple, SQL SELECT demande quatre colonnes à la table COMMANDES de la base de données. Les lignes renvoyées par la BDD sont ensuite traitées par le LOAD placé au-dessus. Ce LOAD renomme plusieurs champs et transforme la date. Le résultat final est chargé dans Qlik sous le nom Commandes. Il n’existe pas une première table créée par SELECT puis une seconde par LOAD : les deux instructions font partie du même chargement.

Pour comprendre les données, lisez ici le bloc depuis la source : la BDD fournit les lignes avec SELECT, puis le LOAD Qlik les transforme. Cette construction est un Preceding Load ; nous l’expliquerons tranquillement plus loin.

Exemple

// Les données de départ se trouvent dans la table COMMANDES de la BDD.

Commandes:
LOAD
    ORDER_ID AS ID_COMMANDE,
    CUSTOMER_ID AS ID_CLIENT,
    Date(ORDER_DATE) AS DATE_COMMANDE,
    AMOUNT AS CA_HT;
SQL SELECT
    ORDER_ID,
    CUSTOMER_ID,
    ORDER_DATE,
    AMOUNT
FROM COMMANDES;

// Le résultat est maintenant disponible dans la table Qlik Commandes.
SQL SELECTla BDD fournit les lignes
LOADQlik reçoit et transforme ces lignes
AS / Date()transformations faites par Qlik
Commandestable Qlik qui reçoit le résultat final

Transformer pendant le LOAD

Un LOAD ne sert pas seulement à copier des colonnes. Pendant que les lignes entrent dans Qlik, vous pouvez renommer des champs et en calculer de nouveaux.

Le QVD contient notamment DATE_BRUTE, QUANTITE et PRIX_UNITAIRE. Pendant le chargement, Qlik applique Date() à DATE_BRUTE et calcule QUANTITE * PRIX_UNITAIRE pour chaque ligne. Les résultats sont stockés dans les champs DATE_COMMANDE et CA_HT de la table Commandes chargée dans l’application.

Le LOAD ne sert donc pas seulement à choisir des champs : il peut aussi préparer les données au moment de leur chargement dans Qlik.

Exemple

// Le QVD fournit les données ; le LOAD les prépare avant de les charger dans Commandes.

Commandes:
LOAD
    ID_COMMANDE,
    ID_CLIENT,
    Date(DATE_BRUTE) AS DATE_COMMANDE,
    QUANTITE,
    PRIX_UNITAIRE,
    QUANTITE * PRIX_UNITAIRE AS CA_HT
FROM [lib://Donnees/Commandes.qvd] (qvd);

// Commandes contient maintenant DATE_COMMANDE et CA_HT.
Champ sourceDATE_BRUTE
ASdonne un nom au résultat
Expressioncalculée ligne par ligne
Commandestable Qlik qui contient les champs obtenus

WHERE et DISTINCT : choisir les lignes à charger

Jusqu’ici, toutes les lignes de la source étaient chargées. WHERE permet de ne charger que celles qui répondent à une condition. DISTINCT permet, lui, de ne conserver qu’une seule fois des lignes identiques dans le résultat.

Le QVD contient des clients actifs et inactifs. WHERE ACTIF = 1 indique que seuls les clients actifs doivent être chargés dans ClientsActifs. DISTINCT s’applique aux champs chargés, ici ID_CLIENT et NOM_CLIENT, et évite de conserver plusieurs fois une même combinaison identique.

DISTINCT ne doit pas servir à supprimer des doublons sans en comprendre la cause. Avant de l’utiliser, vérifiez pourquoi plusieurs lignes identiques sont présentes.

Exemple

// Le QVD contient tous les clients.

ClientsActifs:
LOAD DISTINCT
    ID_CLIENT,
    NOM_CLIENT
FROM [lib://Donnees/Clients.qvd] (qvd)
WHERE ACTIF = 1;

// ClientsActifs contient uniquement les lignes qui ont passé le filtre.
WHEREfiltre les lignes à charger
DISTINCTretire les lignes identiques du résultat
ClientsActifsnouvelle table chargée dans Qlik, contenant uniquement les lignes retenues

Charger une deuxième table : comprendre l’association automatique

Nous allons maintenant conserver deux tables dans l’application. La première, Clients, est chargée depuis son QVD. La seconde, Commandes, est chargée juste après. Elles possèdent toutes les deux un champ appelé ID_CLIENT.

Une fois les deux LOAD terminés, Qlik conserve Clients et Commandes comme deux tables distinctes. Comme elles possèdent un champ portant exactement le même nom, ID_CLIENT, Qlik les associe automatiquement par ce champ. Aucun JOIN n’est nécessaire pour créer cette relation.

Dans Qlik, deux champs portant exactement le même nom sont associés. C’est voulu pour les clés, mais dangereux pour les homonymes accidentels.

Exemple

// 1. On charge d’abord la table Clients.
Clients:
LOAD ID_CLIENT, NOM_CLIENT, VILLE
FROM [lib://Donnees/Clients.qvd] (qvd);

// 2. On charge ensuite la table Commandes.
Commandes:
LOAD ID_COMMANDE, ID_CLIENT, DATE_COMMANDE, CA_HT
FROM [lib://Donnees/Commandes.qvd] (qvd);

// Qlik associe automatiquement les deux tables grâce à ID_CLIENT.
Avant le 2e LOADClients a déjà été chargée dans Qlik
Après le 2e LOADClients et Commandes sont toutes les deux chargées
ID_CLIENTchamp commun = association

JOIN : fusionner les données de deux sources dans une seule table

Cette fois, nous ne voulons pas conserver deux tables séparées. Nous allons d’abord charger Clients, puis utiliser LEFT JOIN pour ajouter à cette table des informations provenant d’une seconde source.

Le premier LOAD charge la table Clients. LEFT JOIN (Clients) indique ensuite que les données lues dans Segments.qvd doivent être rapprochées de Clients à partir des champs communs, ici ID_CLIENT. Le champ SEGMENT est ajouté aux lignes correspondantes de Clients. Le second chargement ne reste donc pas sous la forme d’une table séparée.

Avant un JOIN, vérifiez qu’une même clé ne correspond pas à plusieurs lignes de façon inattendue. Sinon, le JOIN peut multiplier le nombre de lignes.

Exemple

// ÉTAPE 1 : on charge d’abord Clients.
Clients:
LOAD ID_CLIENT, NOM_CLIENT
FROM [lib://Donnees/Clients.qvd] (qvd);

// ÉTAPE 2 : on lit Segments.qvd et on fusionne dans Clients.
LEFT JOIN (Clients)
LOAD ID_CLIENT, SEGMENT
FROM [lib://Donnees/Segments.qvd] (qvd);

// APRÈS : Clients contient aussi SEGMENT.
Table cibleClients doit déjà exister
Source du JOINSegments.qvd est chargé pendant l’opération
ID_CLIENTchamp commun utilisé pour rapprocher
Résultatune seule table Clients enrichie

KEEP : comparer deux chargements sans les fusionner

KEEP rapproche également deux jeux de données grâce à leurs champs communs, mais contrairement à JOIN il ne les fusionne pas dans une seule table.

Le premier LOAD charge Clients. Le second charge Commandes avec INNER KEEP (Clients). Qlik compare alors les valeurs du champ commun ID_CLIENT et ne conserve que les enregistrements ayant une correspondance selon la logique du INNER KEEP. À la fin, Clients et Commandes restent deux tables distinctes.

Pour débuter, retenez surtout : JOIN fusionne ; KEEP filtre les ensembles tout en conservant les tables.

Exemple

// 1. On charge d’abord Clients.
Clients:
LOAD ID_CLIENT, NOM_CLIENT
FROM [lib://Donnees/Clients.qvd] (qvd);

// 2. Commandes est chargée et comparée à Clients.
INNER KEEP (Clients)
Commandes:
LOAD ID_COMMANDE, ID_CLIENT, CA_HT
FROM [lib://Donnees/Commandes.qvd] (qvd);

// APRÈS : Clients et Commandes restent deux tables distinctes.
Avant KEEPClients existe déjà
Pendant KEEPCommandes est chargée
Comparaisonsur les champs communs
Résultatdeux tables, pas une fusion

CONCATENATE : ajouter des lignes à une table déjà chargée

CONCATENATE sert à empiler des lignes. Nous allons d’abord charger les ventes 2025 dans une table Ventes, puis ajouter à cette même table les lignes provenant du fichier 2026.

Le premier LOAD crée la table Ventes à partir de Ventes_2025.qvd. Le second LOAD lit Ventes_2026.qvd. Grâce à CONCATENATE (Ventes), ses lignes sont ajoutées à la table Ventes déjà chargée au lieu de créer une seconde table. Le résultat est une seule table contenant les ventes des deux années.

Image mentale : CONCATENATE empile des lignes verticalement ; JOIN rapproche des lignes et ajoute généralement des colonnes.

Exemple

// 1. Ventes est créée avec les lignes 2025.
Ventes:
LOAD ID_VENTE, DATE_VENTE, CA_HT
FROM [lib://Donnees/Ventes_2025.qvd] (qvd);

// 2. On ajoute les lignes 2026 à la table Ventes déjà chargée.
CONCATENATE (Ventes)
LOAD ID_VENTE, DATE_VENTE, CA_HT
FROM [lib://Donnees/Ventes_2026.qvd] (qvd);

// APRÈS : une seule table Ventes contient 2025 + 2026.
Premier LOADcrée Ventes
Second LOADlit une autre source
CONCATENATEajoute ses lignes dans Ventes
Résultatune seule table Ventes chargée dans Qlik

NoConcatenate : demander explicitement deux tables séparées

Qlik peut concaténer automatiquement deux tables qui ont exactement les mêmes champs. NoConcatenate sert à dire : « même structure, mais je veux quand même une nouvelle table ».

Le premier LOAD charge Ventes_2025.qvd dans une table appelée Ventes. Nous chargeons ensuite Ventes_2026.qvd, qui contient exactement les mêmes champs. Dans ce cas, Qlik pourrait ajouter automatiquement les nouvelles lignes à Ventes. NoConcatenate lui demande au contraire de créer une deuxième table, Ventes_2026. Nous pouvons ainsi comprendre NoConcatenate sans utiliser encore Resident, qui sera expliqué à l’étape suivante.

Sans NoConcatenate, deux chargements ayant exactement les mêmes champs peuvent être regroupés automatiquement par Qlik. Ici, nous demandons explicitement de conserver deux tables.

Exemple

// 1 — On charge les ventes 2025.
Ventes:
LOAD ID_VENTE, DATE_VENTE, CA_HT
FROM [lib://Donnees/Ventes_2025.qvd] (qvd);

// 2 — Même structure, autre source.
// NoConcatenate impose la création d’une nouvelle table.
Ventes_2026:
NoConcatenate
LOAD ID_VENTE, DATE_VENTE, CA_HT
FROM [lib://Donnees/Ventes_2026.qvd] (qvd);

// À la fin, Ventes et Ventes_2026 restent deux tables distinctes.
Premier LOADcharge les ventes 2025 dans Ventes
Second LOADlit une autre source ayant les mêmes champs
NoConcatenateempêche Qlik d’ajouter automatiquement ces lignes à Ventes
RésultatVentes et Ventes_2026 restent deux tables distinctes

Resident LOAD : relire une table déjà chargée dans Qlik

Resident sert à repartir de données que Qlik a déjà chargées. Avant de pouvoir écrire Resident Commandes, il faut donc qu’une instruction précédente du script ait créé la table Commandes.

Dans la première partie, Qlik lit Commandes.qvd et charge les données dans une table appelée Commandes. Ces données sont alors disponibles dans l’application. Dans la seconde partie, Resident Commandes indique à Qlik de relire cette table déjà chargée, et non le fichier QVD. Qlik regroupe alors les lignes par ID_CLIENT, calcule Sum(CA_HT) et charge le résultat dans une nouvelle table appelée CA_Par_Client.

Resident ne relit pas le fichier ou la base de données d’origine. Il utilise comme source une table déjà chargée plus haut dans le script.

Exemple

// ÉTAPE 1 — On charge d’abord Commandes depuis le QVD.
Commandes:
LOAD ID_COMMANDE, ID_CLIENT, CA_HT
FROM [lib://Donnees/Commandes.qvd] (qvd);

// À ce stade, les données de Commandes sont déjà chargées dans Qlik.

// ÉTAPE 2 — Resident repart de cette table déjà chargée.
CA_Par_Client:
LOAD
    ID_CLIENT,
    Sum(CA_HT) AS CA_CLIENT
Resident Commandes
Group By ID_CLIENT;

// Le script dispose maintenant de Commandes et de CA_Par_Client.
FROM ...qvdlit la source externe
Commandestable chargée lors de la première étape
Resident Commandesrelit cette table déjà chargée
CA_Par_Clientnouvelle table créée à partir de Commandes

Preceding Load : enchaîner les transformations sans créer de table intermédiaire

Avec Resident, une première table a déjà été chargée et on la relit ensuite. Le Preceding Load évite cette étape intermédiaire : le résultat du chargement placé en dessous est transmis directement au LOAD placé au-dessus.

Lisez le flux de bas en haut. Le LOAD inférieur lit le CSV et transforme le texte DATE_TEXTE en DATE_BRUTE. Chaque résultat est immédiatement transmis au LOAD supérieur, qui crée DATE_COMMANDE. Il n’existe pas de table intermédiaire nommée entre les deux LOAD.

Resident : je repars d’une table déjà chargée dans Qlik. Preceding Load : le résultat de l’instruction du dessous est traité directement par le LOAD du dessus.

Exemple

// Le flux des données remonte du LOAD inférieur vers le LOAD supérieur.
Commandes:
LOAD
    ID_COMMANDE,
    Date(DATE_BRUTE) AS DATE_COMMANDE;
LOAD
    ID_COMMANDE,
    Timestamp#(DATE_TEXTE,'YYYY-MM-DD hh:mm:ss') AS DATE_BRUTE
FROM [lib://Donnees/Commandes.csv]
(txt, utf8, embedded labels, delimiter is ',');

// APRÈS : seule Commandes est créée comme table de ce bloc.
LOAD inférieurlit la source et produit un premier résultat
LOAD supérieurreçoit directement ce résultat
Table intermédiaireaucune table nommée n’est créée
Commandestable finale du bloc

Mapping LOAD + ApplyMap() : préparer une correspondance puis l’utiliser

Un mapping se déroule en deux temps. D’abord Qlik charge une petite correspondance clé → valeur. Ensuite un autre LOAD utilise ApplyMap() pour rechercher la valeur correspondant à chaque clé.

MapSegment est chargé en premier et devient une table de mapping interne à Qlik. Puis Commandes est chargée depuis son QVD. Pour chaque ID_CLIENT, ApplyMap cherche la valeur dans MapSegment et place le résultat dans le nouveau champ SEGMENT.

Le mapping doit être chargé avant le LOAD qui appelle ApplyMap(), puisque Qlik doit déjà connaître la correspondance au moment de la recherche.

Exemple

// ÉTAPE 1 — On charge d’abord la table de correspondance.
MapSegment:
Mapping LOAD
    ID_CLIENT,
    SEGMENT
FROM [lib://Donnees/Segments.qvd] (qvd);

// ÉTAPE 2 — Charger Commandes et consulter le mapping ligne par ligne.
Commandes:
LOAD
    ID_COMMANDE,
    ID_CLIENT,
    ApplyMap('MapSegment', ID_CLIENT, 'Non classé') AS SEGMENT,
    CA_HT
FROM [lib://Donnees/Commandes.qvd] (qvd);

// APRÈS : Commandes contient le champ SEGMENT enrichi.
Mapping LOADprépare une correspondance à deux colonnes
ApplyMap()cherche une clé pendant un autre LOAD
3e argumentvaleur si la clé n’est pas trouvée
RésultatSEGMENT est créé dans Commandes

STORE : enregistrer dans un QVD une table déjà chargée

Jusqu’ici, LOAD faisait entrer des données dans Qlik. STORE fait autre chose : il prend les données d’une table déjà chargée dans Qlik et les enregistre dans un fichier, généralement un QVD.

Dans l’exemple, le premier LOAD charge les données dans la table Commandes. STORE peut alors enregistrer le contenu actuel de cette table dans Commandes.qvd. STORE ne retire pas Commandes de l’application : après l’écriture du fichier, la table reste disponible pour la suite du script.

LOAD charge des données dans Qlik ; STORE écrit dans un fichier le contenu d’une table déjà chargée dans Qlik.

Exemple

// ÉTAPE 1 — On charge d’abord Commandes.
Commandes:
LOAD ID_COMMANDE, ID_CLIENT, DATE_COMMANDE, CA_HT
FROM [lib://Donnees/Commandes_Source.qvd] (qvd);

// ÉTAPE 2 — Le contenu de la table déjà chargée dans Qlik est écrit sur disque.
STORE Commandes
INTO [lib://QVD/Commandes.qvd] (qvd);

// À la fin : Commandes reste disponible dans Qlik
//             et Commandes.qvd existe aussi sur le disque.
Avant STORECommandes doit déjà avoir été chargée
STORE Commandesprend le contenu actuel de cette table Qlik
INTOdésigne le fichier à écrire
Après STORECommandes reste disponible dans Qlik et le QVD existe sur le disque

LOAD → STORE → DROP : comprendre le cycle complet

Nous pouvons maintenant réunir trois instructions que l’on rencontre souvent ensemble. LOAD charge les données dans Qlik, STORE enregistre ces données dans un QVD, puis DROP TABLE retire la table de l’application lorsqu’elle n’est plus nécessaire pour la suite du script.

L’ordre est important. Le LOAD doit passer en premier car STORE a besoin d’une table déjà chargée. STORE crée ensuite le fichier QVD sur le disque. Enfin, DROP TABLE retire Commandes des données actuellement chargées dans Qlik. Cette dernière instruction ne supprime pas le fichier QVD : le fichier et la table Qlik sont deux choses différentes.

Après STORE, le QVD existe sur le disque et la table reste chargée dans Qlik. DROP TABLE retire ensuite cette table de l’application sans supprimer le QVD.

Exemple

// 1 — On charge les données dans Qlik.
Commandes:
LOAD
    ID_COMMANDE,
    ID_CLIENT,
    DATE_COMMANDE,
    CA_HT
FROM [lib://Donnees/Commandes_Source.qvd] (qvd);

// 2 — On enregistre le résultat dans un QVD.
STORE Commandes
INTO [lib://QVD/Commandes.qvd] (qvd);

// 3 — On retire la table de Qlik si elle n’est plus utile.
DROP TABLE Commandes;

// À la fin : Commandes a été retirée de Qlik,
//             mais Commandes.qvd reste bien sur le disque.
LOADcharge les données dans une table Qlik
STOREenregistre le contenu de la table dans un fichier
DROP TABLEretire la table des données chargées dans Qlik
QVDreste sur disque après le DROP

DROP TABLE et DROP FIELD : retirer ce qui n’est plus utile

DROP ne charge aucune donnée. Il sert à retirer une table ou un champ que Qlik a déjà chargé auparavant dans le script.

Une table temporaire peut par exemple servir à préparer un calcul puis devenir inutile. DROP TABLE retire alors cette table des données chargées dans Qlik. DROP FIELD retire seulement un champ d’une table. Après le DROP, les instructions suivantes ne peuvent plus utiliser l’élément supprimé.

Attention à la distinction : DROP TABLE Commandes retire la table Commandes de Qlik. Il ne supprime ni Commandes.qvd sur le disque, ni une table COMMANDES dans une base de données.

Exemple

// On suppose que ces objets ont été créés plus haut dans le script.

DROP TABLE Commandes_Temp;
DROP FIELD CleTechnique FROM Commandes;

// Commandes_Temp a été retirée de Qlik.
// Commandes est toujours présente, mais sans CleTechnique.
Préconditionla table ou le champ doit déjà avoir été chargé
DROP TABLEretire la table du modèle de données
DROP FIELDsupprime seulement un champ

INLINE : écrire une petite table directement dans le script

Avec INLINE, il n’y a ni fichier ni base de données à lire : les quelques valeurs à charger sont écrites directement dans le script.

Le bloc entre crochets joue le rôle de source. La première ligne contient les noms de champs et les lignes suivantes contiennent les valeurs. LOAD * charge l’ensemble et crée la table Statuts dans Qlik. INLINE est particulièrement pratique pour de petites listes de référence ou pour faire des essais.

INLINE est idéal pour expérimenter : vous voyez la source et le résultat sans dépendre d’un fichier externe.

Exemple

// Les données sont écrites directement dans le script.
Statuts:
LOAD * INLINE [
CODE_STATUT, LIBELLE_STATUT
O, Ouverte
C, Clôturée
A, Annulée
];

// La table Statuts est maintenant chargée dans Qlik avec 3 lignes.
Sourcevaleurs écrites dans le script
LOAD *charge les colonnes du bloc INLINE
Statutstable créée directement à partir des valeurs INLINE

Assembler le tout : construire un premier modèle de données

Nous savons maintenant charger plusieurs tables et nous avons vu que Qlik les associe lorsque des champs portent le même nom. Construisons un premier modèle simple avec des clients, des commandes et des produits.

Le premier LOAD charge Clients. Le deuxième charge Commandes ; comme les deux tables possèdent ID_CLIENT, Qlik les associe par ce champ. Le troisième LOAD charge Produits ; ID_PRODUIT crée à son tour l’association avec Commandes. À la fin du rechargement, ces trois tables et leurs associations constituent le modèle de données utilisé par l’application.

Ouvrez ensuite le Data Model Viewer : il permet de voir les trois tables chargées et les associations que Qlik a créées entre elles.

Exemple

// 1 — On charge Clients.
Clients:
LOAD ID_CLIENT, NOM_CLIENT, VILLE
FROM [lib://Donnees/Clients.qvd] (qvd);

// 2 — On charge Commandes.
Commandes:
LOAD
    ID_COMMANDE,
    ID_CLIENT,
    ID_PRODUIT,
    DATE_COMMANDE,
    QUANTITE,
    CA_HT
FROM [lib://Donnees/Commandes.qvd] (qvd);

// 3 — On charge Produits.
Produits:
LOAD ID_PRODUIT, LIBELLE_PRODUIT, CATEGORIE
FROM [lib://Donnees/Produits.qvd] (qvd);

// Associations : Clients ← ID_CLIENT → Commandes ← ID_PRODUIT → Produits
Clientstable contenant les informations sur les clients
Commandestable contenant les commandes et les identifiants qui les relient aux clients et aux produits
Produitstable contenant les informations sur les produits
Fin du scriptles trois tables et leurs associations forment le modèle de données

Les principales instructions de chargement en un coup d’œil

Les instructions vues dans ce parcours n’ont pas toutes le même rôle. Certaines lisent une source externe, d’autres réutilisent ou enrichissent des données déjà chargées, écrivent un fichier ou retirent une table devenue inutile.

LOAD ... FROM lit une source externe. Resident repart d’une table déjà chargée. JOIN et CONCATENATE ajoutent des données à une table existante, selon des mécanismes différents. STORE écrit une table dans un fichier et DROP retire une table ou un champ de l’application. Cette distinction permet de lire plus facilement un script de chargement.

Resident, Preceding Load, Mapping/ApplyMap et le modèle associatif sont approfondis dans les tutoriels dédiés.

Exemple

Les rôles essentielsLire une source → charger les données → les transformer ou les associer → éventuellement les enregistrer → conserver dans l’application uniquement les tables utiles.Chaque instruction intervient à une étape précise du chargement.
LOAD ... FROMlit une source externe et charge le résultat dans une table Qlik
Residentrelit une table déjà chargée dans Qlik pour créer un nouveau résultat
Preceding Loadrésultat inférieur → LOAD supérieur, sans table intermédiaire nommée
JOINcharge des données puis les fusionne avec une table déjà chargée dans Qlik
CONCATENATEcharge de nouvelles lignes et les ajoute à une table déjà chargée dans Qlik
Mapping / ApplyMapcharge une correspondance puis l’utilise
STOREécrit dans un fichier le contenu d’une table déjà chargée dans Qlik
DROPretire une table ou un champ des données chargées dans Qlik