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

> 使用 TimeSeries 表中的数据计算 Prometheus 查询结果。

# prometheusQuery

使用 TimeSeries 表中的数据计算 Prometheus 查询结果。

<div id="syntax">
  ## 语法
</div>

```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)
```

<div id="arguments">
  ## 参数
</div>

* `db_name` - TimeSeries 表所在的数据库名称。
* `time_series_table` - TimeSeries 表的名称。
* `promql_query` - 使用 [PromQL 语法](https://prometheus.io/docs/prometheus/latest/querying/basics/) 编写的查询。
* `evaluation_time - 求值时间戳。要在当前时间对查询进行求值，请使用 `now()`作为`evaluation\_time\`。

<div id="returned-value">
  ## 返回值
</div>

该函数会根据传给参数 `promql_query` 的查询结果类型，返回不同的列：

| 结果类型   | 结果列                                                                                    | 示例                                  |
| ------ | -------------------------------------------------------------------------------------- | ----------------------------------- |
| vector | tags Array(Tuple(String, String)), timestamp TimestampType, value ValueType            | prometheusQuery(mytable, 'up')      |
| matrix | tags Array(Tuple(String, String)), time\_series Array(Tuple(TimestampType, ValueType)) | prometheusQuery(mytable, 'up\[1m]') |
| scalar | scalar ValueType                                                                       | prometheusQuery(mytable, '1h30m')   |
| string | string String                                                                          | prometheusQuery(mytable, '"abc"')   |

<div id="supported-promql-features">
  ## 支持的 PromQL 特性
</div>

<div id="selectors">
  ### 选择器
</div>

即时选择器、范围选择器、标签匹配器 (`=`、`!=`、`=~`、`!~`) 、偏移修饰符、`@` 时间戳修饰符以及子查询。

<div id="functions">
  ### 函数
</div>

| 类别   | 函数                                                                                                                            |
| ---- | ----------------------------------------------------------------------------------------------------------------------------- |
| 范围   | `rate`, `irate`, `delta`, `idelta`, `increase`, `last_over_time`, `deriv`, `changes`, `resets`                                |
| 数学   | `abs`, `sgn`, `floor`, `ceil`, `sqrt`, `exp`, `ln`, `log2`, `log10`, `rad`, `deg`, `round`, `clamp`, `clamp_min`, `clamp_max` |
| 三角   | `sin`, `cos`, `tan`, `asin`, `acos`, `atan`, `sinh`, `cosh`, `tanh`, `asinh`, `acosh`, `atanh`                                |
| 日期时间 | `day_of_week`, `day_of_month`, `days_in_month`, `day_of_year`, `minute`, `hour`, `month`, `year`                              |
| 标签   | `label_replace`, `label_join`                                                                                                 |
| 类型   | `scalar`, `vector`                                                                                                            |
| 直方图  | `histogram_quantile`                                                                                                          |
| 其他   | `time`, `pi`                                                                                                                  |

**注意**：`histogram_quantile` 在经典直方图桶 (由 `le` 标签标识) 上使用线性插值。原生直方图不受支持。`phi` (分位数级别) 参数必须是常量标量。像 `histogram_quantile(time() / 1000, ...)` 这样每个时间步都会变化的表达式会因 `NOT_IMPLEMENTED` 异常而被拒绝。

<div id="operators">
  ### 运算符
</div>

算术 (`+`、`-`、`*`、`/`、`%`、`^`、`atan2`) 和比较 (`==`、`!=`、`<`、`>`、`<=`、`>=`，可选 `bool`) 二元运算符，以及 `on()`/`ignoring()` 和 `group_left()`/`group_right()` 修饰符。

逻辑集合运算符 `and`、`or` 和 `unless`，以及 `on()`/`ignoring()` 修饰符。

一元运算符 `+` 和 `-`。

<div id="aggregation-operators">
  ### 聚合运算符
</div>

`sum`、`avg`、`min`、`max`、`count`、`stddev`、`stdvar`、`group`、`quantile`、`topk`、`bottomk`、`limitk` —— 可选使用 `by()` 或 `without()` 修饰符。

<div id="not-yet-supported">
  ### 尚未支持
</div>

* 聚合运算符 `count_values`
* 范围函数 `predict_linear`、`avg_over_time`、`min_over_time`、`max_over_time`、`sum_over_time`、`count_over_time`、`quantile_over_time`、`stddev_over_time`、`stdvar_over_time`、`present_over_time`、`absent_over_time`、`mad_over_time`、`first_over_time`、`ts_of_min_over_time`、`ts_of_max_over_time`、`ts_of_last_over_time`、`ts_of_first_over_time`
* 函数 `absent`

<div id="example">
  ## 示例
</div>

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