Skip to main content
Announcements
See what Drew Clarke has to say about the Qlik Talend Cloud launch! READ THE BLOG
cancel
Showing results for 
Search instead for 
Did you mean: 
HeyAbbott
Contributor II
Contributor II

KPI Counting Aggregated Deltas

Hey All,

This is my first time posting -- please let me know if I'm doing anything wrong.

I have a tricky bit of aggregation that I just can’t figure out. I have a dataset with values and dates that I append to each month in a qvd. The data looks like this:

ID

Amount

Report_Date

A

100

1/1/2020

B

200

1/1/2020

C

300

1/1/2020

D

400

1/1/2020

A

200

2/1/2020

B

200

2/1/2020

D

200

2/1/2020

E

500

2/1/2020

 

I am aggregating sums based on MIN and MAX dates for my chart. I get the Amount Changed by subtracting the Beginning Balance from the Ending Balance. Like this:

ID

Beginning Balance

Amount Changed

Ending Balance

A

100

100

200

B

200

0

200

C

300

-300

0

D

400

-200

200

E

0

500

500

 

The formulas I’m using look like this:

Beginning Balance: Sum({<Report_Date = {'$(=date(Min(Report_Date)))'}>}[Amount])

Ending Balance: Sum({<Report_Date = {'$(=date(Max(Report_Date)))'}>}[Amount])

Amount Changed: Sum({<Report_Date = {'$(=date(Max(Report_Date)))'}>}[Amount]) - Sum({<Report_Date = {'$(=date(Min(Report_Date)))'}>}[Amount])

These formulas are working fine. Each positive change (>0) represents a new expense, and each negative change (<0) represents a refunded expense. I want KPIs counting how many IDs have a positive change amount and a negative change amount, but I can’t figure out how to write the formula that says ‘Count all of the IDs where Amount Changed is >0.’ I end up with a formula with nested aggregations and sets and Qlik doesn’t like it.

Any idea of how I can write a KPI that counts the positive and negative deltas between the Beginning and Ending Balances?

1 Solution

Accepted Solutions
GaryGiles
Specialist
Specialist

Try this:

count( distinct if(aggr(Sum({<Report_Date = {'$(=date(Max(Report_Date)))'}>}[Amount]) - Sum({<Report_Date = {'$(=date(Min(Report_Date)))'}>}[Amount]), ID)>0,ID))

View solution in original post

2 Replies
GaryGiles
Specialist
Specialist

Try this:

count( distinct if(aggr(Sum({<Report_Date = {'$(=date(Max(Report_Date)))'}>}[Amount]) - Sum({<Report_Date = {'$(=date(Min(Report_Date)))'}>}[Amount]), ID)>0,ID))

HeyAbbott
Contributor II
Contributor II
Author

That did the trick -- pure genius! Thank you!