-If
sumIf(column, cond), countIf(cond), avgIf(x, cond), quantilesTimingIf(level1, level2)(x, cond), argMinIf(arg, val, cond) e assim por diante.
Com funções de agregação condicionais, você pode calcular agregados para várias condições ao mesmo tempo, sem usar subconsultas nem JOINs. Por exemplo, funções de agregação condicionais podem ser usadas para implementar a funcionalidade de comparação de segmentos.
-Array
sumArray(arr) - Soma todos os elementos de todos os arrays ‘arr’. Neste exemplo, também poderia ser escrito de forma mais simples: sum(arraySum(arr)).
Exemplo 2: uniqArray(arr) – Conta o número de elementos únicos em todos os arrays ‘arr’. Isso também poderia ser feito de uma forma mais simples: uniq(arrayJoin(arr)), mas nem sempre é possível adicionar ‘arrayJoin’ a uma consulta.
-If e -Array podem ser combinados. No entanto, ‘Array’ deve vir primeiro e, depois, ‘If’. Exemplos: uniqArrayIf(arr, cond), quantilesTimingArrayIf(level1, level2)(arr, cond). Devido a essa ordem, o argumento ‘cond’ não será um array.
-Map
-SimpleState
x— Parâmetros da função de agregação.
SimpleAggregateFunction(...).
Exemplo
Query
Response
-State
uniq, isso é a tabela hash usada para calcular o número de valores únicos). Trata-se de um AggregateFunction(...) que pode ser usado em processamento adicional ou armazenado em uma tabela para concluir a agregação depois.
Observe que -MapState não é invariante para os mesmos dados, pois a ordem dos dados no estado intermediário pode mudar, embora isso não afete a ingestão desses dados.
- AggregatingMergeTree como mecanismo de tabela.
- A função finalizeAggregation.
- A função runningAccumulate.
- O combinador -Merge.
- O combinador -MergeState.
-Merge
-MergeState
-ForEach
sumForEach para os arrays [1, 2], [3, 4, 5] e [6, 7] retorna o resultado [10, 13, 5] após somar os elementos correspondentes dos arrays.
-Distinct
sum(DISTINCT x) (ou sumDistinct(x)), groupArray(DISTINCT x) (ou groupArrayDistinct(x)), corrStable(DISTINCT x, y) (ou corrStableDistinct(x, y)) e assim por diante.
-OrDefault
-OrDefault pode ser usado com outros combinadores.
Sintaxe
x— Parâmetros da função de agregação.
Query
Response
-OrDefault com outros combinadores. Isso é útil quando a função de agregação não aceita uma entrada vazia.
Query
Response
-OrNull
-OrNull pode ser usado com outros combinadores.
Sintaxe
x— Parâmetros da função de agregação.
- O resultado da função de agregação, convertido para o tipo de dado
Nullable. NULL, se não houver nada para agregar.
Nullable(tipo de retorno da função de agregação).
Exemplo
Adicione -orNull ao final do nome da função de agregação.
Query
Response
-OrNull também pode ser usado com outros combinadores. Isso é útil quando a função de agregação não aceita entrada vazia.
Query
Response
-Resample
start— Valor inicial de todo o intervalo necessário para os valores deresampling_key.stop— Valor final de todo o intervalo necessário para os valores deresampling_key. O intervalo completo não inclui o valorstop[start, stop).step— Passo para separar todo o intervalo em subintervalos. AaggFunctioné executada em cada um desses subintervalos de forma independente.resampling_key— Coluna cujos valores são usados para separar os dados em intervalos.aggFunction_params— Parâmetros deaggFunction.
- Array de resultados de
aggFunctionpara cada subintervalo.
people com os seguintes dados:
[30,60) e [60,75). Como usamos representação inteira para a idade, obtemos idades nos intervalos [30, 59] e [60,74].
Para agregar nomes em um Array, usamos a função de agregação groupArray. Ela recebe um argumento. No nosso caso, é a coluna name. A função groupArrayResample deve usar a coluna age para agregar nomes por idade. Para definir os intervalos necessários, passamos os argumentos 30, 75, 30 para a função groupArrayResample.
John ficou fora da amostra porque é jovem demais. As outras pessoas foram distribuídas de acordo com os intervalos de idade especificados.
Agora, vamos contar o número total de pessoas e a média salarial delas nos intervalos de idade especificados.
-ArgMin
sumArgMin(column, expr), countArgMin(expr), avgArgMin(x, expr) e assim por diante.