Descripción
SimpleAggregateFunction almacena el estado intermedio de una
función de agregación, pero no su estado completo, como sí lo hace el tipo
AggregateFunction.
Esta optimización puede aplicarse a funciones para las que se cumple la siguiente propiedad:
el resultado de aplicar una funciónEsta propiedad garantiza que los resultados parciales de la agregación son suficientes para calcular el resultado combinado, por lo que no es necesario almacenar ni procesar datos adicionales. Por ejemplo, el resultado de las funcionesfa un conjunto de filasS1 UNION ALL S2puede obtenerse aplicandofpor separado a partes del conjunto de filas, y después volviendo a aplicarfa los resultados:f(S1 UNION ALL S2) = f(f(S1) UNION ALL f(S2)).
min o max no requiere pasos adicionales para
calcular el resultado final a partir de los pasos intermedios, mientras que la función avg
requiere llevar un registro de una suma y un conteo, que se dividirán para obtener el
promedio en un paso final de Merge que combina los estados intermedios.
Los valores de una función de agregación suelen generarse llamando a una función de agregación
con el combinador -SimpleState añadido al nombre de la función.
Sintaxis
aggregate_function_name- El nombre de una función de agregación.Type- Los tipos de los argumentos de la función de agregación.
Funciones compatibles
anyany_respect_nullsanyLastanyLast_respect_nullsminmaxsumsumWithOverflowgroupBitAndgroupBitOrgroupBitXorgroupArrayArraygroupUniqArrayArraygroupUniqArrayArrayMapsumMap(sumMappedArrays)minMap(minMappedArrays)maxMap(maxMappedArrays)
Los valores de
SimpleAggregateFunction(func, Type) tienen el mismo Type,
por lo que, a diferencia del tipo AggregateFunction, no es necesario aplicar
los combinadores -Merge/-State.El tipo SimpleAggregateFunction ofrece mejor rendimiento que AggregateFunction
para las mismas funciones de agregación.