Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Join us in Bucharest on Sept 18th for Qlik's AI Reality Tour! Register Now
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Using Group in the load script like aggr


Hi there,

i have a database of objects with certain reoccuring ID's which have fields attached to them.

I want to load all the entries where Field1 = 'X' and the total number of field2 entries with the value ='D' is bigger than 5.

I manged to get a list of IDs which match that criteria but i have troubles getting them into my Load Script since i cant use the aggr function there.

In the LoadScript i used a if to flag all my matches

Load

* ,
if (Field2= 'D',1,0) as DTYPE,

from .......

And then i reload it using:

F15_select:

Load *
Resident F15_merged
Where Field1 = 'X'

and (here would probably come something like the expression below);

In Qlik view i created a ListBox with the expression

=

if(aggr(sum(RTYPE), ID)>5,ID)

Which creates a list of IDs that match my criteria.

How can i translate that into the Load Script so only the List of IDs above is loaded?

I figured i have to use group by, but i havent figured out how.

Can somebody help me?

Thanks

Julian

1 Solution

Accepted Solutions
anbu1984
Master III
Master III

Use Left join to join filtered table with the other table

sum_rtype:

Load * Where SumRTYPE > 5;

Load

     ID,

     Sum(RTYPE) As SumRTYPE

Resident xxx

Group By ID;

Left Join(sum_rtype)

Load * From Table;

View solution in original post

8 Replies
chrismarlow
Specialist II
Specialist II

Is that Field1='X' and Sum(RTYPE) by ID>5 or Field1='X' or Sum(RTYPE) by ID>5.

I would try to build this up by identifying rows so I you can debug, before tidying up.

So for the Sum(RTYPE) I would create a table;

sum_rtype:

Load

     ID,

     Sum(RTYPE)

Resident xxx

Group By ID;

Then take a look at that, see if it makes sense, if it does left join back to the original table (either directly or by a new load then dropping) and then it depends on your answer to my question above ... I think.

anbu1984
Master III
Master III

sum_rtype:

Load * Where SumRTYPE > 5;

Load

     ID,

     Sum(RTYPE) As SumRTYPE

Resident xxx

Group By ID;

Not applicable
Author

Its an AND condition that is needed.

I tried loading the new table as you suggested, but i don't really understand how i would be able to join the result into my existing table.

anbu: Why would i use the SumRTYPE before i create it below? How can i use the load statement without a from or resident?

Edit:

so I tried this:

table1:

Load * ,

if (DATEITYP = 'R',1,0) as RTYPE

From xxx.qvd (qvd);

sum_rtype:

Load

*,
Sum(RTYPE) as SumRTYPE

Resident table1

Group By ID;

DROP table table1;


table1_select:

Load *

Resident sum_rtype

Where Field1 = 'x' and sumRTYPE>5;

DROP Table sum_rtype;

But i get an error "invalid expression" on the sum_rtype load. Anyone knows why?

Not applicable
Author

I tried your statement, it does work though i do not know why.

Now i have two tables in which one is filtered but consists of only two fields and the other isnt but consists of all fields, how do i merge them in such a way that i get a table that is filtered and consists all the fields?

anbu1984
Master III
Master III

Use Left join to join filtered table with the other table

sum_rtype:

Load * Where SumRTYPE > 5;

Load

     ID,

     Sum(RTYPE) As SumRTYPE

Resident xxx

Group By ID;

Left Join(sum_rtype)

Load * From Table;

Not applicable
Author

That does work, but it shows me all ID's where all RTYPES of any field1 are >5.

I just want the sum of RTYPES where field = 'x' > 5.

I tried

if

(DATEITYP = 'R' and field1= 'x',1,0) as RTYPE

and that seems to be working, but the sum is totally weird.

When i look at the table i get i.e. 5 entries with only one entry showing a 1 at the field RTYPE.

A sum(RTYPE) keeps returning 8 though, I don't understand why.

To be clear, i commented everyhting but the first load with the if condition to debug.

anbu1984
Master III
Master III

sum_rtype:

Load * Where SumRTYPE > 5;

Load

     ID,

     Sum(RTYPE) As SumRTYPE

Resident xxx

Where DATEITYP = 'R' and field1= 'x'

Group By ID;

Not applicable
Author

That would probably work, too.

Including it in the if flag above worked also

Thank you!