Passer au contenu principal

Description

Le combinateur State peut être appliqué à la fonction avg pour produire un état intermédiaire de type AggregateFunction(avg, T), où T est le type spécifié pour la moyenne.

Exemple d’utilisation

Dans cet exemple, nous verrons comment utiliser le type AggregateFunction, ainsi que la fonction avgState pour agréger des données de trafic web. Commencez par créer la table source pour les données de trafic du site web :
Créez la table d’agrégation qui stockera les temps de réponse moyens. Notez que avg ne peut pas utiliser le type SimpleAggregateFunction, car il nécessite un état complexe (une somme et un compteur). Nous utilisons donc le type AggregateFunction :
Créez une vue matérialisée incrémentale qui agira comme un déclencheur d’insertion sur les nouvelles données et stockera les données d’état intermédiaires dans la table cible définie ci-dessus :
Insérez des données initiales dans la table source, ce qui crée une partie sur le disque :
Insérez d’autres données pour créer un deuxième part sur le disque :
Examinez la table cible page_performance :
Notez que la colonne avg_response_time est de type AggregateFunction(avg, UInt32) et stocke des informations d’état intermédiaires. Notez également que les données de la ligne pour avg_response_time ne nous sont d’aucune utilité et que nous voyons des caractères étranges tels que �, n, F, }. Il s’agit de la tentative du terminal d’afficher des données binaires sous forme de texte. Cela s’explique par le fait que les types AggregateFunction stockent leur état dans un format binaire optimisé pour l’efficacité du stockage et du calcul, et non pour la lisibilité humaine. Cet état binaire contient toutes les informations nécessaires au calcul de la moyenne. Pour l’utiliser, utilisez le combinateur Merge :
Les moyennes correctes apparaissent désormais :

Voir aussi

Dernière modification le 3 juillet 2026