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.
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 :
Dernière modification le 1 juillet 2026