Skip to main content

CAGR Dax Measure




CAGR stands for Compound Annual Growth Rate.  It describes the rate at which an investment would have grown over several years if it had grown at the same rate every year on a compounding, rather than simple, basis. 

The CAGR metric is calculated using the following formula:

If we were to fit this entire formula into a single measure it may get messy and confusing for other users, so let’s step it out.

We will need to create several measures to calculate the individual pieces the CAGR formula.  Of course, this is not the only way to calculate CAGR in Power Pivot, but this is the way we’ve decided to go about it.  So, let’s break it down, we will need the following measures to calculate CAGR:

  1. A measure to retrieve the First Year in the data set
  2. A measure to retrieve the Last Year in the data set
  3. A measure to calculate the Number of Years between the First and Last Years in the data set
  4. A measure to aggregate the total sales in the data set
  5. A measure to calculate the Sales in the First Year of the data set
  6. A measure to calculate the Sales in the Last Year of the data set
  7. Finally, a measure to calculate CAGR. 

The [First Year] measure is calculated as follows: 

=MIN('Calendar'[Year])

The [Last Year] measure is very similar:

=MAX('Calendar'[Year])

The [Number of Years] measure is simply calculated as the difference between the two years.  Unlike calculating dates, you need to resist the urge of adding one to this calculation as there is only one year’s growth between the first year and the next year, etc.

=[Last Year]-[First Year]

The sales aggregation measure is given by [Sales]:

=SUM('Sales Table'[Total Sales])

To calculate the [Sales in First Year] measure:

=CALCULATE(

[Sales],

                        FILTER(

                                    'Calendar','Calendar'[Year]=[First Year]

                        )

 

            )

There is therefore no surprise (hopefully!) that [Sales in Last Year] measure is calculated as follows:

=CALCULATE(

            [Sales],

                        FILTER(

                                    'Calendar','Calendar'[Year]=[Last Year]

                        )

 

            )

The [CAGR] measure is thus given by:

=([Sales in Last Year]/[Sales in First Year])^(1/[Number of Years])-1

This all seems to make sense.  That should be it: let’s create the PivotTable.  However, trying to plot our CAGR measure on a PivotTable we get the following message:

Something is not right!  Let’s plot the individual measures onto a PivotTable to see if we can figure it out:

It appears that our [First Year] and [Last Year] measures aren’t working as we intended, hence causing our [Number of Years] measure to return with ‘0’ every year.  This causes a division by zero error in our [CAGR] measure.

The first and last year measures return with the row’s first and last year.  This is because these measures are subject to the PivotTable row filters.  We are going to have to tweak the measures for them to consider the entire range of data, despite these row filters.

In this case we will have to use the ALL function.  You can read more about the ALL function here.

We have to modify the first and last year measures.  The [First Year] measure should be revised as follows:

=CALCULATE(

            MIN(

                        'Calendar'[Year]),

                        ALL(

                                    'Calendar'

                        )

            )

Similarly, the [Last Year] measure should be adapted too:

=CALCULATE(

            MAX(

                        'Calendar'[Year]),

                        ALL(

                                    'Calendar'

                        )

            )

Our [CAGR] measure now calculates on the PivotTable: 

Great, we finally have a working CAGR measure! But the measure only calculates the CAGR for the last year, what if we want the progressive CAGR for each year.


The reason why our CAGR formula is not calculating dynamically is because we are using the [Last Year] measure, which is currently set to retrieve the last year in our data set.  To avoid confusion, we are going to create a measure that retrieves the current year called [Current Year]:

=MAX('Calendar'[Year])

Now we modify our [CAGR] measure to use the [Current Year] measure:

=([Sales in Current Year]/[Sales in First Year])^(1/[Number of Years])-1

However, attempting to put our CAGR measure in the Pivot Table will result in this error: 

This is because the number of years for the 2018 period is zero, and we can’t divide by zero.  In this scenario, we should use the DIVIDE function to create our [CAGR Dynamic] new-and-improved measure.  You can read more about the DIVIDE function here:

=DIVIDE(

            [Sales in Current Year],[Sales in First Year]

                        )

                                    ^DIVIDE(

                                                1,[Number of Years]

 

                                                )-1

The DIVIDE function manages our division by zero problem by returning with BLANK() when the denominator is zero.  Therefore, this gives us the dynamic CAGR calculation we require:







<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2735813199391136"
     crossorigin="anonymous"></script>

Comments

Popular posts from this blog

Formatting Tips

1. Use tables to format data quickly Excel Tables  are an incredibly powerful way to handle a bunch of related data. Just select any cell with in the data and press CTRL+T and then Enter. And bingo, your data looks slick in no time. This has to be the best and easiest formatting tip. 2. Change colors in a snap So you have made a spreadsheet model or dashboard. And you want to change colors to something fresh. Just go to Page Layout ribbon and choose a color scheme from Colors box on top left. Microsoft has defined some great color schemes. These are well contrasted and look great on your screen. You can also define your own color schemes (to match corporate style). What more, you can even define schemes for fonts or combine both and create a new theme. 3. Use cell styles Consistency is an important aspect of formatting. By using cell styles, you can ensure that all similar information in your workbook is formatted in the same way. For example, you can color all input cells in orang...

3D Map in Excel

3D Maps ( Power Map) is available in the Office 365 versions of Excel 2013 and all versions of Excel 2016. Using 3D Maps, you can build a pivot table on a map. You can fly through your data and animate the data over time. 3D Maps lets you see five dimensions: latitude, longitude, color, height, and time. Using it is a fascinating way to visualize large data sets. 3D Maps can work with simple one-sheet data sets or with multiple tables added to the Data Model. Select the data. On the Insert tab, choose 3D Map. (The icon is located to the right of the Charts group.) If you have Excel 2013 you might have to download Power Map Preview from Microsoft to use the feature. Next, you need to choose which fields are your geography fields. This could be Country, State, County, Zip Code, or even individual street addresses. You are given a list of the fields in your data set and drop zones named Height, Category, and Time. Hover over any point on the map to get details such as last sale date and a...

Improve your Excel Productivity with these Shortcuts and formulas

I have given below 45 tips and tricks to improve your productivity while working in Excel. Useful Keyboard Shortcuts 1.  To format any selected object , press ctrl+1 2.  To insert current date , press ctrl+; 3.  To insert current time , press ctrl+shift+; 4.  To repeat last action , press F4 5.  To edit a cell comment , press shift + F2 6.  To autosum selected cells , press alt + = 7.  To see the suggest drop-down in a cell , press alt + down arrow 8.  To enter multiple lines in a cell , press alt+enter 9.  To insert a new sheet , press shift + F11 10.  To edit active cell , press F2 (places cursor in the end) 11.  To hide current row , press ctrl+9 12.  To hide current column , press ctrl+0 13.  To unhide rows in selected range , press ctrl+shift+9 14.  To unhide columns in selected range , press ctrl+shift+0 15.  To recalculate formulas , press F9 16.  To select data in current region , press ctrl+shift+8 ...