Partilhar via


GROUPBY

Aplica-se a:Coluna calculadaTabela calculadaMedidaCálculo visual

Observação

Esta 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 quaisquer colunas de extensão que adiciona. GROUPBY permite que uma nova função, CURRENTGROUP, seja usada dentro de funções de agregação nas colunas de extensão adicionadas. 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

Vigência 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. Este 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 suportadas.

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.

Comentários

  • A função GROUPBY faz o seguinte:

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

    2. Crie um agrupamento usando todas as colunas GroupBy (que devem existir na tabela a partir 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. Ao contrário da função SUMMARIZE, uma CALCULATE implícita não é executada 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, expressão, define o cálculo realizado para obter o valor de cada linha nessa coluna.

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

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

  • Esta função não é suportada para utilização no modo DirectQuery quando utilizada em colunas calculadas ou regras de segurança ao nível da linha (RLS).

Com CURRENTGROUP

CURRENTGROUP só pode ser usado em uma expressão que define uma coluna de extensão dentro da função GROUPBY. Com efeito, CURRENTGROUP retorna um conjunto de linhas do argumento de tabela de GROUPBY que pertencem à linha atual do resultado GROUPBY. A função CURRENTGROUP não usa argumentos e só é suportada 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 primeiro calcula o total de vendas agrupadas por país e categoria de produto em tabelas físicas usando a função SUMMARIZECOLUMNS. Em seguida, utiliza a função GROUPBY para analisar o resultado intermédio desde o primeiro passo para encontrar o máximo de vendas em cada país em todas as categorias de produtos.

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])
)

SUMMARIZE funçãoSUMMARIZECOLUMNS função