
Re: Qlik's issue with basic calculations
Piet Hein van der Stigchel Oct 24, 2017 8:32 AM (in response to Grzegorz Smajdor)This is as intended, should you want the outcome to be 0.25 then use $(=a)/$(=b)

Re: Qlik's issue with basic calculations
Grzegorz Smajdor Oct 24, 2017 9:20 AM (in response to Piet Hein van der Stigchel )
Re: Qlik's issue with basic calculations
Piet Hein van der Stigchel Oct 24, 2017 10:38 AM (in response to Grzegorz Smajdor)My bad
Either change the variable definition to include the = sign
=1+3
instead of
1+3
or use
$(=$(b))
In your expression

Re: Qlik's issue with basic calculations
Grzegorz Smajdor Oct 25, 2017 3:52 AM (in response to Piet Hein van der Stigchel )Thanks  Finally, $(=$(b)) is working
So, instead of 3 characters a/b, I have to use 17 characters: $(=$(a))/$(=$(b))
Good that the syntax is so clear We need to add ONLY 8 x brackets, 4 x dollar signs and 2 x equals signs
Nice improvement Qlik
This is an example of incosistency.
$(a) returns 1, $(b) returns 4, $(a)/$(b) is wrong and returns 4
So you have to use $(=$(b)).
But $(=$(b)) doesn't work while you have definition with any field like b=[Field]+3
...
no comments
To be honest  this is the simplest example of using two variables.
If I have to use 17 characters to divide two variables (with 8 brackets!) what would happen if have to use 5 variables?
Please take a look at this simple calculation:
$(=$(a))/$(=$(b))*($(=$(b1))*$(=$(b2))$(=$(c)))
Fortunately, Qlik helps us with syntax highlighting
Nope!
it doesn't help of course, there is still no good syntax highlighting
If this is intended... God help us




Re: Qlik's issue with basic calculations
Mohammed Mukram Oct 24, 2017 8:43 AM (in response to Grzegorz Smajdor)Hi,
The Order of Operations:
"Parentheses, Exponents, Multiplication and Division, and Addition and Subtraction"
The Expression should be like = $(a)/($(b))
because you saved a and b values are in a string.
a 1
b 1+3
the calculation will be
=1/1+3
first, it will divide 1/1 then it will do addition 3.
While creating variable b you can use = symbol it will calculate the value ( =1+3 ) (4)

Re: Qlik's issue with basic calculations
Grzegorz Smajdor Oct 24, 2017 10:17 AM (in response to Mohammed Mukram)1. It's not about the order of operations.
It's about the process of calculation in Qlik Sense.
2. If you have
x=2+3
and you have to multiply 2*x
what will you do?
2*(2+3) or 2*2+3
Of course the first answer is correct.
That's the logic of using variables/unknowns
The problem is that Qlik is using the second (wrong) way.
3.Using the equals sign in the definition of b variable is not a good choice.
Maybe in this example it doesn't change too much.
But  if the definition of "b" variable is more complex, the equals sign may have impact on the results of the "b" value.
4. Of course, I can put everything into brackets, but I am not looking for "workaround".
This should works correctly as in other softwares, scripting/programming languages etc.

Re: Qlik's issue with basic calculations
Jonathan Vitale Nov 2, 2017 8:56 AM (in response to Grzegorz Smajdor)I disagree that this is wrong.
When you do a dollar sign expansion you are substituting text exactly as it is written. So if I have
a = 2+3
b = 2 * $(a)
I SHOULD get 2 * 2 + 3 according to the rules of dollar sign expansion. This may not be what I intended (I might want 10 as my answer, and this will give me 7), but it is the consistent way that dollar sign expansions work. If you want 2+3 to be treated as a group, then use parentheses (2+3).

Re: Qlik's issue with basic calculations
Grzegorz Smajdor Nov 3, 2017 6:22 AM (in response to Jonathan Vitale)I understand the operation of $() expansion.
I said it wrong beacause it's illogical and unintuitive.
If you define:
a=1
b=1+3
The results of a/b will be:
in C# 0,25
in VBA 0,25
in JS 0,25
in Maths 0,25
and so on..
in Qlik it's 4, cause it doesn't calculate varaibles before using.
The way of using variables in Qlik is opposite to standards and logic.
And finnally it's ridiculous because to write correctly this simple expression:
a/(b+c/d)
you have to use 37 characters
$(=$(a))/($(=$(b))+$(=$(c))/$(=$(d)))
and the expression is unreadable

Re: Qlik's issue with basic calculations
Jonathan Vitale Nov 3, 2017 9:19 AM (in response to Grzegorz Smajdor)I see what you're saying, I get it, but I I think that it does follow the logic of dollar sign expansion  which does not do any computation  it just replaces variables in a literal manner.
By the way, one thing that has been overlooked in this discussion is "set" vs. "let":
If you do the following
let a = 1;
let b = 1+3;
let c = a/(a+b);
You will get the expected value for 'c', 0.20.
Try it.

Re: Qlik's issue with basic calculations
Grzegorz Smajdor Nov 3, 2017 9:56 AM (in response to Jonathan Vitale)I see, but it's not related to data load editor. So the "let" and "set" keywords don't resolve the problem.
It's a little tricky and unintuitive.
Who wants to use variables as replacements of text formulas?
If you use e.g.
margin=0.1*PriceDiscount
you want to keep results of the expression, not expression itself.
Who is interested in keeping text string "0.1 * Price  Discout" instead of exact number?
For me  more usefull (if we are talking about variables) is result, not the text of formula.
So the $(var) should return value, and more complex syntax like $(=$(var)) should return "text formula".





Re: Qlik's issue with basic calculations
Nacho Moreno Nov 2, 2017 12:03 PM (in response to Mohammed Mukram)I think it is correct.
1/1 + 3 = 1 + 3 = 4


Re: Qlik's issue with basic calculations
Lucke Hallbergson Nov 3, 2017 7:58 AM (in response to Grzegorz Smajdor)Look at "let" vs "set" in help.
Let: Calculates the expression assigned to it and sets the expression result to the variable.
Set: Assigns the value(or expression which is after the equal sign) as it is without compute.
Regards
Lucke

Re: Qlik's issue with basic calculations
Grzegorz Smajdor Nov 3, 2017 9:12 AM (in response to Lucke Hallbergson )It not related to "let" or "set" keyword. It's not about "data load variables".
Please read the post before answer.
