Leer en inglés

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 probablemente devuelva resultados sin sentido.

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

Sintaxis

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

Parámetros

Término Definición
table Cualquier expresión DAX que devuelva una tabla de datos.
groupBy_columnName Nombre de una columna existente en la tabla (o en una tabla relacionada) por la que se van a agrupar los datos. Este parámetro no puede ser una expresión.
name Nombre asignado 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 con el primer argumento que es CURRENTGROUP(). Consulte la sección With CURRENTGROUP below (Con CURRENTGROUP) para obtener la lista completa de funciones de agregación X admitidas.

Valor devuelto

Tabla con las columnas seleccionadas para los argumentos de groupBy_columnName y las columnas de extensión designadas por los argumentos de nombre.

Observaciones

  • La función GROUPBY hace lo siguiente:

    1. Comience con la tabla especificada (y todas las tablas relacionadas en la dirección "a uno").

    2. Cree una agrupación con todas las columnas GroupBy (que son necesarias para existir en la tabla del paso 1).

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

    4. Para cada grupo, evalúe las columnas de extensión que se van a agregar. A diferencia de la función SUMMARIZE, no se realiza un cálculo implícito y el grupo no se coloca en el contexto de filtro.

  • Cada columna para la que defina 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, expresión, 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 seleccionado de filas en un conjunto de filas de resumen por los valores de una o varias columnas de groupBy_columnName. Se devuelve una fila para cada grupo.

  • GROUPBY se usa principalmente para realizar agregaciones a través de resultados intermedios de expresiones de tabla DAX. Para agregaciones eficaces sobre tablas físicas en el modelo, considere la posibilidad de usar función SUMMARIZECOLUMNS o SUMMARIZE.

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

Con CURRENTGROUP

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

Ejemplo

En el ejemplo siguiente se calcula primero el total de ventas agrupadas por país y categoría de producto en tablas físicas mediante la función SUMMARIZECOLUMNS. A continuación, usa la función GROUPBY para examinar el resultado intermedio del primer paso para encontrar las ventas máximas en cada país en 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