Compartilhar via


GROUPBY

aplica-se a:coluna calculadatabela calculadamedidacálculo visual

Nota

Essa função é desencorajada para uso em cálculos visuais pois provavelmente retorna resultados sem sentido.

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

Sintaxe

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

Parâmetros

Prazo Definição
table 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 devem ser agrupados. Esse parâmetro não pode ser uma expressão.
name O nome dado a uma nova coluna que está sendo adicionada à lista de colunas GroupBy, entre aspas duplas.
expression Uma das funções de agregação X com o primeiro argumento sendo CURRENTGROUP(). Consulte com CURRENTGROUP seção abaixo para obter a lista completa de funções de agregação X com suporte.

Valor de retorno

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

Observações

  • 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 são necessárias para existir na tabela a partir da etapa nº 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. Ao contrário da função SUMMARIZE, um CALCULATE implícito não é executado e o grupo não é colocado no contexto de 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, nome, define o nome da coluna nos resultados. O segundo argumento, expressão, define o cálculo executado para obter o valor de cada linha nessa coluna.

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

  • Cada nome deve estar 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 groupBy_columnName. Uma linha é retornada para cada grupo.

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

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

Com CURRENTGROUP

CURRENTGROUP só pode ser usado em uma expressão que define uma coluna de extensão dentro da função GROUPBY. Na verdade, CURRENTGROUP retorna um conjunto de linhas do argumento de tabela de GROUPBY que pertencem à linha atual do resultado do 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 e 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 localizar 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 SUMMARIZESUMMARIZECOLUMNS