Funções de janela padrão
Funções de janela específicas do ClickHouse
Existe também a seguinte função de janela específica do ClickHouse:nonNegativeDerivative(metric_column, timestamp_column[, INTERVAL X UNITS])
Calcula a derivada não negativa dametric_column fornecida em relação à timestamp_column.
INTERVAL pode ser omitido; o padrão é INTERVAL 1 SECOND.
O valor calculado para cada linha é:
0para a 1ª linha,- para a linha.
Sintaxe
PARTITION BY- define como dividir um conjunto de resultados em grupos.ORDER BY- define como ordenar as linhas dentro do grupo durante o cálculo de aggregate_function.ROWS or RANGE- define os limites de um frame; aggregate_function é calculada dentro desse frame.WINDOW- permite que várias expressões usem a mesma definição de janela.
Funções
row_number()- Numera a linha atual dentro da partição, começando em 1.first_value(x)- Retorna o primeiro valor avaliado dentro do frame ordenado.last_value(x)- Retorna o último valor avaliado dentro do frame ordenado.nth_value(x, offset)- Retorna o primeiro valor não NULL avaliado na enésima linha (offset) dentro do frame ordenado.rank()- Classifica a linha atual dentro da partição, com lacunas.dense_rank()- Classifica a linha atual dentro da partição, sem lacunas.lagInFrame(x)- Retorna um valor avaliado na linha que está em um deslocamento físico especificado antes da linha atual dentro do frame ordenado.leadInFrame(x)- Retorna um valor avaliado na linha que está a um número de linhas após a linha atual dentro do frame ordenado.
Exemplos
Numeração de linhas
Funções de agregação
Particionamento por coluna
Definição dos limites do frame
Exemplos práticos
Salário máximo/total por departamento
Soma cumulativa
Média móvel / deslizante (em 3 linhas)
Média móvel/deslizante (a cada 10 segundos)
Média móvel / deslizante (de 10 dias)
Range e ORDER BY toDate(ts), formamos um frame de 10 unidades e, por causa de toDate(ts), a unidade é um dia.