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 une vue matérialisée. La manière courante de produire un État de fonction d'agrégat est d'appeler la fonction d'agrégat avec le -State suffixe. Pour obtenir le résultat final de l'agrégation dans l'avenir, vous devez utiliser la même fonction d'agrégation avec la -Mergesuffixe.

AggregateFunction — parametric data type.

Paramètre

  • Nom de la fonction d'agrégation.

    If the function is parametric, specify its parameters too.
    
  • Types des arguments de la fonction d'agrégation.

Exemple

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

uniq, anyIf (tout+Si) et les quantiles les fonctions d'agrégation sont-elles prises en charge dans ClickHouse.

Utilisation 

Insertion De Données 

Pour insérer des données, utilisez INSERT SELECT avec le regroupement d' -State- fonction.

Exemples de fonction

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

Contrairement aux fonctions correspondantes uniq et quantiles, -State- les fonctions renvoient l'état, au lieu de la valeur finale. En d'autres termes, ils renvoient une valeur de AggregateFunction type.

Dans les résultats de SELECT requête, les valeurs de AggregateFunction type ont une représentation binaire spécifique à l'implémentation pour tous les formats de sortie ClickHouse. Si les données de vidage dans, par exemple, TabSeparated format avec SELECT requête, puis ce vidage peut être chargé en utilisant INSERT requête.

Sélection De Données 

Lors de la sélection des données AggregatingMergeTree table, utilisez GROUP BY et les mêmes fonctions d'agrégat que lors de l'insertion de données, mais en utilisant -Mergesuffixe.

Une fonction d'agrégation avec -Merge suffixe prend un ensemble d'états, les combine, et renvoie le résultat complet de l'agrégation de données.

Par exemple, les deux requêtes suivantes retournent le même résultat:

SELECT uniq(UserID) FROM table

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

Exemple D'Utilisation 

Voir AggregatingMergeTree Description du moteur.

Article Original

Rating: 1.4 - 20 votes

Was this content helpful?
★☆☆☆☆