Share via


PowerPivot: Grouping By Dates (Months, Quarters, Years, etc.) in PivotTables

Note: Here's a more current topic about working with Dates in PowerPivot.

For more information, read:
The PowerPivot for Excel 2010 overview.
or
The PowerPivot for Excel 2013 overview.

When you create a PivotTable that is based on Excel data, you can group the data in the PivotTable. For example, the source data for a PivotTable might contain a column that stores the date of the sale, but you can also see the data grouped by quarters or months, rather than days.

Note: You can use grouping for other types of data, but I will focus on dates here.

Original article (before wiki edits) was written by Michael Blythe, Microsoft SQL Server Analysis Services Content Publishing Manager.


The following screenshots show the Grouping dialog box and the effect of grouping by months.

You can see that the table in the Field List has only a Sales Date column, but the PivotTable is now sorted by month – Excel interprets the dates and provides this ability to group by different time periods. This Excel feature is not supported for PivotTables that are based on PowerPivot data, but you can achieve the same effect by adding columns to your source table. If your source table already has columns that represent the grouping that you need, then skip to the end of this article to see a screenshot of a PivotTable that shows PowerPivot data grouped by months.

Here’s the data that was used for the Excel PivotTables in the screenshots above:

Sales ID Sales Date Store Name Product Name Sales Amount
182 11/11/2007 Contoso Lancashire Store WWI Laptop15 M0150 Black $5,032.80
235 9/26/2007 Contoso West Yorkshire Store Contoso Home Theater System 5.1 Channel M1530 Black $3,471.30
394 5/31/2008 Contoso Lancashire Store Contoso USB Optical Mouse E200 White $155.00
431 11/13/2007 Contoso Baildon Store Proseware Fax Machine E100 White $252.80
488 8/24/2009 Contoso Cambridge Store Proseware Ink Jet Instant PDF Sheet-Fed Scanner M300 Grey $1,888.00
599 9/10/2008 Contoso Cambridge Store Proseware Color Ink jet Fax,  Copier, Phone M250 White $1,844.40
654 7/6/2009 Contoso London Store Contoso Home Theater System 2.1 Channel M1230 White $3,600.00
683 8/14/2007 Contoso Leeds Store Adventure Works CRT19 E10 White $248.40
786 1/12/2009 Contoso Edinburgh Store Fabrikam Laptop17 M7000 Black $5,896.80
795 6/10/2007 Contoso Cheshire Store Proseware Scan Jet Digital Flat Bed Scanner M300 White $1,210.00
854 11/15/2007 Contoso Cheshire Store Proseware High-Speed Laser M2000 White $4,765.20
918 8/1/2009 Contoso Leeds Store Adventure Works Laptop12 M1201 Red $6,854.81
970 10/1/2009 Contoso Cheshire Store Contoso Home Theater System 4.1 Channel M1400 Black $3,026.60
1084 11/20/2009 Contoso Knotty Ash Store Proseware CRT19 E201 White $1,076.40
1187 2/28/2007 Contoso London Store Contoso Ultraportable Neoprene Sleeve E30 Yellow $93.60
1379 9/13/2008 Contoso Edinburgh Store Adventure Works Laptop15 M1501 Red $6,081.30
1457 2/26/2007 Contoso Manchester Store Proseware Ink Jet Fax Machine E100 Black $462.54
1494 1/31/2008 Contoso Baildon Store WWI Screen 100in M1609 Black $1,444.00
1761 2/1/2007 Contoso Liverpool Store Adventure Works Desktop PC1.80 ED182 White $17,926.41
1817 12/15/2007 Contoso York Store Litware Home Theater System 2.1 Channel E212 Black $959.68

This is a small table, so you could just manually add columns for whatever time periods you want (such as a Month column) and fill them out with data for each row. But a lot of times this is not practical, so I will show you how to group by using calculated columns in the PowerPivot window. These calculated columns use Data Analysis Expressions (DAX), which is similar to the Excel function language. For more information, see Getting Started with DAX and Create a Calculated Column in the PowerPivot Help on TechNet Library.

To start: copy the table above, paste it into the PowerPivot window, and name it Sales. For information about pasting data into PowerPivot, see Copy and Paste Data in the PowerPivot Help.

Now that you have the data in PowerPivot, add a calculated column with the following DAX formula, then right-click the column, and rename it MonthNumber:

=MONTH(Sales[Sales Date])

Like in Excel, this function returns the month number (such as 2) not the name (such as February). If you only want to group by months and the month number is sufficient, you can stop here. If you want to expand on this a little more, you can add a lookup table that allows you to pull different values into the Sales table:

MonthNumber MonthShortName MonthFullName Quarter Semester
1 Jan January Q1 H1
2 Feb February Q1 H1
3 Mar March Q1 H1
4 Apr April Q2 H1
5 May May Q2 H1
6 Jun June Q2 H1
7 Jul July Q3 H2
8 Aug August Q3 H2
9 Sep September Q3 H2
10 Oct October Q4 H2
11 Nov November Q4 H2
12 Dec December Q4 H2

Copy the table above, paste it into the PowerPivot window, and name it TimePeriods. Now add a relationship between the two tables, using the Sales[MonthNumber] and TimePeriods[MonthNumber] columns. For information about creating relationships, see Create a Relationships Between Two Tables in the PowerPivot Help.

The time period's table illustrates a way that you can handle grouping. You can also build a more general purpose date/time table, such as the one described here on the PowerPivot-Info Web site.

Now that the tables are related to each other, you can easily use data from the time period's table in the Sales table. Add a calculated column with the following formula and rename the column Month:

=RELATED(TimePeriods[MonthShortName])

You can see how the RELATED function pulls in the short month name by following the relationship that you created between the two tables. Months will sort alphabetically in the PivotTable, so if you use this formula as-is, Aug will end up first. To avoid this, update the formula as follows, which adds the date number with a leading zero so that it sorts correctly:

= "(" & IF(Sales[MonthNumber] < 10,"0","") & Sales[MonthNumber] & ")" & " " & RELATED(TimePeriods[MonthShortName])

Sales for February will now appear in a PivotTable under the heading (02) Feb.

You can now add two more columns –Quarters and Years – with the following formulas:

=RELATED(TimePeriods[MonthQuarterName])

=YEAR(Sales[Sales Date])

Like the MONTH formula I showed earlier, the YEAR formula can get what it needs from the Sales Date column and doesn’t require the TimePeriods table.

The formulas shown above are one way to tackle this problem, but the specific approach is less important than the general principle of finding an easy way to add the time period columns that you need for grouping. After you have added those columns, you can create a PivotTable based on the data and group it based on which columns you select from the PowerPivot Field List.

Create a PivotTable from the PowerPivot window. For information about creating a PivotTable, see this video on the Business Intelligence TechNet page. In the Field List, drag Sales Date to the Column Labels pane, Product Name to Row Labels, and Sales Amount to Values. Now clear the Sales Date column and drag the Month column to Column Labels instead.

As you can see in the following screenshot, data is now grouped by months.

Original article (before wiki edits) was written by Michael Blythe, Microsoft SQL Server Analysis Services Content Publishing Manager.


See Also