Compartir a través de


GROUPBY

Se aplica a:Columna calculadaTabla calculadaMedidaCálculo visual

Nota:

No se recomienda usar esta función en cálculos visuales, ya que es probable que devuelva resultados sin sentido.

La función GROUPBY es similar a la función SUMMARIZE. Sin embargo, GROUPBY no realiza una operación CALCULATE implícita de las columnas de extensión que agrega. GROUPBY permite usar una nueva función, CURRENTGROUP, dentro de las funciones de agregación en las columnas de extensión que agrega. GROUPBY se usa para realizar varias agregaciones en un solo recorrido de tabla.

Sintaxis

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

Parámetros

Término Definición
tabla Cualquier expresión DAX que devuelve una tabla de datos.
groupBy_columnName Nombre de una columna existente de la tabla (o de una tabla relacionada) por la que se van a agrupar los datos. Este parámetro no puede ser una expresión.
name Nombre dado a una nueva columna que se va a agregar a la lista de columnas GroupBy, entre comillas dobles.
expression Una de las funciones de agregación X cuyo primer argumento es CURRENTGROUP(). Consulte la sección siguiente Con CURRENTGROUP para obtener la lista completa de funciones de agregación X admitidas.

Valor devuelto

Una tabla con las columnas seleccionadas de los argumentos groupBy_columnName y las columnas de extensión diseñadas por los argumentos de nombre.

Comentarios

  • La función GROUPBY hace lo siguiente:

    1. Empieza por la tabla especificada (y todas las tablas relacionadas en la dirección "a una").

    2. Crea una agrupación con todas las columnas GroupBy (que deben existir en la tabla del paso 1).

    3. Cada grupo es una fila en el resultado, pero representa un conjunto de filas en la tabla original.

    4. Por cada grupo, evalúa las columnas de extensión que se agregan. A diferencia de la función SUMMARIZE, no se realiza una operación CALCULATE implícita y el grupo no se coloca en el contexto de filtro.

  • Cada columna para la que se define un nombre debe tener una expresión correspondiente; de lo contrario, se devuelve un error. El primer argumento, name, define el nombre de la columna en los resultados. El segundo argumento, expression, define el cálculo realizado para obtener el valor de cada fila de esa columna.

  • groupBy_columnName debe estar en la tabla o en una tabla relacionada.

  • Cada nombre debe ir entre comillas dobles.

  • La función agrupa un conjunto de filas seleccionado en un conjunto de filas de resumen de los valores de una o más columnas groupBy_columnName. Se devuelve una fila de cada grupo.

  • GROUPBY se usa principalmente para realizar agregaciones sobre resultados intermedios a partir de expresiones de tabla DAX. Para obtener agregaciones eficientes sobre tablas físicas del modelo, considere la posibilidad de usar las funciones SUMMARIZECOLUMNS o SUMMARIZE.

  • Esta función no se admite para su uso en el modo DirectQuery cuando se utiliza en columnas calculadas o en reglas de seguridad de nivel de fila (RLS).

Con CURRENTGROUP

CURRENTGROUP solo se puede usar en una expresión que define una columna de extensión dentro de la función GROUPBY. En efecto, CURRENTGROUP devuelve un conjunto de filas del argumento table de GROUPBY, que pertenecen a la fila actual del resultado de GROUPBY. La función CURRENTGROUP no toma ningún argumento y solo se admite como primer argumento en una de las funciones de agregación siguientes: AVERAGEX, COUNTAX, COUNTX, GEOMEANX, MAXX, MINX, PRODUCTX, STDEVX.S, STDEVX.P, SUMX, VARX.S y VARX.P.

Ejemplo

En el ejemplo siguiente se calculan primero las ventas totales agrupadas por país y categoría de producto a través de las tablas físicas mediante la función SUMMARIZECOLUMNS. Después, usa la función GROUPBY para examinar el resultado intermedio desde el primer paso, a fin de encontrar el máximo de ventas en cada país en todas las categorías de productos.

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

Función SUMMARIZE
Función SUMMARIZECOLUMNS