AggregateFunction(name, types_of_arguments…) 

Aggregate functions can have an implementation-defined intermediate state that can be serialized to an AggregateFunction(…) data type and stored in a table, usually, by means of una vista materializada. La forma común de producir un estado de función agregada es llamando a la función agregada con el -State sufijo. Para obtener el resultado final de la agregación en el futuro, debe utilizar la misma función de agregado con el -Mergesufijo.

AggregateFunction — parametric data type.

Parámetros

  • Nombre de la función de agregado.

    If the function is parametric, specify its parameters too.
    
  • Tipos de los argumentos de la función agregada.

Ejemplo

CREATE TABLE t
(
    column1 AggregateFunction(uniq, UInt64),
    column2 AggregateFunction(anyIf, String, UInt8),
    column3 AggregateFunction(quantiles(0.5, 0.9), UInt64)
) ENGINE = ...

uniq, anyIf (cualquier+Si) y cantiles son las funciones agregadas admitidas en ClickHouse.

Uso 

Inserción de datos 

Para insertar datos, utilice INSERT SELECT con agregado -State- función.

Ejemplos de funciones

uniqState(UserID)
quantilesState(0.5, 0.9)(SendTiming)

En contraste con las funciones correspondientes uniq y quantiles, -State- funciones devuelven el estado, en lugar del valor final. En otras palabras, devuelven un valor de AggregateFunction tipo.

En los resultados de SELECT consulta, los valores de AggregateFunction tipo tiene representación binaria específica de la implementación para todos los formatos de salida de ClickHouse. Si volcar datos en, por ejemplo, TabSeparated formato con SELECT consulta, entonces este volcado se puede cargar de nuevo usando INSERT consulta.

Selección de datos 

Al seleccionar datos de AggregatingMergeTree mesa, uso GROUP BY cláusula y las mismas funciones agregadas que al insertar datos, pero usando -Mergesufijo.

Una función agregada con -Merge sufijo toma un conjunto de estados, los combina y devuelve el resultado de la agregación de datos completa.

Por ejemplo, las siguientes dos consultas devuelven el mismo resultado:

SELECT uniq(UserID) FROM table

SELECT uniqMerge(state) FROM (SELECT uniqState(UserID) AS state FROM table GROUP BY RegionID)

Ejemplo de uso 

Ver AgregaciónMergeTree Descripción del motor.

Artículo Original

Rating: 1.4 - 20 votes

Was this content helpful?
★☆☆☆☆