QV Developer
QV Developer
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
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)
7
Difference Fondamentale
Différence entre OLAP et Vectoriel
Cube OLAP Base Vectorielle
TEMPS
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
– 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
16
La liste
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
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
31
Calculs dans QlikView
32
Table de Dimension
33
Dimension Calendrier
34
Exemple pour la dimension
CALENDRIER
35
Conseils 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
43
1 –Choix du périmètre
44
2 -Choix du grain
Remarque:
Nous vous conseillons de prendre le niveau de détail le plus fin
possible.
45
3 -Choix des dimensions
• Les attributs sont choisis en fonction des regroupements que l’on souhaite faire.
(Ex : Ventes parArticle, Ventes parFamille, Ventes parAnnée…)
46
4 -Identification des mesures
• L’identification des mesures revient à lister tous les calculs que l’on
souhaite faire dans 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)
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
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
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
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
CONNECT TO 'Nwind;
DBQ=C:\Exercices\Samples\[Link]' (UserID is sa, Password is admin);
70
Syntaxe SQL
71
L’instruction «SELECT»
• N'importe quelle commande select valide peut être employée.
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
75
Autogenerate
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
• 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
90
Table Résidente
91
Table résidente
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
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
• 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
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
110
Add load
111
Replace load
112
Exemple de rechargement partiel
• Exemple :
PERSONNEL:
Load Nom, Prénom FROM [Link] ;
Add Load Nom, Prénom FROM [Link] where
not exists (Nom);
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
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
122
Exemple QUALIFY / UNQUALIFY
123
Les variables
124
Les variables
•Variable : Entité nommée contenant une seule valeur.
125
SET
•Exemples :
SET Fichier =‘[Link]’
SET vNbrAnnee = 3;
126
LET
•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
•Syntaxe : $( include=nomdefichier)
•Exemple :
$(include=C:\Documents\[Link]);
130
Insertion de fichiers dans le script
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.
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 )
•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
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
148
Données avec Informations sur le type
149
Données sans informations sur le type
150
Formatage des dates et des heures
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.
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
Syntaxe :
Inner( join | keep) [ (nomdetable ) ]( instructionload
|instructionselect )
156
Jointure gauche
Syntaxe :
left ( join | keep ) [(nomdetable)] ( instructionload |instructionselect )
157
Jointure droite
Syntaxe :
right ( join | keep ) [(nomdetable)] ( instructionload | instructionselect )
158
Jointure externe
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
•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
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.
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
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
• 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
185
Exemple : Photo and Music
186
Plusieurs Tables de faits
187
Problématique des tables de faits
188
Concaténation
des tables de faits
189
Technique de la concaténation des
tables
•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.
•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
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.
Créer un Pivot en
rechargeant les clés primaires
et étrangères de chaque table
de faits.
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
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 :
209
Sécurité –Identification par la session
•Dans l’exemple, une réduction est réalisée sur la colonne COMMERCIAL_ID
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.
212
Sécurité –Identification sur un
domaine
•Le document QlikView peut être ouvert uniquement sur un domaine
nommé.
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
216
Exercice –Fichiers des logs
217
Script de rechargement
218
Rechargement en ligne de commande
219
Incrémental
220
Différents chargements
Suivant la source …
221
1) Ajout seulement
222
1) Ajout seulement
Buffer (Incremental)
Load* From [Link]
(ansi, txt, delimiter is '\t', embedded labels);
Fin!
223
2) Insert seulement
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];
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];
Terminé!
228
3) Insert & Update
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);
230
4) Insert, Update et Delete
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;
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
{ 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)’;