2017-09-19 6 views
2

Y a-t-il une raison pour que cette syntaxe ne fonctionne pas dans le script de chargement Qlikview?Évaluation des variables dans le script de chargement

Let v_myNumber = year(today()); 
Let v_myString = '2017-08'; 

If left($(v_myString),4) = text($(v_myNumber)) Then 
    'do something 
Else 
    'do something else 
End If; 

J'ai essayé les deux sens où je convertir la chaîne variable nombre et ÉVALUER contre la variable numéro directement et de cette façon. Ils n'évalueront pas à l'équivalence quand ils devraient.

+1

Vous n'avez pas besoin faire l'expansion du signe dollar avec vos variables 'let'. Essayez: 'left (v_myString, 4) = text (v_myNumber) Puis ...' – bdiamante

+0

Ok ... Je me demandais à ce sujet. Pouvez-vous expliquer rapidement quand l'expansion du signe dollar est nécessaire et quand pas? Je vous remercie! – Scott

Répondre

3

La fonction gauche attend une chaîne car elle obtient quelque chose d'autre en tant que paramètre. Comme vous le faites actuellement, la fonction s'appellera Left (2017-08, 4) qui n'est pas manipulée par QlikView.

Si vous utilisez Left ('$ (v_myString)', 4), il évaluera comme Left ('2017-08', 4) comme travail comme prévu. Il suffit d'ajouter des guillemets autour de la variable, cela devrait fonctionner.

Bien que QlikView les appelle des variables, elles doivent vraiment être considérées comme des «choses à remplacer (parfois évaluées) à l'exécution», ce qui est légèrement différent d'un comportement «variable» standard.

+0

Cela me fait du sens. Fondamentalement, cela tenait au fait qu'il ne l'évaluait pas comme une chaîne - sauf si je supprime l'expansion du dollar ou mettre des guillemets autour de lui. Merci – Scott

3

expansion signe dollar est un grand sujet, mais en bref:

  • si vous définissez une variable - pas besoin de $().
  • si vous utilisez une variable - vous pouvez utiliser $(). dépend de son contexte.
  • si vous utilisez une variable qui doit être évaluée - vous devez utiliser $(). par exemple dans un script de chargement: let var1 = 'if(a=1,1,2)' - ici plus tard sur le script, vous voudrez probablement utiliser cette variable comme $(var1) il sera évalué à la volée ...

J'espère que son un peu plus clair maintenant . variable peut être utilisé de plusieurs façons même peut prendre des paramètres!

par exemple:

var2 = $1*$2 

et vous pouvez utiliser comme ceci: $(var2(2,3)) qui donnera 6

Pour une exploration plus poussée de ce fait, je vous suggère de lire this

+0

Merci pour l'explication. Je n'avais pas réalisé que vous pouviez créer des variables comme celles-ci qui agissent essentiellement comme des fonctions. génial. – Scott