Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
malradi88
Creator II
Creator II

Exceptions in a set expression

Dear Qlik Community,

I am working on a dataset that consists of three columns:

1)name

2) question

3) answer

The answers are all either true and false. I am trying to create a master measure that measures % correct answers. The difficulty in this is that the correct answer differs for each question...some are 'false and others 'true', so I cannot simply instruct Qlik to do for example:

Count ({$<answer = {'true'})>}[answer])/ Count ([answer])  and treat the percentage produced  as 'correct' because not all correct answers should be answered 'true'.

I would need to instruct Qlik to count true as correct for some questions and false as correct for other questions. There are 5 questions under the question field. Based on the three fields provided above (name, question, answer) how could I make an expression that takes this into account.

For example, lets say I wanted to amend the above expression and within the first segment (the set expression) instruct qlik to count :

answers for question 1 that are false

answers for Question 2 that are true


answers for Question 3 that are false

Answers for Question 4 that are true

Answers for Question 5 that ae true


because those aforementioned answers are correct. Would it be some really long if statement within the set expression? If so would you be able to provide a rough example? Are there other ways of doing this? Perhaps through the dataload editor? Some sort of inline table?

Apologies I am new to this! Thank you for your support.

Best,

Mohammed

1 Solution

Accepted Solutions
antoniotiman
Master III
Master III

Do you need brackets

(Count+Count+.......)/Count(Answer) ?

View solution in original post

9 Replies
tomasz_tru
Specialist
Specialist

Is it possible to create flag for correct answers in the data model?

malradi88
Creator II
Creator II
Author

Hi Tomasz,

Thank you for your reply. I have never created a flag before for correct answers. What function would that entail?

Best,

MOhammed

sonkumamon
Creator
Creator

Hi, to create a flag which flags the right answer to each question, add to the LOAD script:

Table:

LOAD

     If((Question = 1 AND Answer = 'false')  

          OR (Question = 2 AND Answer = 'true')

               OR (Question = 3 AND Answer = 'false')  

                    OR (Question = 4 AND Answer = 'true')  

                         OR (Question = 5 AND Answer = 'true'), 1, 0) AS CurrectAnswerFlag

FROM [*.qvd]


Now you can write the following expression which divides the right answers (Flag = 1) by the total aswers:


Count ({$< CurrectAnswerFlag = {'1'})>}[answer])/ Count ([answer])

malradi88
Creator II
Creator II
Author

Hi Uri,

Thank you for that.

I have tried to recreate the above in my load script (within the existing table and then as a new table) but on luck with both. I believe I am getting the syntax wrong.   Is there anyway other way you would write it? Thank you.

Within Existing Table:

[Original Table]:

LOAD

[Name],

[Question],

if (([Question] = 'Question1' AND [Answer]= '1')

OR([Question] = 'Question2' AND [Answer] = '2')

OR ([Question] = 'Question3' AND [Answer] = '1') as correctanswer

[Answer]

FROM [lib://Desktop/testcurrentflag.xlsx]

(ooxml, embedded labels, table is Sheet1);

As a new Table:


[Original Table]:

LOAD

[Name],

[Question],

[Answer]

FROM [lib://Desktop/testcurrentflag.xlsx]

(ooxml, embedded labels, table is Sheet1);

[AnswerFlagtable]:

Load *,

if (([Question] = 'Question1' AND [Answer]= '1')

OR([Question] = 'Question2' AND [Answer] = '2')

OR ([Question] = 'Question3' AND [Answer] = '1') as correctanswer

Resident [Original Table];

Drop table [Original Table];

antoniotiman
Master III
Master III

Hi,

what about

(Count({<Question={1},answer={'false'}>} answer)+Count({<Question={2},answer={'true'}>} answer)+.......)

/Count(ansver)

Regards,

Antonio

malradi88
Creator II
Creator II
Author

Hi Antonio,

Thanks for that. I tried your expression in a master measure:

Count({<Question= {'Question 1'}, Answer={'1'}>}Answer) +

Count({<Question= {'Question 2'}, Answer={'2'}>}Answer) +

Count({<Question= {'Question 3'}, Answer={'1'}>}Answer)

/ Count  (Answer)

but got a wrong answer. It is strange because separately (without the division) the respective expressions work i.e. all the additions prior to the division sum to 5 which is correct and the 'Count(Answer)' alone sums to 9 which is correct. However when I divide them I get the answer 3.22 when 5/9 should equal .55

Anything that could be changed to make the result correct? Thank you for your support.

antoniotiman
Master III
Master III

Do you need brackets

(Count+Count+.......)/Count(Answer) ?

malradi88
Creator II
Creator II
Author

Thank you Antonio! it worked when I added brackets around the entire + part:

(Count({<Question= {'Question 1'}, Answer={'1'}>}Answer) +

Count({<Question= {'Question 2'}, Answer={'2'}>}Answer) +

Count({<Question= {'Question 3'}, Answer={'1'}>}Answer))

/ Count  (Answer)

antoniotiman
Master III
Master III

I'm glad to be able to help You.

Regards,

Antonio