0% ont trouvé ce document utile (0 vote)
4 vues235 pages

QV Developer

La formation sur QlikView couvre des aspects essentiels tels que la vérification des données, la modélisation dimensionnelle et l'édition de scripts. QlikTech, fondée en 1993, est un leader dans le domaine des solutions de Business Intelligence, avec une technologie associative in-memory brevetée. Les participants apprendront à charger des données, créer des objets et optimiser des tables pour des analyses efficaces.

Transféré par

testsyrec
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues235 pages

QV Developer

La formation sur QlikView couvre des aspects essentiels tels que la vérification des données, la modélisation dimensionnelle et l'édition de scripts. QlikTech, fondée en 1993, est un leader dans le domaine des solutions de Business Intelligence, avec une technologie associative in-memory brevetée. Les participants apprendront à charger des données, créer des objets et optimiser des tables pour des analyses efficaces.

Transféré par

testsyrec
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Formation

Developer

1
Plan de la Formation
• Présentation de QlikView • Vérification des données enregistrements
• Principe de base • Table Résidente • Présentation des onglets
• Les touches de raccourcis • Transformation des • Traduction et transcodage
• Les objets : données • Multimédia
– Feuille • Tableau croisé dynamique • Plusieurs tables de faits
– Liste de sélection • Chargement Inline – Concaténation des tables
– Table – Pivot
• Chargement Partiel / Total
• Modélisation • Silos QVD
• Champs Systèmes
Dimensionnelle • Sécurité d’accès
• Editeur de script • Journal et Logs
• Champs Clés
• Opérateurs • Script de rechargement
• Les variables
• Syntaxes les plus utilisées • Incrémental
• Boucles et Conditions
• Chargement d’une base
de données • Stockage et formatage des
données
• Chargement d’un fichier à
plat • Jointures internes
• Fonctions inter-

2
Présentation
de QlikView 11

3
A Propos de QlikTech
Historique Board
•Fondé en 1993 en Suède •Paul Wahl, ancien COO Siebel et CEO SAP America
•R&D basée à Lund, Suède •Alex Ott, JVP, ancien Président Siebel North America
•Brevets détenus pour la technologie associative in- •Bruce Golden, Accel, ancien Dirigeant de Sun, Illustra
memory et Informix
•Le produit QlikView a connu 8 versions majeures •Claes Bjork, ancien CEO Skanska
•QlikView 8,5 est sorti en 2008 •Måns Hultman, Chairman de QlikTech
•Conduit par des investisseurs –Accel Partners and
JVP

Organisation Résultats
•Equipe Dirigeante : •Leader des solutions de BI de nouvelle génération
–Anciens Dirigeants venus de SAP, Siebel, Oracle, PA •Editeur de logiciel de BI connaissant la plus forte
Consulting, Mactive, Intentia croissance au monde pour deux années consécutives
•463 employés répartis dans 20 bureaux dans 12 pays (2005 –2006) selon IDC
•Près de 500 partenaires •Profitable, croissance annuelle du CA d‟environ 80%
•Siège aux Etats-Unis (Radnor, Pennsylvanie) •10 000 clients dans 90 pays
•14.3 nouveaux clients chaque jour
•449 000 utilisateurs actifs

4
Difference Fondamentale
La Technologie Associative "In-Memory" Brevetée

Quoi Comment La Puissance de la


Simplicité

Associative In Memory
• Conduite par la • Rapide
pensée • Faible impact
• Naturelle • Visuellement
• Libératrice Interactive
• Flexible • Résumé et Détail
• Collaborative • Portable
• Personnelle • Simple Temps
• Rend plus fort • Peu onéreuse
• Intégrante
5
Solution QlikView

6
Différentes couches

Couches BI Traditionnelles

Interface Utilisateurs,
• Interface Utilisateur
Dashboards, Un outil
Scorecards, Rapports Beaucoup d’Outils
• Moteur de Rapports
Un acteur et Graphiques
OLAP, Requêtes et
Nombreux Acteurs
Pour l’Utilisateur
Outils de Reporting • Moteur d’Analyses
Conduit par Final
l’Informatique Des Minutes pour • Compression des
Des mois pour changer
Data Marts données
changer
Faible Coût
• Intégration
Data Warehouse Coût Elevé

Intégration (ETL)

Données non Données non


CRM CRM
ERP structurées ERP
structurées

7
Difference Fondamentale
Différence entre OLAP et Vectoriel
Cube OLAP Base Vectorielle

TEMPS

Date Année Mois

PAYS PRODUITS

France
Fraise

Poire
Espagne

Pomme
Allemagne

8
Principe du vectoriel

Client_ID

Client_ID

9
Plateforme QlikView

10
Principes de base

11
Chargement des données
Base de Données
Fichiers plat
SQL ORACLE
.txt
.qvd
AS/400 INFORMIX
ACCESS .xls

Select Load
Interface
Base de données Homme
FAIT_VENTES: QlikView Machine
LOAD
Règles de Sécurité DATE_ID, Enregistrement
PRODUIT_ID,
d’accès CLIENT_ID,
Quantité,
Montant
FROM Ventes

12
Sauvegarder le document

• Sauvegarde l’ ensemble des éléments

– Les scripts
– Les données
– Les graphiques
– Les propriétés du document
– Les rapports
– Les sélections actives
– Les favoris

13
Liste de séléction

14
Exemple de listes

15
Sélection de valeur de champ

• 1 clique pour sélectionner ou désélectionner une valeur.


• Ctrl + Clique : pour Sélectionner plusieurs valeurs.
• Shift + Clique : pour sélectionner une plage de valeurs.
• Toutes les valeurs possibles d’un champ
• La donnée sera affichée qu’une seule fois dans la liste
• Une barre de défilement sera automatiquement ajoutée

16
La liste

• Toutes les valeurs possibles d’un champ


• La donnée sera affichée qu’une seule fois dans la liste
• Une barre de défilement sera automatiquement ajoutée

17
Création d’une liste de sélection

18
Table

19
L’objet Table
• Permet de présenter plusieurs champs dans une même table.
• Ne permet pas de faire des calculs.

20
Création de l’objet « table»

21
Modélisation Dimensionnelle

22
Types de modélisation

• 3 types de modélisation :
Table
Relationnel
Dimensionnel

23
Modèle Table
Modèle Table

24
Modèle Relationnel

25
Modèle Dimensionnel

26
Avantages & Inconvénients

27
Vocabulaire du décisionnel

28
Structure en étoile

Dimension 1 Dimension 6

Table
Dimension 2 de Dimension 5
Faits

Dimension 3 Dimension 4

Il est préférable de se rapprocher de cette structure dans QlikView

29
Structure en flocon de neige

Dimension 1a Dimension 4a
Dimension 1 Dimension 4
Dimension 1b Dimension 4b
Table
Dimension 2 de Dimension 5
Faits

Dimension 3a Dimension 6a
Dimension 3 Dimension 6
Dimension 3b Dimension 6b

30
Conseils sur le chargement des
données

•Privilégier la structure en étoile.


•Renseigner toutes les colonnes des tables de faits.
•Utiliser un entrepôt de données ou plusieurs fichiers QVD lorsque
les manipulations sont complexes.
•Vérifier le nombre d’enregistrements chargés dans les tables de faits
et dans les dimensions.
•La densité doit être de 100% pour les tables de faits.

31
Calculs dans QlikView

32
Table de Dimension

•La table de dimension :


Contient une clé primaire unique (PK).
Stocke des champs associés à la clé
primaire.(Article, Famille, Catégorie, …)
Permet de faire des filtres sur les champs.(Année,
Mois, Famille,…)
Contient peut d’enregistrements.(Elle n’a pas
besoin d’être optimisé)
Peut contenir beaucoup de champs

33
Dimension Calendrier

La dimension Calendrier permet :


•de stocker tous les calculs liés à la date.
•de simplifier les calculs pour l’utilisateur
final.
•d’améliorer les performances de
QlikView

DATE_ID Période Date Jour N°Jour Mois Trimestre Année


20090101 200901 01/01/09 Lundi 1 Janvier T1 2009
20090102 200901 02/01/09 Mardi 2 Janvier T1 2009
20090103 200901 03/01/09 Mercredi 3 Janvier T1 2009

34
Exemple pour la dimension
CALENDRIER

La dimension CALENDRIER peut inclure les champs suivants :

•Date (01/01/2009) •Trimestre civil (T1, T2, …)


•Date description complète (1er Janvier •Trimestre fiscal (Q1, Q2,…)
2009) •Semestre civil (S1, S2)
•Jour de semaine (Lundi, Mardi, …) •Semestre fiscal (F1, F2,..)
•Mois (Janvier, Février, …, Décembre) •Année civile (2008, 2009)
•Numéro de jour (1, 2, 3,…) •Année fiscale (2008-2009, 2009-2010, …)
•Numéro de semaine (1, 2, 3,…52) •Type de jour (Férié, Travaillé, Week-end,…)
•Numéro de mois (1, 2, 3, …12) •Évènement (Promo, Solde,..)
•Saison (Printemps, Eté, Automne, Hiver)

35
Conseils sur les dimensions

• Nommer les champs (Attributs) avec une terminologie connue


par les utilisateurs. (Ex : Raison Sociale, Famille Client,…)
• Préférer des libellés clairs aux codes.
• Mettre des clés primaires non significatives afin de ne pas faire
de calcul dessus. (Attention à la fonction Count )
• Ne pas essayer de gagner de la place sur les dimensions.

36
Table de Faits

• La table de faits :
Est la table centrale du modèle.
Contient uniquement des clés étrangères (FK).
Contient des champs numériques.
Permet de faire des calculs dans les expressions
QlikView.(Somme, Moyenne, Valeur maximum, Valeur
minimum,…)
Contient beaucoup d’enregistrement.(Il faut limité
le nombre de colonnes)
Stocke des mesures de mêmes
granularités.(Quantité, Montant, Marge,…)

37
Dimension dégénérée

•Dans certains cas, il est nécessaire de mettre une clé dans la table de
faits sans aucune relation avec une dimension.(Ex : N°de commande,
N°de facture, N°de ticket,…)
•Ce champ permet d’effectuer des filtres et des regroupements sur le
N°de commande par exemple.

38
Optimisation de la table de faits
•L’augmentation du nombre de lignes ou de colonnes dans la table de faits
implique :
une augmentation de la taille du fichier QVW
une augmentation de la taille mémoire.

•L’optimisation consiste à :
Réduire le nombre de colonnes.(Rajouter les champs au fur et à mesure
des besoins)
Réduire le nombre d’enregistrements par table.(Faire des filtres sur les
années)
Supprimer les champs dates / heures.(Faire une colonne date et une
autre pour l’heure)

39
Conseils sur la table de Faits

40
Jointure entre les tables

•La relation entre les tables se fait par homonymie au niveau des noms de
champ

41
Différentes étapes
de la modélisation

42
Modélisation dimensionnelle

Les étapes de la modélisation sont :


1. Choix du périmètre
2. Choix du grain
3. Choix des Dimensions
4. Identification des mesures

43
1 –Choix du périmètre

•Le choix du périmètre revient à lister les processus que l’on


souhaite couvrir.
Processus Marketing
Processus d’Achats
Processus des Ventes
Processus de Fabrication
Processus de Livraison
Processus de Facturation
Processus de Maintenance / Assistance

44
2 -Choix du grain

• Le grain consiste à définir le niveau de détail que l’on souhaite


prendre.
(Ex : Granularité à la ligne ou à l’entête de commande. Au jour ou au
mois)

• Cette étape va également permettre de déterminer les tables de


faits.
(Ex : Ventes, Factures, Appels, Interventions,…)

Remarque:
Nous vous conseillons de prendre le niveau de détail le plus fin
possible.

45
3 -Choix des dimensions

• Les dimensions sont fonction du niveau de granularité.


(Ex : Ventes au jour, Ventes agrégés au mois)

• Les attributs sont choisis en fonction des regroupements que l’on souhaite faire.
(Ex : Ventes parArticle, Ventes parFamille, Ventes parAnnée…)

• Les attributs sont regroupés par thématique.(ARTICLE : Code Article,


Désignation, Famille, Sous-Famille, Groupe, Couleur,…)

46
4 -Identification des mesures

• L’identification des mesures revient à lister tous les calculs que l’on
souhaite faire dans QlikView.

* Ces mesures peuvent etre calculées lors du chargement de QlikView.

47
Exercice –Analyser les fichiers sources

• Sources de données
 [Link]
 [Link]

• Déterminer :
 Le périmètre
 Le grain
 La table de fait
 Les mesures
 Les dimensions
 Les attributs

48
Editeur de script

49
L’éditeur de script (ETL)

• L’éditeur de script de QlikView permet :


 De charger plusieurs sources différentes dans un seul
script. (XLS, TXT, Base de données,...)
 De transformer les données à l’aide de fonctions
prédéfinies.
 De charger les données par incrémentation.
 De lier automatiquement les tables entre elles.

50
L’ETL de QlikView
•Extract
Lecture de données provenant de différentes sources:
SGBD, Fichiers …

•Transform
Nombreuses fonctions et opérateurs :
Fonctions mathématique,
manipulation de chaînes,
formatage de dates et d’heures,
agrégation,
calculs conditionnels,...
Transformation dans les tables, les fichiers et les dossiers .
Jointure des tables, création d’unions et de tables temporaires.

•Load
Entrepôt de données dans le fichier de QlikView.
Stockage vectoriel des données.
Chargement entre les différentes applications.
51
Transformation des tables

• Jointures (Inner, Outer, Left, Right) / Keeps


• Unions entre tables
• Tables de correspondance
• Procédures de chargement et de filtrage.
• Utilisation de tables temporaires
• Structures de contrôle
 If ... then ... else
 Boucles Loops
 Variables

65
52
Transformation des données

• Exemples:
 Date et Heure
Year(), Month(), Day(), Week(), WeekDay(), etc.
 Interprétation et Formatage
(convertir un texte en numérique et vice versa)
Date(), Time(), Timestamp(), Interval(), Num(), etc.
 Chaîne de caratères
Left(), Mid(), Right(), Subfield(), Index(), etc.
 Inter-enregistrement
Peek(), Exists(), etc.
 Condition
If(), Alt(), Pick(), etc.
 Correspondance / Traduction
Applymap(), Mapsubstring(), etc.

53
Lancer l’éditeur de script

Éditer le script

54
L’éditeur de script

55
Barre de l’Editeur de script

56
Débogueur

Chargement Limité

57
Visionneur de table

Aperçu des
données

58
Sources de données

59
Type de données

 Tout type de fichier texte, par exemple .csv


 Résultat de requête SQL sur une base de données via OLE
DB/ODBC
 Fichiers QlikView déjà existants (fichiers binaires)
 Fichiers de données QlikView (.qvd)
 Fichiers Excel (standard BIFF)
 Fichiers en format fixe
 Fichiers Dif (format d’export standard AS/400)
 Tables HTML
 Tables XML

60
Script : Commentaires

61
Opérateurs

62
Opérateurs de chaîne

63
Opérateurs logiques

64
Opérateurs relationnels

65
Guillemets

66
Syntaxes les plus utilisées

67
Fonctions de chargement de données

 Les commandes les plus utilisées sont :


 ODBC CONNECT TO
 SQL SELECT
 LOAD

68
Premier script basique
// Exemple de script
SQL SELECT Discount,
OrderID,
ProductID,
Quantity,
UnitPrice,
UnitPrice * Quantity *(1 - Discount ) as NetSales
FROM `Order Details`;

EMPLOYE:
Load EmpID as EmployeeID,
[Last Name],
[First Name],
Title,
[Hire Date],
Office,
Extension,
[Reports To],
[Year Salary]
FROM [Link] (biff, embedded labels, table is [Employee$]);

69
Syntaxe CONNECT TO

[ODBC] connect to ChaineDeConnexion [ ( InfoAccès ) ]

CONNECT TO 'Nwind;
DBQ=C:\Exercices\Samples\[Link]' (UserID is sa, Password is admin);

ODBC CONNECT TO [MS Access Database;DBQ=C:\Exercices\[Link]];

70
Syntaxe SQL

71
L’instruction «SELECT»
• N'importe quelle commande select valide peut être employée.

• Attention à l’interprétation des drivers ODBC / OLE DB

• Utiliser [ ] pour encadrer les noms des champs contenant des


espaces ou des caractères spéciaux.

• Possibilité de faire des union entre les select.

72
Syntaxe LOAD

73
L’instruction «LOAD»

•Différents chargements :
LOAD … FROM <NomFichier>;
LOAD … RESIDENT <NomTable>;
LOAD … INLINE [<données>];
LOAD … AUTOGENERATE (<nombre>);
LOAD … SQL SELECT …;
•Renommer des données
•Créer de nouvelles données
•Incorporer des règles métiers

74
Renommer un champ

• En utilisant as dans une commande load


 Load
Capitale as [Nom de la Capitale] ,
Reg as region,
Pop as Population
from [Link] (ansi, txt…

• Avec l’instruction alias, qui signifie que vous renommez


toutes les occurrences de ces champs avec les noms
indiqués.
Alias CDArt as ‘Code Produit’ ;

75
Autogenerate

• « Autogenerate » dans une instruction LOAD génère


plusieurs enregistrements.
• Exemple :
 Quarters:
Load
rowno() as Mois,
‘T' & Ceil(rowno()/3) as Trimestre
Autogenerate(12);

76
Chargement d’une base de données

77
Assistant ODBC

78
Assistant SELECT

79
Exercice –Charger une table Access

• Source de données
Base [Link]
Résultat attendu

• Actions à réaliser :
Sélectionner la source ACCESS
Visualiser les données de la table
Vérifier le nombre d’enregistrements
Vérifier le nombre d’enregistrements
parcolonne

80
Chargement d’un fichier à plat

81
Insertion d’un fichier

82
L’assistant fichier Excel

83
Syntaxe LOAD

EMPLOYES:
LOAD
EmpID as EMPL_ID,
Nom,
Statut
FROM [[Link]] (biff, embedded labels, table is Employes$);

84
Exercice –Charger un fichier Excel

• Sources de données Résultat attendu


 [Link]
[Link]
[Link]

• Actions à réaliser
 Charger les 3 tables
Nommer les tables
Renommer les colonnes
Clefs :
DATE COMMANDE <->
DATE
EmpID <-> EmployeID
Client ID <-> ClientID
85
Exercice –Charger un fichier XML

•Source
ISO_3166-[Link]

•Actions à réaliser
Ajouter le nom des pays
Attention au lien
Pays/Code

86
Vérification des données

87
Comptage des enregistrements

•Lignes:
Nombre d’enregistrements dans la table.
→Il convient de vérifier que ce nombre est identique à la
source de données.

•Champs:
Nombre de colonnes (Champ QlikView).
→Il convient de vérifier que le nombre de colonnes est
identiques à la source de données.

•Clés:
Nombre de clé primaire.
→Il convient de regrouper les clés primaires entre-elles.

88
Vérification d’une table de faits

•Densité d’information :
Le produit est utilisé à 98% dans cette
table.
→Les clés primaires doivent être à 100%

•Ratio de sous-ensemble :
seuls 30% des dates sont utilisées.
→Toutes les dates ne sont pas présentes
dans la table de faits.

89
Exercice –Vérifier l’intégrité des
données

•Vérifier dans le modèle :


Le nom de chaque table
Le nom des champs
Les jointures entre les tables
Les clés primaires (Densité d’Information à 100%)
Les clés étrangères
(Densité d’Information et ratio du Sous-ensemble)
Le nombre d’enregistrements dans chaque champ

90
Table Résidente

91
Table résidente

•Permet de créer d’autres tables à partir d’une table


préalablement chargée dans la base interne de QlikView.

92
Syntaxe RESIDENT

COMMERCIAUX :
LOAD
[Code Employé] as EMPLOYE_ID,
Nom &‘ ‘& Prénom as Commercial,
Fonction

RESIDENT Employée;

93
Syntaxe Drop Field et Drop Table

•Drop Field Produit;

•Drop Table TMP_OBJECTIF;

94
Exercice –Extraire la dimension
Produits
•Sources de données
[Link]
[Link]
[Link]

•Actions à réaliser
Extraire la dimension PRODUITS
(Code article -> ProduitID /
Designation -> Produit )
Renommer CdtID en N°Cde
Supprimer le champ
Produit de la table COMMANDES
(Drop field From table)

95
Transformation
des données

96
Transformation des données

Transformations possibles :
•Suppression de lignes
•Filtres conditionnels
•Rotation Lignes Colonnes

SCRIPT GENERE
PAYS:
LOAD Pays,
Capitale
FROM [Link](ansi, txt, delimiteris';', embeddedlabels, msq, filters(
Remove(Row, Pos(Top, 7)),
Remove(Row, RowCnd(CellValue, 1, StrCnd(start, ‘Z'))),
Remove(Row, RowCnd(CellValue, 1, StrCnd(contain, 'Bosnia')))
));

97
Chargement d’un
Tableau Croisé Dynamique

98
Assistant Tableau Croisé

99
Syntaxe CROSSTABLE

• Crosstable( champ d'attribut , champ de données [ , n ] )


( instructionload | instructionselect )

• OBJECTIFS:
CrossTable (Année, Objectif, 2)
LOAD* FROM
[[Link]] (biff, embedded labels, table is Objectif$);

100
Exercice –Chargement d’un tableau
croisée

• Source
[Link] (Onglet Année)

• Actions à réaliser :
Sélectionner la source
Suppression
Colonne Commercial
Ligne Total
Décroiser le tableau
Renommer EMPL_ID ->
EmployeID

101
Clés Synthétiques ou Boucles

•Renommer les colonnes.


•Concaténer les clés avec un séparateur.
•Utiliser une fonction :
RowNo()
AutoNumber()
AutoNumberHash128() ou AutoNumberHash256()
Hash128(), Hash160(), Hash256()
102
Règles sur les clés primaires
• La clé primaire d’une dimension doivent se faire si possible, avec une clef
numérique sans aucune signification.

•Les clés primaires artificielles permettent :

De gagner de la place(Ex : Numérique de 2 à 3 octets à la place d’une Date sur


8 octets)
D’interdire les calculs sur les clés

•Utiliser les fonctions suivantes :


RowNo()
AutoNumber()
AutoNumberHash128()

103
Syntaxe de concaténation

104
Exercice –Ajout d’une clé primaire

•Actions à réaliser
Annuler le
renommage du champ
EMPL_ID

105
Chargement
Inline

106
Assistant données intégrées

107
Exercice –Ajout de la classification

•Actions à réaliser
Ajouter la Table
Classification dans une
table inline.

108
Chargement
Partiel / Total

109
Chargement partiel
Menu contextuel

• Cette commande exécute uniquement les instructions load et select


précédées d'un préfixe replace ou add. Les autres tables de données ne
sont pas concernées par cette commande.

110
Add load

• Pendant un rechargement partiel, le résultat de l'instruction add


load/add select est ajouté à la table QlikView pour laquelle un nom
a été généré par l'instruction add load/add select (à condition que
cette table existe).
• add[ only ] (instructionload |instructionselect
|instructionmap..using)
• onlyest un qualificatif en option indiquant que l'instruction doit être
ignorée pendant les rechargements normaux (non partiels).

111
Replace load

• L'instruction replace load/ replace select a pour effet de supprimer la


table QlikView entière, dont le nom est généré par l'instruction replace
load /replace select, et la remplace par une nouvelle table contenant le
résultat de l'instruction replace load/replace select.

• replace [only] (loadstatement |selectstatement |map...usingstatement)

112
Exemple de rechargement partiel
• Exemple :
 PERSONNEL:
Load Nom, Prénom FROM [Link] ;
Add Load Nom, Prénom FROM [Link] where
not exists (Nom);

• Pour un rechargement normal, les données sont chargées à partir du


fichier [Link] puis stockées dans la table QlikView PERSONNEL. Les
données du fichier [Link] sont ensuite concaténées à la
même table QlikView.

• Pour un rechargement partiel, les données sont chargées à partir du


fichier [Link] et ajoutées à la table QlikView
PERSONNEL.

113
Les champs systèmes QlikView

114
Champs systèmes

115
QlikView Tables Systèmes

116
Propriétés du document : Table

117
Champs Clés

118
Comptage des enregistrements

•Ne jamais faire de calcul sur


les clés.
•Solution dupliquer la clé
primaire :

Load
CODCLI as CLIENT_ID,
CODCLI as [N°Client],

From [Link] (…);

•Dans QlikView :
Count([N°Client])

119
Champs Clés
• La fréquence pour un champ clé n’est pas possible

120
Exercice –Compter le nombre de
clients
•Actions à réaliser
Ajouter une nouvelle colonne
(N°Client)
Créer une zone de calcul dans
un champ texte.

121
Jointure automatique

•QlikView réalise des jointures automatiques par homonymie

•L’instruction QUALIFY permet de précéder le nom du champ par le nom


de table [Link]
QUALIFY *;
QUALIFY nom, Ville;

•UNQUALIFY annule l’ordre QUALIFY

122
Exemple QUALIFY / UNQUALIFY

123
Les variables

124
Les variables
•Variable : Entité nommée contenant une seule valeur.

•Les variables peuvent contenir :


Des données numériques (Entier, Décimal ou Date)
Des données alphanumériques.
Des expressions de calcul (Le premier caractère commence par égal)

•Les variables se déclarent par :


Set: pour définir une variable et lui affecter une valeur « fixe ».
Let: pour effectuer un calcul avant d’affecter la valeur.

125
SET

•L'instruction SET est utilisée pour définir une variable.

•Syntaxe : SET nomdevariable = chaîne

•Exemples :
SET Fichier =‘[Link]’
SET vNbrAnnee = 3;

126
LET

•LET évalue l'expression avant d'être affectée à la variable.

•Syntaxe :LET nomdevariable = expression

•Exemples :
LET Date = Now() donne la date du moment
LET x = 1 + 2 donne 3
LET vAnneeCourante = num(Year(Today()));

127
Expansion $
Utilisation de la variable :
$( nomdevariable)

•Exemples :
set Monchemin=C:\MesDocuments\Fichiers\;

load * from $(Monchemin) [Link];
set AnnéeActuelle=2009;

select * from table1 where Année= $(AnnéeActuelle);

128
Expansion $ avec une expression
•Expressions dans une expansion
Le contenu doit commencer par le signe égal.

•Syntaxe : $( =expression )

•Exemples :
$(=Year(Today())); // renvoie par exemple '2009'
$(=Only(Year)-1); // renvoie l'année précédant l'année sélectionnée

129
Expansion $ d’un fichier –Instruction
include

•Expressions dans une expansion


Possibilité d’inclure un fichier texte externe.

•Syntaxe : $( include=nomdefichier)

•Exemple :
$(include=C:\Documents\[Link]);

130
Insertion de fichiers dans le script

•La ligne «include» permet de rajouter des lignes dans le script.


•L’intérêt est de partager le même script avec plusieurs documents QlikView.

131
Les variables de script
•Les variables de script sont des entités auxquelles on peut affecter n'importe
quelle valeur textuelle ou numérique.

•Les variables définies au niveau du script sont accessibles dans tout le


document
// Variables système
SET ThousandSep='';
SET DecimalSep=',';
SET MoneyThousandSep='';
SET MoneyDecimalSep=',';
SET MoneyFormat='###0,00 €;-###0,00 €';
SET TimeFormat='hh:mm:ss';
SET DateFormat='DD/MM/YYYY';
SET TimestampFormat='DD/MM/YYYY hh:mm:ss[.fff]';
SET MonthNames='janv.;févr.;mars;avr.;mai;juin;juil.;août;sept.;oct.;nov.;déc.';
SET DayNames='lun.;mar.;mer.;jeu.;ven.;sam.;dim.';

132
Variables de manipulation des valeurs

SET NULLDISPLAY=‘N/A’ -> Toutes les valeurs NULL d’une source ODBC seront affichées en ‘N/NA’
SET NULLINTERPRET=‘sym’ -> Toutes les valeurs « sym » d’un fichier texte ou une clause inline
seront interprétées comme NULL
SET OtherSymbol=‘+’ -> Symbole à traiter comme les autres valeurs

133
Aperçu des variables

134
Exercice –Utiliser des variables
Actions à réaliser :
•Dans le script :
vDateHeure=Now(); // Date et Heure
vDateDuJour=Today(); // Date
vAnneeCourante = num(Year(Today())); // Année
vLangue= 'FR';

135
Boucles et Conditions

136
if( condition , then , else )

•L'instruction If permet de tester une condition vraie ou fausse.

•Syntaxe
if( condition, then, else)

•Exemple
if( Montant >= 0, 'OK', 'Alarme')

137
If..then..elseif..else..end if
L'instruction de contrôle if..then crée une clause conditionnelle qui oriente
l'exécution du script.
•Syntaxe
If condition then
[ instructions ]
{ elseifcondition then
[ instructions ] }
[ else
[ instructions ] ]
end if
•Exemple
If a=1 then
load * from [Link];
sql select e, f, g from tab1;
end if
If a=1 then; drop table xyz; end if;
If x>0 then
load * from [Link];
Elseif x<0 then
load * from [Link];
else
Load * from [Link];
end if 138
For Next
•L'instruction de contrôle For..Next crée une boucle avec compteur.
•Syntaxe
For counter = expr1 to expr2 [ step expr3 ]
[ instructions ]
[exit for [ ( when | unless ) condition ]
[ instructions ]
next [ counter ]

•Exemple
For a=1 to 9
load * from file$(a).csv;
next
forcounter=1 to 9 step 2
set filename=x$(counter).csv;
if rand( )<0.5 then
exit for unless counter=1
end if
load a,b from $(filename);
next
139
For Each..Next
•L'instruction de contrôle For Each.. Next crée une boucle qui s'exécute pour
chaque valeur d'une liste de valeurs séparées par des virgules.

•Syntaxe
For each var in liste
[ instructions ]
[exit for [ ( when | unless ) condition ]
[ instructions ]
Next [var]

•Exemple
For each a in 1,3,7,'xyz'
load * from file$(a).csv;
next

140
Do..loop
•L'instruction de contrôle do..loop crée une boucle qui sera exécutée jusqu'à ce
qu'une condition logique soit remplie.

•Syntaxe
do[ ( while | until ) condition ]
[ instructions ]
[exit do [ ( when | unless ) condition ]
[ instructions ]
loop[ ( while | until ) condition ]

•Exemple
// charger les fichiers [Link]..[Link]
for a=1
Do while a<10
load * from file$(a).csv;
let a=a+1;
loop
141
Switch..case..default..end switch
•L'instruction de contrôle switch permet d’exécuter un groupe d'instruction en fonction
de la valeur d'une expression.
•Syntaxe
Switch expression
{ caselistedevaleurs
[ instructions ] }
[ default
instructions ]
end switch

•Exemple
Switch$(Num)
Case 1
LOAD Chr(RecNo()+64) AS Char AUTOGENERATE 26;
Case 2
LOAD * INLINE [Status, Char No, '' ];
Default
LOAD * INLINE [Status, Char ];
End Switch
142
Exit script
•L'instruction de contrôle exit script arrête l'exécution du script.

•Syntaxe
Exit script [ ( when | unless) condition ]

•Exemple
// Chargement du calendrier
if v_bCalendrierQVD Existe and ScriptErrorCount = 0 then
Calendrier:
LOAD *
FROM [$(v_strNomCalendrierQVD)] (qvd);
else
trace "Pas de [Link] à charger.";
exit script;
end if

143
Sub..end sub et Call
•L'instruction de contrôle sub définit une sous-routine qui peut être appelée par
une instruction call.

•Syntaxe
sub name [( paramlist )]
instructions
end sub

•Exemple
// Exemple 1
Sub INCR (I,J)
I=I+1
exit sub when I < 10
J=J+1
end sub

Call INCR (X,Y)

144
When ou Unless
•Permet de déterminer si une instruction doit être exécutée.
•Alternative plus courte que l'instruction if..end if.

•Syntaxe
(When condition instruction| instructionexitunless condition)

•Exemple
exit script when A=1;
When A=1 load * from [Link];
When A=1 unless B=2 drop table Tab1; //Vrai si A=1 a moins que B=2

145
Exercice –Pays Européen

•Actions à réaliser
Créer une condition pour regrouper
les pays européens.
Utiliser la fonction Match()
Astuce : Il va falloir créer un
nouveau champ qui s’appellera
« Continent » et En fonction du code
pays, ce champ se remplira avec une
des ces deux valeurs : ‘Europe’ ou
‘Autres’

146
Stockage et formatage des données

147
Représentation des données

•Les données sont stockées sous deux formats :


Chaîne (Formatage à gauche)
Nombre (Formatage à droite)

148
Données avec Informations sur le type

149
Données sans informations sur le type

150
Formatage des dates et des heures

Astuce : Pour manipuler les heures, minutes et secondes, il faut


ramener le tout en secondes.
Exemple pour convertir 9 heures en jour :
9 heures = 9 * 60 * 60 = 32 400 secondes
1 jour = 24 * 60 * 60 = 86 400 secondes
32 400 / 86 400 = 0,375 jour

151
L’instruction DUAL
•Dual(x,y) Association forcée d'une représentation de chaîne arbitraire s à
une représentation numérique donnée x.

load dual(string,numrep) as JourSemaine inline [string,numrep


Lundi,0
Mardi,1
Mercredi,2
Jeudi,3
Vendredi,4
Samedi,5
Dimanche,6];
load Date, weekday(Date) as JourSemaine [Link];

152
Exercice –Afficher le format des dates

•Actions à réaliser
Créer un nouveau champ qui s’appellera [Date Formatée] à partir du
champ Date.
Afficher ce champ et modifier le format en ‘YYYY/MM/DD ’.
Formater le en DD et chercher pourquoi le N°de jour apparaît plusieurs
fois.

153
Jointures internes

154
Jointure entre 2 tables

Gauche Droite

155
Jointure interne

•Le préfixe Inner : Intersection


Join: Fusion entre les 2 tables
Keep: Pas de fusion entre les 2
tables.

Syntaxe :
Inner( join | keep) [ (nomdetable ) ]( instructionload
|instructionselect )

156
Jointure gauche

•Le préfixe left: Jointure gauche.


Join: Fusion entre les 2 tables
Keep: Pas de fusion entre les 2 tables.

Syntaxe :
left ( join | keep ) [(nomdetable)] ( instructionload |instructionselect )

157
Jointure droite

•Le préfixe Right: Jointure droite.


Join: Fusion entre les 2 tables
Keep: Pas de fusion entre les 2
tables.

Syntaxe :
right ( join | keep ) [(nomdetable)] ( instructionload | instructionselect )

158
Jointure externe

•Le préfixe outer : Totalité


Join: Fusion entre les 2 tables
Keep: Pas de fusion entre les 2
tables.

Syntaxe :
outer ( join | keep)[(nomdetable)] ( instructionload | instructionselect
)

159
Exercice –Jointure avec la classification

•Actions à réaliser
Compter le nombre d’enregistrements
dans chaque table.
Faire un LEFT JOIN entre EMPLOYES et
CLASSIFICATION
Compter le nombre d’enregistrements.
Afficher les valeurs dans une table (objet
table).

160
Exercice –Jointure avec les pays

•Actions à réaliser
Fusionner la table PAYS
avec les CLIENTS

161
Fonctions Inter-Enregistrements

162
Fonctions inter-enregistrements

Remarque: Peek est plus performant sur des gros volumes.


163
Fonctions Inter-enregistrement

•Previous
Permet de lire le dernier enregistrement
 previous( expression )

•Exists
Détermine si une valeur de champ donnée existe dans un champ
parmi les données déjà chargées.
exists( field [ , expr ] )

164
Exercice –Where Exists()
•Actions à réaliser
Vérifier la densité et le ratio des sous
ensembles sur la table commandes
Rajouter une clause Where Exists(DATE_ID)
Revérifier la densité et le ratio des sous
ensembles sur la table commandes.

165
Concaténation de 2 tables (Union)

•Concaténation automatique
Les noms des champs doivent être identiques
Le même nombre de champs
Remarque: L’ordre des champs n’a pas d’importance.

•Concaténation forcée
Utilisation du préfixe concatenate
Seules les champs identiques seront fusionnés.
Syntaxe : concatenate [(nomdetable) ] ( instructionload |
instructionselect )

Remarques :
Le préfixe concatenate utilise la dernière table logique chargée.

166
Éviter la concaténation

•Si deux tables ont le même ensemble de champs, elles sont


normalement automatiquement fusionnées.

•Le préfixe noconcatenate permet d’empêcher la fusion.

167
Exercice –Fusionner les Prospects /
Clients
Actions à réaliser
Ajouter le préfixe Concatenate après la
table des CLIENTS.
Charger la table des client depuis le fichier
[Link].
Renommer les colonnes pour que Qlikview
puisse les fusionner.
Afficher le résultat dans une table.

168
Présentation des onglets

169
Utilisation des onglets
•Introduction
Introduction
Règles de développement
•Paramètres
Paramètres de connexions ODBC
Déclaration de variables
•Restrictions
Restrictions d‟accès
•Traduction
Conversion dans les tables (Mapping)
Tables temporaires (Pour une utilisation plus tard)
•Faits
Chargement des tables de faits
•Pivot
Chargement du pivot
•Dimensions
Chargement des tables de dimensions
•Aide
Aide en ligne
170
Commentaires Généraux
•Information générale (1eronglet)
Créateur (A l’origine) et Date
Modifié par : Date et une description coute des modifications.
Base de données utilisées
Explication de l’application

171
Normalisation

•Utilisation de préfixes :
V Variables vAnnéeCourante
% Clés %Client_ID
_ Séparateur Entreprise & ‟_‟ & NumCompte
•Nom des champs
Ne pas utiliser des noms réservés .
 Utiliser des mots compréhensibles par tous les utilisateurs finaux.
Modifier de préférence les noms des champs dans le script.

Astuce: Utiliser «set HidePrefix =ID» pour masquer les clés.

172
Commentaires Généraux
•Nom de la Table
Nom de la table source
•Modifications
Modifié par : Date et type de modification sur la ligne

173
Commentaires techniques
•Commentaires
Notes
Explications Techniques pour les scripts complexes

•Profil de la connexion ODBC


Notification du compte qui doit être utilisé si le USER/PASSWORD sont masqués.

174
Commentaires dans le script
•Introduction / Information

•Nom de Table

•Commentaires Techniques

•Modification

•Archivage

175
Exercice -Réorganisation des onglets

•Actions à réaliser
Réorganiser les onglets par thématique.

Résultat attendu

176
Traduction et Transcodage

177
Mappage complet
Le mappage complet permet de remplacer une expression entière par une autre via
une table de correspondance.

178
Mappage partiel
Le mappage partiel permet de remplacer une partie de l’expression par un autre.

179
Exercice –Traduire des produits
• Actions à réaliser
– Créer la table de traduction Résultat attendu

– Appliquer le MapSubstring()
sur la colonne désignation

180
Multimédia

181
Info
• Permet de lier un champ à une information :
– fichier texte,
– une image (gif, png, bmp,…)
– une présentation multimédia (mp3, avi,…)
• La table créée doit contenir uniquement deux colonnes :
– la première avec le clé,
– la seconde contenant le chemin vers l’image.
• Syntaxe :
Info ( instructionload | instructionselect )
• Exemple:
– Info Load PAYS_ID, Drapeau from [Link];
– Info Select PAYS_ID, Drapeau from PAYS;

182
Bundle

• Permet d’inclure les fichiers externes dans QVW :

• Syntaxe :
bundle[info] ( instructionload | instructionselect )

• Exemples :
– Bundle Info Load PAYS_ID, Drapeau from [Link];
– Bundle Info Select PAYS_ID, Drapeau from PAYS;

183
Exercice –Ajouter les drapeaux

Résultat attendu
• Actions à réaliser
– Lier les images au champ Code
(utiliser bundle info)
– Ajouter des listes de sélections
 Case à cocher
 Etiquette de coin
 LED
– Afficher les drapeaux dans une
liste de sélection

184
Fonctionnalités Multimédias

• Lecture des entêtes de fichier :


– mp3, wma et wmv.
– EXIF (Exchangeable
Image File) des fichiers JPG.

185
Exemple : Photo and Music

186
Plusieurs Tables de faits

187
Problématique des tables de faits

• Des boucles apparaissent entre les tables de faits.


• La granularité entre les tables de faits peut etre
différente.(Objectif mensuel et lignes de commandes
au jour)
• 2 techniques sont possibles :
– La concaténation des tables de faits
– La table pivot

188
Concaténation
des tables de faits

189
Technique de la concaténation des
tables

•Fusion entre toutes les tables de


fait.

•Les colonnes communes doivent


avoir le même mon

•Avantages:
Technique simple
•Inconvénients:
Nombre limité de colonnes par
tables
Difficultés pour différencier les
tables de faits

190
Exercice –Concaténation des tables
Actions à réaliser :
•Commenter le script de la table OBJECTIF
•Recharger une nouvelle table OBJECTIF mais cette fois à partir de
l’onglet « Mois » du fichier [Link] voici le script:

OBJECTIFS:
•LOAD EMPL_ID as EmployeID,
DATE_ID ,
Objectif
FROM
[.\[Link]]
(biff, embedded labels, table is Mois$);
•Pour supprimer la boucle :
•Renommer DATE_ID en Date
•Concaténer les tables :
COMMANDES
OBJECTIFS
•Renommer la table COMMANDE en « FAIT ».

191
La table Pivot

192
Technique du PIVOT
•La technique consiste à relier
toutes les tables (Dimension et
Fait) par une table centrale.

•La sélection d’une date


passera par le Pivot et sera
répercutée sur l’ensemble du
modèle.

•Avantages:
Nombre de tables de faits
illimités
Visualisation simple des
tables de faits
•Inconvénients:
Technique plus compliqué que
la fusion
193
Exemple d’une table Pivot

Un filtre sur un mois va automatiquement sélectionner les


commandes, les factures et les objectifs du mois
194
Création d’une table Pivot

• Pour créer une table pivot avec plusieurs tables de fait :

 Ajouter une clé primaire dans chaque table de fait.(Utiliser la fonction


RowNo() pour créer une clé séquentielle unique)

 Interdire les jointures entre les tables et les dimensions.(En


renommant les champs ou en utilisant la fonction QUALIFY)

 Créer une table pivot en concaténant les clés étrangères.(Les


dimensions seront automatiquement rattachées au PIVOT)

Remarque: QlikView crée des tables Synthétiques dès qu’une clé n’est pas
unique.

195
Exemple de Table Pivot

196
Exercice –Créer une table PIVOT
•Actions à réaliser
Mettre un clé unique sur
chaque tables de fait.

Renommer les clés


étrangères des tables de fait.

Créer un Pivot en
rechargeant les clés primaires
et étrangères de chaque table
de faits.

Afficher le contenu du pivot


dans un objet Table

197
Silos QVD

198
Les besoins
Commandes

Factures

Prospects

Clients

Contacts
Campagnes
Produits

Appels

199
Nombre d’accès à l’information

200
Silos QVD

201
Avantages des silos QVD
•Avantages :
Augmente la vitesse de chargement
Diminue la charge sur la base de données
Partager des informations entre les fichiers QVW
Chargement incrémental

•Le fichier QVD est particulièrement adapté :


Pour partager les mêmes dimensions
Pour stocker de gros volume de données
Pour faire des rechargements en cours de journée
Pour développer à plusieurs

202
Syntaxe du fichier QVD

Syntaxe :
store [ *listedechamps from] table into fichier [ spéc-format ];
* sélectionne tous les champs.
champ::= nom de champ [ as alias ]
spéc-format ::= ( ( txt | qvd ) )

•Exemple :
Store CALENDRIER into [Link];
Store * from CLIENTS into [Link] (qvd);
Store CLIENTS into [Link] (txt);

203
Exercice –Générer un QVD

Action à réaliser :
•Rajouter une ligne pour générer le QVD des produits;

204
La sécurité d’accès

205
Sécurité d’accès

•Niveaux de sécurité :
Sécurité sur l’ouverture du fichier
Sécurité sur les modifications
Sécurité sur les données (Filtre sur les données et les onglets)

•Identification de l’utilisateur :
Mot de passe
Authentification windows
N°de licence
Sécurité sur le domaine

206
Restriction d’accès

207
Sécurité –Identification par le mot de
passe
•Le nom et le mot de passe sont demandés à l’ouverture du document
QlikView.

208
Exercice – Sécurité d’accès par mot de
passe
Actions à réaliser : Résultat attendu
•Renommer le fichier d’exercice
•Utiliser l’assistant « Accès Utilisateur » pour créer
le fichier ci-dessous :

Recharger les données.


•Sauvegarder et fermer QlikView
•Réouvrir le document.

209
Sécurité –Identification par la session
•Dans l’exemple, une réduction est réalisée sur la colonne COMMERCIAL_ID

Remarque : Cette fonctionnalité ne


marche pas en WorkGroups.

210
Exercice –Sécurité d’accès par session
Actions à réaliser : Résultat attendu
•Renommer le fichier d’exercice
•Utiliser l’assistant « Accès Utilisateur »
pour créer le fichier ci-dessous :
Section Access;
LOAD * INLINE [
ACCESS, USERID, PASSWORD, REDUCTION
ADMIN, FC, FC, *
USER, FM, FM, FR
];
Section Application;
•Recharger les données.
•Cocher «Réduction de données initiales sur la base de l’accès section» sur
l’onglet Ouverture des propriétés du document.
•Sauvegarder et fermer l’application
•Rouvrir l’application

211
Sécurité –Identification par le N°de
série
•Le numéro de série de QlikView est utilisé à l’ouverture du document.

Dans cet exemple, l’administration


est uniquement autorisé sur 2
postes.

212
Sécurité –Identification sur un
domaine
•Le document QlikView peut être ouvert uniquement sur un domaine
nommé.

Les documents ‘ne pourront pas ’ être ouverts en dehors de l’entreprise

213
Journal & Logs

214
Journal
•Il est possible de créer une trace lors de chaque rechargement de
données. (Paramètres Propriétés du document  Onglet
Général  Cocher Générer un journal)

•Le fichier trace est stocké dans le même dossier que le QVW avec
une extension .LOG

•Pour appliquer un journal à tous les nouveaux documents.


(Paramètres  Préférences Utilisateur  Onglet conception 
Cocher Toujours utiliser les journaux pour les nouveaux
documents)

•Utiliser la fonction Trace pour rajouter des commentaires dans le


journal. ( Trace === ANALYSE DES VENTES === ; )
215
Archivage des logs
•Une optionpermet de générer plusieurs versions de logs.
•Le nom du fichier LOG comporte la date et l’heure.

216
Exercice –Fichiers des logs

Actions à réaliser : Résultat attendu


•Générer plusieurs fichiers de logs

217
Script de rechargement

218
Rechargement en ligne de commande

219
Incrémental

220
Différents chargements
Suivant la source …

1)Ajout seulement. (Logfiles)

2)Insert only. (pas d’Update ou Delete)

3)Insert et Update. (pas de Delete)

4)Insert, Update et Delete.

221
1) Ajout seulement

•La source doit être un


fichier (Fichier journal)

•QV garde une trace du


nombre d’enregistrement
déjà lus et charge
uniquement les
enregistrements ajoutés à la
fin du fichier.

222
1) Ajout seulement

Buffer (Incremental)
Load* From [Link]
(ansi, txt, delimiter is '\t', embedded labels);

Fin!

223
2) Insert seulement

•Peut être utilisé pour toutes


bases de données
•Charge seulement les
nouveaux enregistrements
•Nécessite le champ
ModificationDate

224
2) Insert seulement

QV_Table:
SQL SELECT PrimaryKey, X, Y FROM
DB_TABLE
WHERE ModificationTime >= ‘$(LastExecTime)’;

225
2) Insert seulement

QV_Table:
SQL SELECT PrimaryKey, X, Y FROM DB_TABLE
WHERE ModificationTime >= ‘$(LastExecTime)’;

Concatenate
LOAD PrimaryKey, X, Y FROM [Link];

226
2) Insert seulement

QV_Table:
SQL SELECT PrimaryKey, X, Y FROM DB_TABLE
WHERE ModificationTime >= ‘$(LastExecTime)’;

Concatenate
LOAD PrimaryKey, X, Y FROM [Link];

STORE QV_Table INTO [Link];

227
2) Insert seulement

QV_Table:
SQL SELECT PrimaryKey, X, Y FROM DB_TABLE
WHERE ModificationTime >= ‘$(LastExecTime)’
AND ModificationTime < ‘$(BeginningThisExecTime)’;

Concatenate
LOAD PrimaryKey, X, Y FROM [Link];

STORE QV_Table INTO [Link];

Terminé!

228
3) Insert & Update

•Peut être utilisé avec toutes


bases de données
•Charge les nouveaux
enregistrements et modifie les
anciens
•Nécessite les champs
ModificationDate et PrimaryKey
248

229
3) Insert & Update
QV_Table:
SQL SELECT PrimaryKey, X, Y FROM
DB_TABLE
WHERE ModificationTime >= ‘$(LastExecTime)’;

Concatenate
LOAD PrimaryKey, X, Y FROM [Link]
WHERE NOT Exists(PrimaryKey);

STORE QV_Table INTO [Link];

230
4) Insert, Update et Delete

•Peut être utilisé pour toutes les


bases de données
•Charge les nouveaux
enregistrements et modifie les
anciens
•Supprime des enregistrements
•Nécessite les champs
ModificationDate et PrimaryKey

231
4) Insert, Update et Delete
QV_Table:
SQL SELECT PrimaryKey, X, Y FROMDB_TABLE
WHERE ModificationTime >= ‘$(LastExecTime)’;

Concatenate
LOAD PrimaryKey, X, Y FROM [Link]
WHERE NOT EXISTS(PrimaryKey);

Inner Join
SQL SELECT Primary Key FROM DB_TABLE;

STORE QV_Table INTO [Link]; OK, mais lent…

232
4) Insert, Update et Delete
ListOfDeletedEntries:
SQL SELECT PrimaryKey AS Deleted FROM DB_TABLE
WHERE DeletionFlag = 1
and ModificationTime >= ‘$(LastExecTime)’;

QV_Table:
SQL SELECT Primary Key, X, Y FROM
DB_TABLEWHEREModificationTime >= ‘$(LastExecTime)’;

Concatenate
LOAD Primary Key, X, Y FROM [Link]
WHERE NOT Exists(PrimaryKey) AND NOT Exists(Deleted,PrimaryKey);
OK, Mais nécessite
Drop Table ListOfDeletedEntries; un flag de
STORE QV_Table INTO [Link]; destruction
233
LastExecutionTime & Error handling

Let ThisExecTime = Now();

{ Load sequence }

If ScriptErrorCount = 0 then
Let LastExecTime = ThisExecTime;
EndIf

234
Script final
Let ThisExecTime = Now();

QV_Table:
SQL SELECT PrimaryKey, X, Y FROM DB_TABLE
WHERE ModificationTime >= ‘$(LastExecTime)’
AND ModificationTime < ‘$(ThisExecTime)’;

Concatenate LOAD PrimaryKey, X, Y FROM [Link]


WHERE NOT EXISTS (PrimaryKey);

Inner Join SQL SELECT Primary Key FROM DB_TABLE;


If ScriptErrorCount = 0 then
STORE QV_Table INTO [Link];
Let LastExecTime = ThisExecTime;
EndIf
235

Vous aimerez peut-être aussi