Ce petit tutoriel va vous montrer comment récupérer des informations de la base interne de Qlik Sense et les réutiliser dans un script de chargement.

Ces informations vont par exemple, permettre la connexion automatique vers une base de données de recette ou de production selon le stream dans lequel se trouve l’application.

Création de la connexion vers la base interne (Repository de Qlik Sense)

Connexion de type PostgreSQL :

Chargement des données en fonction du paramétrage de Qlik Sense

Récupération des informations du Repository de Qlik Sense

À partir de cette connexion nous pouvons désormais récupérer toutes les informations du repository telles que les Tags, Streams, Customs properties, etc.

Dans notre exemple nous avons préalablement positionné des tags d’environnement sur les Streams (nous aurions également pu le faire à l’aide d’une custom property « @environnement ») :

Chargement des données en fonction du paramétrage de Qlik Sense

L’objectif est de récupérer, pour l’application en cours de chargement, son stream et le tag associé. Cela se fait par le script suivant :

Chargement des données en fonction du paramétrage de Qlik Sense

/*****************************************************
* SCRIPT DE DEFINITION DE L'ENVIRONNEMENT
* --------------------------------------------------
****************************************************/

// On récupère l'application courante
LET appID = DocumentName();

// Connexion à la base QS Repository
LIB CONNECT TO 'QS Repository';

[TMP_ENV]:
// On récupère le Tag du stream de l'application
SQL SELECT
a."ID" as App_ID,
// cpv."Value" as "Env",
tag."Name" as Tag
FROM "public"."Apps" a
FULL JOIN "public"."Streams" s ON (s."ID" = a."Stream_ID")
// FULL JOIN "public"."CustomPropertyValues" cpv ON (s."ID" = cpv."Stream_ID")
// FULL JOIN "public"."CustomPropertyDefinitions" cpd ON (cpv."Definition_ID" = cpd."ID")
FULL JOIN "public"."StreamTags" st ON (st."Stream_ID" = a."Stream_ID")
FULL JOIN "public"."Tags" tag ON (tag."ID" = st."Tag_ID")
WHERE a."ID" = '$(appID)'
AND (tag."Name" IS NULL or tag."Name" like '%Env %')
// AND (
// cpd."Name" = 'Environnement'
// OR s."ID" IS NULL
// )
// LIMIT 1
;

// On assigne le résultat à une variable
LET Env = if(Peek('tag', 0)='Env REC','R',if(Peek('tag', 0)='Env PROD','P',if(Peek('tag', 0)='Env DEV','D','??')));

DROP TABLE TMP_ENV;

 

// Affichage du résultat dans la log
TRACE Environnement recupere : [$(Env)] ;

Ici nous avons souhaité récupérer uniquement les tags d’environnement pour pouvoir valoriser une variable nommée « Env » avec les valeurs « P », « R » ou « D ».

La variable prendra également la valeur « ?? » si l’application n’est pas publiée dans un stream car nous souhaitions laisser le développeur définir lui-même son environnement de travail lorsque l’application n’est pas publiée.

Création d'une connexion de type dossier

Ce script pouvant être utilisé dans toutes les applications (cf ligne 7), nous avons créé une connexion de type « dossier » et inséré ce code dans un fichier nommé « Environnement.qvs »

Appel du script dans Qlik Sense

Nous pouvons maintenant appeler ce script à l’aide de la fonction « must_include » ou « include » dans nos applications. Le script appelé récupérant automatiquement l’ID de l’application en cours, nous pouvons savoir à quel stream elle appartient et quel est le tag de ce stream.

Le passage d’une application d’un stream de recette à un stream de production ne nécessite donc plus une modification préalable des connexions.

Chargement des données en fonction du paramétrage de Qlik Sense

//On récupère l'environnement du stream dans lequel se trouve cette application dans la variable Env
$(must_include=lib://QS-Technique/Environnement.qvs);
// SET Env = 'D' ; //Permet de forcer l'environnement pour tests/dev

// variable d'environnement P pour production ou D pour Développement
IF '$(Env)'='P' then  
SET SuffixeLibOracle='';
    SET SuffixeLibFolder='PROD';
ELSEIF '$(Env)'='D' then
SET SuffixeLibOracle='_Dev';
    SET SuffixeLibFolder='DEV';
ELSEIF '$(Env)'='R' then
SET SuffixeLibOracle='_Rec';
SET SuffixeLibFolder='REC';
ENDIF;

trace ----------------------------------;
trace --- ENVIRONNEMENT UTILISE: $(SuffixeLibFolder) ---;
trace ----------------------------------;

LIB CONNECT TO 'INF_PAB$(SuffixeLibOracle)';

Vous souhaitez aller plus loin et vous former à Qlik Sense ? Nos consultants experts certifiés Qlik sont aussi formateurs. Découvrez notre formation Qlik Sense.

Vous recherchez des consultants certifiés Qlik ? Besoin d'être accompagné dans vos projets Qlik ? Next Decision est là ! Contactez-nous !