Qlik Community

QlikView App Development

Discussion Board for collaboration related to QlikView App Development.

Announcements
Make your voice heard! Participate in the 2020 Wisdom of Crowds® Survey. BEGIN SURVEY
Not applicable

How to get an X number from the user and load a rendom X rows from data?

Hi Everyone ,

Lets say I have a table with 3 columns : Id, name , country - with 100 different rows.

I need to get from the user (using an Input box object) some number  , lets say he will put the value: 20

I want that after the user will insert 20 , the table on the GUI will show only 20 random rows from the table .

I don't want him to see the first 20 rows, I want him to see 20 random rows from the 100 rows.

I know how to use the Input box object to take the number from the user, but I don't know how to show the random rows.

can someone help me ?

thanks,

Moni

10 Replies
Highlighted
Employee
Employee

Re: How to get an X number from the user and load a rendom X rows from data?

It would be much easier to show the first, largest or smallest N rows by using dimension limits.

Do you actually need to show 20 random rows?

This needs some, not so simple scripting.

ALK

Highlighted
Not applicable

Re: How to get an X number from the user and load a rendom X rows from data?

Hi Agis,

yes I need to show 20 random rows from the table.

I thought of adding the table :Recno()

and then use the rand() function and somehow find 20 rows

I just don't know how to do it ...

thanks

Moni

Highlighted
datanibbler
Esteemed Contributor

Re: How to get an X number from the user and load a rendom X rows from data?

Hi,

you'd need to use the rand() function (which will return a random number inbetween 0 and 1) in a loop from 1 to 20 (to stick with the example) and use those to create a string (with semicolons so you can use it in a MATCH() function) with 20 random numbers - if you have 100 rows, you'll have to multiply the output of rand() with 100 so you get 20 random line_numbers.

In the script, you load the file and in the lOAD you just add a >> rowNo() as line_ID <<

=> Then you have to use some set_analysis to display the 20 rows with those exact line_IDs.

Does your user have the client installed and a Named_CAL so they can reload the script from the GUI? That would make it a bit easier.

HTH

Highlighted
Not applicable

Re: How to get an X number from the user and load a rendom X rows from data?

Hi DataNibbler,

yes my user have a client on his computer.

I will try to do what you said and see if I understand it.

thanks,

Moni

Highlighted
datanibbler
Esteemed Contributor

Re: How to get an X number from the user and load a rendom X rows from data?

Hi,

the Client alone will not do for what I mean - reloading the script from the GUI is possible only with a Named_CAL, not with a Document_CAL.

Try to build that loop (should be possible with autogenerate) first and come back, we can see from there.

Best regards,

DataNibbler

Highlighted
MVP
MVP

Re: How to get an X number from the user and load a rendom X rows from data?

Maybe like this?

Highlighted
Not applicable

Re: How to get an X number from the user and load a rendom X rows from data?

wow thanks Swuehl,

seems like it is a good example

Highlighted
MVP
MVP

Re: How to get an X number from the user and load a rendom X rows from data?

Using RAND() function will not check for collisions in value generation, so it can happen that you'll get duplicate IDs selected (more likely with a lower number of table rows and higher number of X), i.e. the resulting table may be some lines smaller than expected. 

Highlighted
Not applicable

Re: How to get an X number from the user and load a rendom X rows from data?

hI Swuehl,

you are right I can see now that I get less lines then I expected, how can I handle that ?

I got to a point that to every row have its own ID (with the recno() as LineNr  ),

how can I make sure that there will not be collisions in value generation?

thanks a lot

Moni