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 CALCULATE implícita 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 se 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:
Comience con la tabla especificada (y todas las tablas relacionadas en la dirección "a uno").
Cree una agrupación con todas las columnas GroupBy (que son necesarias para existir en la tabla del paso 1).
Cada grupo es una fila en el resultado, pero representa un conjunto de filas de la tabla original.
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 una CALCULATE implícita 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 DAX expresiones de tabla. Para agregaciones eficaces sobre tablas físicas en el modelo, considere la posibilidad de usar SUMMARIZECOLUMNS o SUMMARIZE función.
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 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 del 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, COUNTX, 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])
)