Compartilhar via


GROUPBY

Aplica-se a:Coluna calculadaTabela calculadaMedidaCálculo visual

Observação

Essa função não é recomendada para uso em cálculos visuais, pois é provável que ela retorne resultados sem sentido.

A função GROUPBY é semelhante à função SUMMARIZE. No entanto, GROUPBY não executa um CALCULATE implícito para nenhuma coluna de extensão que ele adiciona. GROUPBY permite que uma nova função, CURRENTGROUP, seja usada dentro das funções de agregação nas colunas de extensão que ele adiciona. GROUPBY é usado para executar várias agregações em uma só verificação de tabela.

Sintaxe

GROUPBY (<table> [, <groupBy_columnName> [, <groupBy_columnName> [, …]]] [, <name>, <expression> [, <name>, <expression> [, …]]])

Parâmetros

Termo Definição
tabela Qualquer expressão DAX que retorna uma tabela de dados.
groupBy_columnName O nome de uma coluna existente na tabela (ou em uma tabela relacionada) pela qual os dados serão agrupados. Esse parâmetro não pode ser uma expressão.
Nome O nome dado a uma nova coluna que está sendo adicionada à lista de colunas GroupBy, entre aspas duplas.
expressão Uma das funções de agregação X, com o primeiro argumento sendo CURRENTGROUP(). Confira na seção Com CURRENTGROUP a seguir a lista completa de funções de agregação X com suporte.

Retornar valor

Uma tabela com as colunas selecionadas para os argumentos groupBy_columnName e as colunas de extensão designadas pelos argumentos de nome.

Comentários

  • A função GROUPBY faz o seguinte:

    1. Comece com a tabela especificada (e todas as tabelas relacionadas na direção "para um").

    2. Crie um agrupamento usando todas as colunas GroupBy (que devem existir na tabela da etapa #1.).

    3. Cada grupo é uma linha no resultado, mas representa um conjunto de linhas na tabela original.

    4. Para cada grupo, avalie as colunas de extensão que estão sendo adicionadas. Diferente da função SUMMARIZE, um CALCULATE implícito não é executado e o grupo não é colocado no contexto do filtro.

  • Cada coluna para a qual você define um nome deve ter uma expressão correspondente; caso contrário, um erro será retornado. O primeiro argumento, name, define o nome da coluna nos resultados. O segundo argumento, expression, define o cálculo executado para obter o valor de cada linha nessa coluna.

  • groupBy_columnName deve estar em table ou em uma tabela relacionada.

  • Cada nome deve ser colocado entre aspas duplas.

  • A função agrupa um conjunto selecionado de linhas em um conjunto de linhas de resumo pelos valores de uma ou mais colunas de groupBy_columnName. Uma linha é retornada para cada grupo.

  • GROUPBY é usado principalmente para executar agregações de resultados intermediários de expressões de tabela DAX. Para agregações eficientes em tabelas físicas no modelo, considere usar a função SUMMARIZECOLUMNS ou SUMMARIZE.

  • Não há suporte para a função ser usada no modo DirectQuery quando usada em regras RLS (segurança em nível de linha) ou colunas calculadas.

Com CURRENTGROUP

CURRENTGROUP pode ser usado somente em uma expressão que define uma coluna de extensão dentro da função GROUPBY. Em vigor, CURRENTGROUP retorna um conjunto de linhas do argumento de tabela de GROUPBY que pertencem à linha atual do resultado de GROUPBY. A função CURRENTGROUP não usa argumentos e só tem suporte como o primeiro argumento para uma das seguintes funções de agregação: AVERAGEX, COUNTAX, COUNTX, GEOMEANX, MAXX, MINX, PRODUCTX, STDEVX.S, STDEVX.P, SUMX, VARX.S, VARX.P.

Exemplo

O exemplo a seguir calcula primeiro o total de vendas agrupadas por país/região e por categoria de produto em tabelas físicas usando a função SUMMARIZECOLUMNS. Em seguida, ele usa a função GROUPBY para verificar o resultado intermediário da primeira etapa para encontrar o máximo de vendas em cada país entre as categorias de produto.

DEFINE  
VAR SalesByCountryAndCategory =  
SUMMARIZECOLUMNS(  
Geography[Country],
Product[Category],
"Total Sales", SUMX(Sales, Sales[Price] * Sales[Qty])  
)  
  
EVALUATE
GROUPBY(  
SalesByCountryAndCategory,
Geography[Country],
"Max Sales", MAXX(CURRENTGROUP(), [Total Sales])  
)  

Função SUMMARIZE
Função SUMMARIZECOLUMNS