> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Avalia uma consulta do Prometheus usando dados de uma tabela TimeSeries.

# prometheusQuery

Avalia uma consulta do Prometheus usando dados de uma tabela TimeSeries.

## Sintaxe

```sql theme={null}
prometheusQuery('db_name', 'time_series_table', 'promql_query', evaluation_time)
prometheusQuery(db_name.time_series_table, 'promql_query', evaluation_time)
prometheusQuery('time_series_table', 'promql_query', evaluation_time)
```

## Argumentos

* `db_name` - O nome do banco de dados em que uma tabela TimeSeries está localizada.
* `time_series_table` - O nome de uma tabela TimeSeries.
* `promql_query` - Uma consulta escrita em [sintaxe PromQL](https://prometheus.io/docs/prometheus/latest/querying/basics/).
* `evaluation_time - O timestamp de avaliação. Para avaliar uma consulta no momento atual, use `now()`como`evaluation\_time\`.

## Valor retornado

A função pode retornar colunas diferentes, dependendo do tipo de resultado da consulta fornecida no parâmetro `promql_query`:

| Tipo de resultado | Colunas retornadas | Exemplo |
| - | - | - |
| vector | tags Array(Tuple(String, String)), timestamp TimestampType, value ValueType | prometheusQuery(mytable, 'up') |
| matrix | tags Array(Tuple(String, String)), samples Array(Tuple(TimestampType, ValueType)) | prometheusQuery(mytable, 'up\[1m]') |
| scalar | scalar ValueType | prometheusQuery(mytable, '1h30m') |
| string | string String | prometheusQuery(mytable, '"abc"') |

A coluna `samples` recebe o nome `time_series` se a tabela `TimeSeries` tiver [version](/pt-BR/reference/engines/table-engines/integrations/time-series#schema-versioning) 2 ou anterior.

## Funcionalidades do PromQL compatíveis

### Seletores

Seletores instantâneos, seletores de intervalo, operadores de correspondência de rótulos (`=`, `!=`, `=~`, `!~`), modificadores offset, modificadores de timestamp com `@` e subconsultas.

### Funções

| Categoria | Funções |
| - | - |
| Intervalo | `rate`, `irate`, `delta`, `idelta`, `increase`, `last_over_time`, `sum_over_time`, `avg_over_time`, `count_over_time`, `max_over_time`, `min_over_time`, `ts_of_max_over_time`, `ts_of_min_over_time`, `deriv`, `changes`, `resets`, `present_over_time`, `absent_over_time`, `quantile_over_time`, `predict_linear` |
| Matemática | `abs`, `sgn`, `floor`, `ceil`, `sqrt`, `exp`, `ln`, `log2`, `log10`, `rad`, `deg`, `round`, `clamp`, `clamp_min`, `clamp_max` |
| Trigonometria | `sin`, `cos`, `tan`, `asin`, `acos`, `atan`, `sinh`, `cosh`, `tanh`, `asinh`, `acosh`, `atanh` |
| DateTime | `day_of_week`, `day_of_month`, `days_in_month`, `day_of_year`, `minute`, `hour`, `month`, `year` |
| Rótulo | `label_replace`, `label_join` |
| Tipo | `scalar`, `vector` |
| Histograma | `histogram_quantile` |
| Outros | `time`, `pi`, `absent` |

**Nota**: `histogram_quantile` usa interpolação linear em buckets clássicos de histograma (identificados pelo rótulo `le`). Histogramas nativos não têm suporte. O argumento `phi` (nível de quantile) deve ser um escalar constante. Expressões que variam a cada passo, como `histogram_quantile(time() / 1000, ...)`, são rejeitadas com uma exceção `NOT_IMPLEMENTED`.

**Nota**: `ts_of_min_over_time` e `ts_of_max_over_time` são funções experimentais no Prometheus (habilitadas lá com `--enable-feature=promql-experimental-functions`); o ClickHouse as avalia sem exigir essa flag.

### Operadores

Operadores binários aritméticos (`+`, `-`, `*`, `/`, `%`, `^`, `atan2`) e de comparação (`==`, `!=`, `<`, `>`, `<=`, `>=` com `bool` opcional), com os modificadores `on()`/`ignoring()` e `group_left()`/`group_right()`.

Operadores lógicos de conjuntos `and`, `or` e `unless`, com os modificadores `on()`/`ignoring()`.

Operadores unários `+` e `-`.

### Operadores de agregação

`sum`, `avg`, `min`, `max`, `count`, `count_values`, `stddev`, `stdvar`, `group`, `quantile`, `topk`, `bottomk`, `limitk` — com os modificadores opcionais `by()` ou `without()`.

### Ainda não compatível

* Funções de intervalo `stddev_over_time`, `stdvar_over_time`, `mad_over_time`, `first_over_time`, `ts_of_last_over_time`, `ts_of_first_over_time`

## Exemplo

```sql theme={null}
SELECT * FROM prometheusQuery(mytable, 'rate(http_requests{job="prometheus"}[10m])[1h:10m]', now())
```
