* replace exit with assert in test_single_page * improve save_raw_single_page docs option * More grammar fixes * "Built from" link in new tab * fix mistype * Example of include in docs * add anchor to meeting form * Draft of translation helper * WIP on translation helper * Replace some fa docs content with machine translation * add normalize-en-markdown.sh * normalize some en markdown * normalize some en markdown * admonition support * normalize * normalize * normalize * support wide tables * normalize * normalize * normalize * normalize * normalize * normalize * normalize * normalize * normalize * normalize * normalize * normalize * normalize * lightly edited machine translation of introdpection.md * lightly edited machhine translation of lazy.md * WIP on translation utils * Normalize ru docs * Normalize other languages * some fixes * WIP on normalize/translate tools * add requirements.txt * [experimental] add es docs language as machine translated draft * remove duplicate script * Back to wider tab-stop (narrow renders not so well) * Links to nowhere check at least for English * use f string * More complete es translation
3.7 KiB
AgregaciónMergeTree
El motor hereda de Método de codificación de datos:, alterando la lógica para la fusión de partes de datos. ClickHouse reemplaza todas las filas con la misma clave principal (o más exactamente, con la misma clave de clasificación) con una sola fila (dentro de una parte de datos) que almacena una combinación de estados de funciones agregadas.
Usted puede utilizar AggregatingMergeTree
tablas para la agregación de datos incrementales, incluidas las vistas materializadas agregadas.
El motor procesa todas las columnas con AggregateFunction tipo.
Es apropiado usar AggregatingMergeTree
si reduce el número de filas por pedidos.
Creación de una tabla
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
...
) ENGINE = AggregatingMergeTree()
[PARTITION BY expr]
[ORDER BY expr]
[SAMPLE BY expr]
[TTL expr]
[SETTINGS name=value, ...]
Para obtener una descripción de los parámetros de solicitud, consulte descripción de la solicitud.
Cláusulas de consulta
Al crear un AggregatingMergeTree
mesa de la misma clausula se requieren, como al crear un MergeTree
tabla.
Método obsoleto para crear una tabla
!!! attention "Atención" No use este método en proyectos nuevos y, si es posible, cambie los proyectos antiguos al método descrito anteriormente.
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
...
) ENGINE [=] AggregatingMergeTree(date-column [, sampling_expression], (primary, key), index_granularity)
Todos los parámetros tienen el mismo significado que en MergeTree
.
SELECCIONAR e INSERTAR
Para insertar datos, utilice INSERTAR SELECCIONAR Consulta con funciones agregadas -State-.
Al seleccionar datos de AggregatingMergeTree
mesa, uso GROUP BY
cláusula y las mismas funciones agregadas que al insertar datos, pero usando -Merge
sufijo.
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.
Ejemplo de una vista materializada agregada
AggregatingMergeTree
vista materializada que mira el test.visits
tabla:
CREATE MATERIALIZED VIEW test.basic
ENGINE = AggregatingMergeTree() PARTITION BY toYYYYMM(StartDate) ORDER BY (CounterID, StartDate)
AS SELECT
CounterID,
StartDate,
sumState(Sign) AS Visits,
uniqState(UserID) AS Users
FROM test.visits
GROUP BY CounterID, StartDate;
Insertar datos en el test.visits
tabla.
INSERT INTO test.visits ...
Los datos se insertan tanto en la tabla como en la vista test.basic
que realizará la agregación.
Para obtener los datos agregados, necesitamos ejecutar una consulta como SELECT ... GROUP BY ...
de la vista test.basic
:
SELECT
StartDate,
sumMerge(Visits) AS Visits,
uniqMerge(Users) AS Users
FROM test.basic
GROUP BY StartDate
ORDER BY StartDate;