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

Announcements
Qlik Open Lakehouse is Now Generally Available! Discover the key highlights and partner resources here.
cancel
Showing results for 
Search instead for 
Did you mean: 
lb654
Contributor
Contributor

Pivot Table - Get Change Values Compared to Previous Interval

Hi,

I'd like some help with Pivot Tables in Qlik Sense. I'm trying to build a (aggregated) monthly revenue table for different departments where each month column also displays the revenue changes compared to the previous month. Currently, I have the following:

 

qlik1.pngEach department is represented by a separate row, the months include the monthly revenue, and the absolute changes compared to the previous month (Delta, Δ column) .

 

The above solution works with the Before()-method to check the cell value of the previous month - e.g., the Delta column is defined as Revenue - Before(Revenue). Now while this works fine when the full table is displayed, as soon as a (non-sequential) selection of months is made, the before()-method simply returns the value of the cell to the left. This is technically expected, but of course, the delta values are incorrect from a business perspective:

 

qlik2.pngThe 2009-Nov Delta column shows the changes from 2007-Jan to 2009-Nov, while I want it to still show the changes from 2009-Oct to 2009-Nov.

So what I'd like to get is a replacement for the Before()-method, something like

Delta = Revenue - Sum( {<department={this.department}, month={AddMonths(this.month, -1)}>} totalRevenue)

I tried several attempts as well as searching for different keywords, but didn't get it to work. I appreciate your help!

Labels (3)
2 Replies
Spivey
Partner - Contributor III
Partner - Contributor III

I think this will get you most of the way there - Use this as the Delta measure:

=sum(
    aggr({<TransMonth=>} 
        Sum(Expression1) - Above(Sum(Expression1))
      , ( Department , Text, Descending)
      , ( TransMonth , Numeric, Descending)
    )
)

 ... where TransMonth is the month field and Sum(Expression1) is the revenue metric. Note that you can't use a field-on-the-fly as the month field -- create the month field in the load script rather than using something like Month([dateField]) in the frontend.

lorevanachter
Partner - Contributor II
Partner - Contributor II

Late on this issue, here's what I created for a similar case, using the reply of @Spivey  I was able to make it work.
For my case, I needed the current value to be outside the aggr for it to work.

Hope this helps you or future developers.

=
Sum(Expression1) - 

sum(
    aggr({<TransMonth=>} 
        Above(Sum(Expression1))
      , ( Department , Text, Descending)
      , ( TransMonth , Numeric, Descending)
    )
)