GROUPBY DAX Function (Table manipulation)

Creates a summary the input table grouped by the specified columns.

Syntax

GROUPBY ( <Table> [, <GroupBy_ColumnName> [, [<Name>] [, [<Expression>] [, <GroupBy_ColumnName> [, [<Name>] [, [<Expression>] [, … ] ] ] ] ] ] ] )
Parameter Attributes Description
Table

The input table.

GroupBy_ColumnName Optional
Repeatable

A column to group by.

Name Optional
Repeatable

A column name to be added.

Expression Optional
Repeatable

The expression of the new column.

Return values

Table An entire table or a table with one or more columns.

A table with the selected columns for the GroupBy_columnName arguments and the grouped by columns designated by the name arguments.

Remarks

Most of the times, SUMMARIZE can be used instead of GROUPBY.
GROUPBY is required to aggregate the result of a column computed in a previous table expression.

» 3 related articles
» 1 related function

Examples

--  GROUPBY is useful to group by columns with no lineage
--  Each column added by GROUPBY must iterate CURRENTGROUP(). 
--  Moreover, you cannot use CALCULATE inside
--  a GROUPBY iteration.
DEFINE
VAR AverageCustomerSales =
    AVERAGEX ( Customer, [Sales Amount] )
VAR TaggedCustomers =
    SUMMARIZECOLUMNS (
        Customer[CustomerKey],
        "Customer Category",
            IF ( [Sales Amount] >= AverageCustomerSales, "Above Average", "Below Average" )
    )
VAR Result =
    GROUPBY (
        TaggedCustomers,
        [Customer Category],
        "# Customers", COUNTX ( CURRENTGROUP (), 1 )
    )
EVALUATE
    Result
Customer Category # Customers
Below Average 18,062
Above Average 807
DEFINE
VAR CustomersAndCategories = 
    SUMMARIZE ( Sales, Customer[CustomerKey], 'Product'[Category] )
VAR CustomersWithNumCategories = 
    GROUPBY ( 
        CustomersAndCategories, 
        'Product'[Category],
        "@Customers", SUMX ( CURRENTGROUP(), 1 )
    )
EVALUATE
    CustomersWithNumCategories
ORDER BY 
    'Product'[Category]
Category @Customers
Audio 997
Cameras and camcorders 1,873
Cell phones 552
Computers 2,088
Games and Toys 5,785
Home Appliances 1,946
Music, Movies and Audio Books 377
TV and Video 3,421
EVALUATE
VAR RoundedSales = 
    SELECTCOLUMNS (
        VALUES ( 'Product'[Product Name] ),
        "First Letter", LEFT ( 'Product'[Product Name], 1 ),
        "Rounded Sales", MROUND ( [Sales Amount], 10000 )
    )
VAR GroupByFirstLetter =
    GROUPBY (
        RoundedSales,
        [First Letter],
        "Sum Rounded Sales", SUMX ( CURRENTGROUP (), [Rounded Sales] )
    )
RETURN 
    GroupByFirstLetter
ORDER BY [First Letter]
First Letter Sum Rounded Sales
A 6,080,000
C 7,050,000
F 5,520,000
H 30,000
L 3,160,000
M 160,000
N 1,000,000
P 2,460,000
R 0
S 1,270,000
T 1,060,000
W 1,860,000

Related articles

Learn more about GROUPBY in the following articles:

Related functions

Other related functions are:

Last update: Nov 14, 2024   » Contribute   » Show contributors

Contributors: Alberto Ferrari, Marco Russo

Microsoft documentation: https://docs.microsoft.com/en-us/dax/groupby-function-dax

2018-2024 © SQLBI. All rights are reserved. Information coming from Microsoft documentation is property of Microsoft Corp. » Contact us   » Privacy Policy & Cookies

Context Transition

This function performs a Context Transition if called in a Row Context. Click to read more.

Row Context

This expression is executed in a Row Context. Click to read more.

Iterator

Not recommended

The use of this function is not recommended. See Remarks and Related functions for alternatives.

Not recommended

The use of this parameter is not recommended.

Deprecated

This function is deprecated. Jump to the Alternatives section to see the function to use.

Volatile

A volatile function may return a different result every time you call it, even if you provide the same arguments. Click to read more.

Deprecated

This parameter is deprecated and its use is not recommended.

DirectQuery compatibility

Limitations are placed on DAX expressions allowed in measures and calculated columns.
The state below shows the DirectQuery compatibility of the DAX function.

Contribute

Want to improve the content of GROUPBY? Did you find any issue?
Please, report it us! All submissions will be evaluated for possible updates of the content.


This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.