8 June 2022

SET and LET

Share this message

Every Friday at Bitmetric we’re posting a new Qlik certification practice question to our LinkedIn company page. Last Friday we asked the following Qlik Data Architect certification practice question:

The correct answer is A: vLoadStart contains the date and time that the script started, vLoadEnd contains the value “Now()”

Even without having edited a single letter in the Qlik script there are already SET statements to be found. Always included you will find the Main script page with a row of default settings all starting with SET.

Now concerning last weeks question and answer we can be pretty clear:

SET variablename = string

LET variablename = expression

By using SET Qlik will store the variable as the string provided, using LET will evaluate the string as an expression. Or to put it more simply:

SET vString = 1+1; will return VString = 1+1
LET vString = 1+1; will return vString = 2

 Returning to the question of last week:

LET vLoadStart = Now(); will return vLoadStart = the result of the expression now(), which is the current time of the system clock.
SET vLoadEnd = Now(); will return the string ‘Now()’

One of the main things to consider while using this is the end result and how to use it in the front end. Lets have a look at the following example: We would like to have a text object within the app in which the users can see when the load started and when it ended using the following expression:

‘Start Reload: ‘ & vLoadStart & CHR(10)
‘End Reload: ‘ & vLoadEnd

The end result will look as expected:

However, if we change the variable vLoadEnd to a Dollar Sign expansion like so:

‘Start Reload: ‘ & vLoadStart & CHR(10) &
‘End Reload: ‘ & $(vLoadEnd)

While it looks better, it is definitely not correct! It is displaying the time at which Now() is evaluated (which is at the moment of calculating the Text Object) and not the time when LET has evaluated the expression within the script.  

The same goes for if we use the Dollar Sign expansion on vLoadStart. That will make $(vLoadStart) evaluate 08-06-2022 17:06:52, which returns a Null value, because it will start calculating 8 minus 6 minus 2022 and then run into trouble with the space and the colon, since they are not interpreted as correct symbols for calculations by Qlik.

So it is worth remembering that using LET can already perform expressions in the script and using the Dollar Sign expansion might not give the exact results as expected at first hand.

 That’s it for this week. See you next Friday? And remember:

  • If you have suggestions for questions, we love to hear from you via WhatsApp or at info@bitmetric.nl
  • If you’re enjoying these questions and want to work on stuff like this every day (but a bit more challenging), we’re always on the lookout for new colleagues. Check our job openings here.

How can we help?

Feel free to contact us if you have any comments or questions.