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

Announcements
Join us to spark ideas for how to put the latest capabilities into action. Register here!
cancel
Showing results for 
Search instead for 
Did you mean: 
Naresh1
Contributor III
Contributor III

aging of buckets

Hi all,

iam new to Qliksense, i want  to aging of buckets range is 0-15, 16-30, 31-60,61-120,121-180, >180 like this using over_due_days column, can anyone tell me , all these are 0-15, 16-30, 31-60,61-120,121-180, >180 come like fields 

 

8 Replies
Vegar
MVP
MVP

I guess you could use intervalmatch. Take a look at this example and adjust it to your needs. 

for i = 230 to 1 step -40
TransactionData:
LOAD 
	floor(rand()*$(i)) as overdue_days
AutoGenerate 230-$(i)
;
next 
;

Intervals:
IntervalMatch(overdue_days) 
LOAD * inline [
Start, End 
0,15 
16,30 
31,60
61,120
121,180
181,
];
Left join
LOAD 
	overdue_days,
	dual(Start & '-' & End, Start) as AgingBucket
Resident Intervals;
Naresh1
Contributor III
Contributor III
Author

Thanks, working but i want to dynamically show like this 0-15 one field, 16-30 one field like this

Kushal_Chawda

can you please elaborate? what do you mean by dynamically show field? Do you want to create a separate field for each bucket?

Naresh1
Contributor III
Contributor III
Author

yes, i want to create separate field for each bucket range is 0-15, 16- 30, 31-60, 61-120, 121-180, >180 like this

Vegar
MVP
MVP

You could use Generic Load.

image.png

I've attached an example. 

 

Kushal_Chawda

another approach

 

let vBucketField = 'overdue_days'; // Define field name in your data on which you want to generate bucket. Make sure field name should be same

Intervals:
Load Concat(chr(10)&BucketCondition,',') as BucketFinal;
Load *,
     'if('&Start&if(Bucket like '*-*',' and ')&End&','&'$(vBucketField)) as ['&Bucket&']' as BucketCondition;
Load *,
     if(Bucket like '*-*','$(vBucketField)>='&SubField(Bucket,'-',1),'$(vBucketField)'&Bucket) as Start,
     if(Bucket like '*-*','$(vBucketField)<='&SubField(Bucket,'-',2),'') as End;
LOAD * inline [
Number,Bucket
1,0-15 
2,16-30 
3,31-60
4,61-120
5,121-180
6,>180 ];

Let vBucketCondition =Peek('BucketFinal',0,'Intervals');

 

 

Now you can use this vBucketCondition variable into your actual load statement  same like a field

 

 

Data:
LOAD *,
     $(vBucketCondition)
FROM YourQVD

 

 

Naresh1
Contributor III
Contributor III
Author

i want this type of bucketing, i want fields like this using over_due_days fieldi want this type of bucketing, i want fields like this using over_due_days field

Kushal_Chawda

You can dynamically create the Buckets in you data with below approach. It will be easy for you to just update the Buckets in inline table.

 

 

let vBucketField = 'over_due_days'; // Define actual field name in your data on which you want to generate Bucket.eg. over_due_days

let vBucketColumnName = '[Over Due Bucket]'; // Provide the name you want to give for generated Bucket field.

Intervals:
Load Concat(chr(10)&BucketCondition,',')& Repeat(')',Count(Number))& ' as '&'$(vBucketColumnName)' as BucketFinal;
Load *,
     'if('&Start&if(Bucket like '*-*',' and ')&End&','&'dual('&chr(39)&Bucket&chr(39)&','&Number&')' as BucketCondition;
Load *,
     if(Bucket like '*-*','$(vBucketField)>='&SubField(Bucket,'-',1),'$(vBucketField)'&Bucket) as Start,
     if(Bucket like '*-*','$(vBucketField)<='&SubField(Bucket,'-',2),'') as End;
LOAD * inline [
Number,Bucket
1,0-15 
2,16-30 
3,31-60
4,61-120
5,121-180
6,>180 ];

Let vBucketCondition =Peek('BucketFinal',0,'Intervals');

 

 

 

Now call the Variable in your actual data load which will create a Bucket field for you

 

 

Data: 
Load *,
     $(vBucketCondition)
FROM YourData

 

 

 

Next step, Create a pivot table with Dimension Over_Due_Bucket and Expression Sum(Over_due_amount)

In pivot table, move Over_Due_Bucket in Column so that You will get horizontal view of Bucket values