Qlik Community

Groupe des Utilisateurs Francophones

Vous êtes francophone? Ce groupe est pour vous. Venez découvrir comment démarrer avec Qlik Sense et QlikView, poser vos questions et partager vos tutos et astuces avec les membres de notre communauté.

Highlighted
Not applicable

Chargement dans une variable du contenu d une requete

Bonjour

je souhaite charger dans une variable le résultat d'une requête

cette requête est conditionnée par deux autres variables chargées par l'utilisateur grâce à l'extension de saisie des variables

j'aimerais vérifier dans cette table la présence du couple ( annee / secteur) et si cette occurence existe afficher un graphique , sinon rien

bien sûr cela doit être dynamique et je ne peux pas passer par un rechargement des données

je pensais écrire quelque chose de ce style ( dans mon exemple il s'agit de annee / secteur mais cela peut être n'importe quoi d'autre )

TEMPS:

load * inline [

annee,secteur,donnee

2016, NORD,1000

2016, EST,5000

2016, SUD,300

2015, NORD,3000

2015, EST,2000

.....

];

LET v_existe_dans_table = ... ?

LET v_donnee_issue_de_table=  ?    ( comment dois-je écrire le let ( avec des peek  , des pick , des lookup .. ) afin d'avoir la donnée d'un e part et la certitude de l'existence du couple annee/secteur dans la table )

et pour mes graphiques je compte utiliser un set analysis de ce style

Sum({$<Type_Fait={'Facture'}, secteur={'$(v_SECTEUR)'}, annee{'$(v_annee)'}=>}[CA])

merci par avance

Tags (1)
5 Replies
sfatoux72
Valued Contributor

Re: Chargement dans une variable du contenu d une requete

Bonjour,

Essaye comme ceci :

TEMPS:
load * inline [
annee,secteur,donnee
2016, NORD,1000
2016, EST,5000
2016, SUD,300
2015, NORD,3000
2015, EST,2000
]
;

SET v_existe_dans_table = count({$<secteur={'£(v_SECTEUR)'}, annee={'£(v_annee)'}>}donnee);
SET v_donnee_issue_de_table = sum({$<secteur={'£(v_SECTEUR)'}, annee={'£(v_annee)'}>}donnee);
LET v_existe_dans_table = replace(v_existe_dans_table, '£', '$');
LET v_donnee_issue_de_table = replace(v_donnee_issue_de_table, '£', '$'); 

---------------------------------------------------------------------------------------------------------------------------

Expression dans la condition d'affichage du graphique :    =$(v_existe_dans_table)

Expression pour récupérer la valeur  :     =$(v_donnee_issue_de_table)

Not applicable

Re: Chargement dans une variable du contenu d une requete

Bonjour Sebastien ,

merci cela fonctionne et m'a permis de régler mon soucis

dans la suite de mon application j'ai un problème avec la manipulation du set analysis que j'ai crée grace à ton explication, je souhaite faire la somme du CA selon la valeur de quelques champs / variables

j'ai écrit ceci  :

je souhaite présenter la somme du CA pour un représentant donné ( chargé dans la variable v_id_user ) et cela fonctionne bien

Sum(

{

$<Type_Fait={'Facture'},Representant_Piece={'$(v_id_user)'}>

}

CA)

mais je désire permettre la consultation soit à l'utilisateur connecté ( v_id_user ) soit à un utilisateur nommé informatique ET la valeur d'une variable qui doit être positive

j'ai écrit

Sum(

{

$<Type_Fait={'Facture'},Representant_Piece={'$(v_id_user)'}>+

$<Type_Fait={'Facture'},'Informatique'={'$(v_id_user)'},{'$(v_variable)'}>0>

}

CA)

cela ne fonctionne pas , j'ai un doute sur la syntaxe et notamment le test positif

as tu une astuce de plus pour moi ?

merci par avance

sfatoux72
Valued Contributor

Re: Chargement dans une variable du contenu d une requete

Bonjour,

C'est normale que ton set analysis ne fonctionne pas. Entre les <...> tu modifies ta sélection définie par $, tu dois spécifier un champ existant dans ton model et définir sa nouvelle ensemble de sélection.

Dans ton cas, 'Informatique' et {'$(v_variable)'} ne sont pas des champs, et tu ne peu pas utiliser >0 (par exemple pour sélectionner les CA>0   ==> CA = {">0"})

Je ne comprend pas ce que tu veux faire.

Un set analysis ne sert pas à permettre la consultation en fonction de condition, mais à modifier la sélection de l'utilisateur ou à en forcer une.

Si tu veux établir de la sécurité basée sur l'utilisateur connecté et limiter les données qu'il peux voir à celles aux quelles il est associé, il faut utiliser le Section Access. ATTENTION, faire une copie de ton application avant de l'utiliser, car si mal définit tu pourrais ne plus pouvoir accéder à ton application.

Concernant ta variable qui doit être plus grande que zéro, si c'est une contrainte sur cette variable tu peux aller dans les propriétés du document (CTRL+ALT+D) dans l'onglet Variables

Community_1200075.png

Not applicable

Re: Chargement dans une variable du contenu d une requete

Bonjour

merci pour les éclaircissements, Il ne s'agit pas de sécurité active , selon l'utilisateur connecté , mais bien d'une vision "particulière" pour un utilisateur donné , donc bien de l'ensemble de données à consulter

disons que mon utilisateur sur une variable choisie par lui même peut voir uniquement son secteur , ou l'ensemble des secteurs ( ce que j'ai symbolisé par "informatique" )

j'aurais voulu dire la somme du chiffre pour le représentant = ( utilisateur courant ) ( ma variable user )

ou selon son choix une vision plus étendue ( tous les représentants )

donc  representant={'$(v_id_user)'}  d'un coté  si une autre variable ( appelons la mode par exemple = 1 )

OU     representant= tous si j'ai changé une autre variable ( mode = tous )

pour moi cela ressemble bien à un set analysis , que j'avais du mal à définir

sfatoux72
Valued Contributor

Re: Chargement dans une variable du contenu d une requete

Ok,

alors tu peux utiliser :

if(mode = '1',

    Sum({$<Type_Fait={'Facture'},Representant_Piece={'$(v_id_user)'}> CA) ,

    if(mode = 'Tous',

        Sum({$<Type_Fait={'Facture'},Representant_Piece={"*"}> CA) ,

    )

)