-If
sumIf(column, cond), countIf(cond), avgIf(x, cond), quantilesTimingIf(level1, level2)(x, cond), argMinIf(arg, val, cond) et ainsi de suite.
Avec les fonctions d’agrégation conditionnelles, vous pouvez calculer des agrégats pour plusieurs conditions à la fois, sans utiliser de sous-requêtes ni de JOIN. Par exemple, les fonctions d’agrégation conditionnelles peuvent être utilisées pour implémenter la fonctionnalité de comparaison de segments.
-Array
sumArray(arr) - Fait le total de tous les éléments de tous les tableaux ‘arr’. Dans cet exemple, on aurait pu l’écrire plus simplement : sum(arraySum(arr)).
Exemple 2 : uniqArray(arr) – Compte le nombre d’éléments uniques dans tous les tableaux ‘arr’. On pourrait le faire plus simplement ainsi : uniq(arrayJoin(arr)), mais il n’est pas toujours possible d’ajouter ‘arrayJoin’ à une requête.
-If et -Array peuvent être combinés. Cependant, ‘Array’ doit venir en premier, puis ‘If’. Exemples : uniqArrayIf(arr, cond), quantilesTimingArrayIf(level1, level2)(arr, cond). En raison de cet ordre, l’argument ‘cond’ ne sera pas un tableau.
-Map
-SimpleState
x— Paramètres de la fonction d’agrégation.
SimpleAggregateFunction(...).
Exemple
Query
Response
-State
uniq, il s’agit de la table de hachage utilisée pour calculer le nombre de valeurs uniques). Il s’agit d’une AggregateFunction(...) qui peut être utilisée pour un traitement ultérieur ou stockée dans une table afin de finaliser l’agrégation plus tard.
Veuillez noter que -MapState n’est pas invariant pour un même jeu de données, car l’ordre des données dans l’état intermédiaire peut changer, même si cela n’a pas d’impact sur l’ingestion de ces données.
- le moteur de table AggregatingMergeTree ;
- la fonction finalizeAggregation ;
- la fonction runningAccumulate ;
- le combinateur -Merge ;
- le combinateur -MergeState.
-Merge
-MergeState
-ForEach
sumForEach pour les tableaux [1, 2], [3, 4, 5] et [6, 7] renvoie le résultat [10, 13, 5] après avoir additionné les éléments correspondants.
-Distinct
sum(DISTINCT x) (ou sumDistinct(x)), groupArray(DISTINCT x) (ou groupArrayDistinct(x)), corrStable(DISTINCT x, y) (ou corrStableDistinct(x, y)) et ainsi de suite.
-OrDefault
-OrDefault peut être utilisé avec d’autres combinateurs.
Syntaxe
x— Paramètres de la fonction d’agrégation.
Query
Response
-OrDefault peut également être utilisé avec d’autres combinateurs. Cela est utile lorsque la fonction d’agrégation n’accepte pas d’entrée vide.
Query
Response
-OrNull
-OrNull peut être utilisé avec d’autres combinateurs.
Syntaxe
x— Paramètres de la fonction d’agrégation.
- Le résultat de la fonction d’agrégation, converti en type de données
Nullable. NULLs’il n’y a rien à agréger.
Nullable(type de retour de la fonction d’agrégation).
Exemple
Ajoutez -orNull à la fin de la fonction d’agrégation.
Query
Response
-OrNull peut être utilisé avec d’autres combinateurs. Cela est utile lorsque la fonction d’agrégation n’accepte pas d’entrée vide.
Query
Response
-Resample
start— Valeur de début de l’intervalle complet requis pour les valeurs deresampling_key.stop— Valeur de fin de l’intervalle complet requis pour les valeurs deresampling_key. L’intervalle complet n’inclut pas la valeurstop[start, stop).step— Pas utilisé pour découper l’intervalle complet en sous-intervalles.aggFunctionest exécutée indépendamment sur chacun de ces sous-intervalles.resampling_key— Colonne dont les valeurs sont utilisées pour répartir les données en intervalles.aggFunction_params— Paramètres deaggFunction.
- Tableau des résultats de
aggFunctionpour chaque sous-intervalle.
people avec les données suivantes :
[30,60) et [60,75). Comme nous utilisons une représentation entière pour l’âge, nous obtenons les âges des intervalles [30, 59] et [60,74].
Pour agréger les noms dans un tableau, nous utilisons la fonction d’agrégation groupArray. Elle prend un argument. Dans notre cas, il s’agit de la colonne name. La fonction groupArrayResample doit utiliser la colonne age pour agréger les noms par âge. Pour définir les intervalles requis, nous passons les arguments 30, 75, 30 à la fonction groupArrayResample.
John ne figure pas dans l’échantillon parce qu’il est trop jeune. Les autres personnes sont réparties selon les tranches d’âge spécifiées.
Comptons maintenant le nombre total de personnes ainsi que leur salaire moyen dans les tranches d’âge spécifiées.
-ArgMin
sumArgMin(column, expr), countArgMin(expr), avgArgMin(x, expr), etc.