Skip to main content
Announcements
See why Qlik is a Leader in the 2024 Gartner® Magic Quadrant™ for Analytics & BI Platforms. Download Now
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Utilisation des variables dans le script

Bonjour,

j'ai un document dans lequel je créé des variables dans le script. Une fois ces variables crées, je voudrais les utiliser pour créer un champ.

Mon code ressemble à ça:

LET CH_COT=Peek('CH_COT_XLS');    // je récupère une valeur d'un autre champ. c'est un chiffre (9% par exemple)

table_cot_prest:

LOAD

     MT_PRESTATION,

     MT_COTIS_HT,

   

FROM

(qvd);

je n'ai pas de problème pour utiliser CH_COT dans mes tableaux.

mais je voudrais donc créer dans la table "table_cot_prest" un champ  égal à MT_COTIS_HT  * CH_COT.  (la multiplication d'un champ par une variable donc)

Or je ne sais pas comment écrire CH_COT pour faire le calcul.

Merci d'avance pour vos réponses.

Cordialement,

Philippe

1 Solution

Accepted Solutions
rlp
Creator
Creator

    Pour utliser la variable, il vous faut utliser la syntaxe '$(nom_de_la_variable)' avec éventuellement un dièse pour spécifier une interprétation numérique (pas indispensable mais clarifie le code) soit '$(#nom_de_la_variable)' .

    Les simples quotes ( ' ) sont indispensables pour spécifier que la chaîne de caractères doit être interprétée comme une expression (en gros, une valeur de champ ) et non comme une instruction ( p.ex. LOAD : ceci dit, en exécutant le contenu d'une variable, on peut écrire du code qui génère du code, ce qui peut se révéler très puissant)

Remarques importantes : Votre code a deux soucis:

    1°) Vous pouvez déclarer une variable, soit avec LET (qui évalue l'expression tout de suite: en gros, elle réalise le calcul lors de la déclaration de la variable), soit avec SET ( qui n'évalue pas à la déclaration mais à l'appel et permet donc de créer une variable réellement dynamique). Dans votre cas, puisque vous voulez utiliser la variable lors d'un LOAD, vous voulez donc une évaluation à l'appel et non à la déclaration: il vous faut donc utliser SET et non LET.

   2°) L'instruction peek() fait, certes, référence à un chargement précédent mais ceci seulement dans le script, c'est à dire qu'elle référence une valeur chargée dans un LOAD. Si vous voulez faire référence à la ligne précédente d'un tableau, il vous faut vous tourner vers above().

Remarques complémentaires :

  3°) En fait, la seconde erreur était masquée par la première. Par l'instruction LET, vous récupériez une valeur précédemment chargée, et ce de manière figée, de sorte que l'appel à cette variable renvoyait toujours le même résultat: votre variable était en fait constante.

   4°) A toutes fins utiles, vous pouvez créer des variables paramétrées par d'autres valeurs ( des fonctions ) avec la syntaxe '$(variable_paramétrée(premier_argument,second_argument))' (A noter qu'il ne faut pas inclure d'espaces entre la fonction et les arguments, même si c'est, en général, une bonne pratique pour rendre le code plus lisible) . Lors de la déclaration d'une telle variable, vous devez faire référence au premier argument par $1, au second par $2, etc.. dans la limite de 9 paramètres.

  5°) vous pouvez paramétrer le nom d'une variable par une autre variable, comme ceci:

     LET indicateur_$(type) = expression ;

ce qui peut s'avérer utile pour simuler des tableaux ou matrices à moindres frais.

Cordialement.

View solution in original post

2 Replies
rlp
Creator
Creator

    Pour utliser la variable, il vous faut utliser la syntaxe '$(nom_de_la_variable)' avec éventuellement un dièse pour spécifier une interprétation numérique (pas indispensable mais clarifie le code) soit '$(#nom_de_la_variable)' .

    Les simples quotes ( ' ) sont indispensables pour spécifier que la chaîne de caractères doit être interprétée comme une expression (en gros, une valeur de champ ) et non comme une instruction ( p.ex. LOAD : ceci dit, en exécutant le contenu d'une variable, on peut écrire du code qui génère du code, ce qui peut se révéler très puissant)

Remarques importantes : Votre code a deux soucis:

    1°) Vous pouvez déclarer une variable, soit avec LET (qui évalue l'expression tout de suite: en gros, elle réalise le calcul lors de la déclaration de la variable), soit avec SET ( qui n'évalue pas à la déclaration mais à l'appel et permet donc de créer une variable réellement dynamique). Dans votre cas, puisque vous voulez utiliser la variable lors d'un LOAD, vous voulez donc une évaluation à l'appel et non à la déclaration: il vous faut donc utliser SET et non LET.

   2°) L'instruction peek() fait, certes, référence à un chargement précédent mais ceci seulement dans le script, c'est à dire qu'elle référence une valeur chargée dans un LOAD. Si vous voulez faire référence à la ligne précédente d'un tableau, il vous faut vous tourner vers above().

Remarques complémentaires :

  3°) En fait, la seconde erreur était masquée par la première. Par l'instruction LET, vous récupériez une valeur précédemment chargée, et ce de manière figée, de sorte que l'appel à cette variable renvoyait toujours le même résultat: votre variable était en fait constante.

   4°) A toutes fins utiles, vous pouvez créer des variables paramétrées par d'autres valeurs ( des fonctions ) avec la syntaxe '$(variable_paramétrée(premier_argument,second_argument))' (A noter qu'il ne faut pas inclure d'espaces entre la fonction et les arguments, même si c'est, en général, une bonne pratique pour rendre le code plus lisible) . Lors de la déclaration d'une telle variable, vous devez faire référence au premier argument par $1, au second par $2, etc.. dans la limite de 9 paramètres.

  5°) vous pouvez paramétrer le nom d'une variable par une autre variable, comme ceci:

     LET indicateur_$(type) = expression ;

ce qui peut s'avérer utile pour simuler des tableaux ou matrices à moindres frais.

Cordialement.

Not applicable
Author

Bonjour,

Merci beaucoup pour la grande précision de votre réponse.

En fait, l'utilisation de LET  et PEEK correspondent  à l'utilisation que je voulais faire. Je vais chercher ces valeurs dans une table que je charge, puis ensuite je retire cette table de mon chargement.

Merci

Cordialement