> ## 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.

> TimeSeriesテーブルのデータを使用して、Prometheusクエリを評価します。

# prometheusQueryRange

一定の評価時刻範囲にわたって、TimeSeriesテーブルのデータを使用してPrometheusクエリを評価します。

## 構文

```sql theme={null}
prometheusQueryRange('db_name', 'time_series_table', 'promql_query', start_time, end_time, step)
prometheusQueryRange(db_name.time_series_table, 'promql_query', start_time, end_time, step)
prometheusQueryRange('time_series_table', 'promql_query', start_time, end_time, step)
```

## 引数

* `db_name` - TimeSeries テーブルが存在するデータベースの名前。
* `time_series_table` - TimeSeries テーブルの名前。
* `promql_query` - [PromQL 構文](https://prometheus.io/docs/prometheus/latest/querying/basics/)で記述されたクエリ。
* `start_time` - 評価範囲の開始時刻。
* `end_time` - 評価範囲の終了時刻。
* `step` - 評価時刻を `start_time` から `end_time` まで (両端を含む) 順に進める際のステップ。

## 戻り値

この関数は、パラメータ `promql_query` に渡されたクエリの結果タイプに応じて、返されるカラムが異なります。

| 結果タイプ | 結果カラム | 例 |
| - | - | - |
| 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"') |

`TimeSeries` テーブルの [version](/ja/reference/engines/table-engines/integrations/time-series#schema-versioning) が 2 以前の場合、`samples` カラムの名前は `time_series` になります。

## PromQL でサポートされている機能

### セレクタ

インスタントセレクタ、範囲セレクタ、ラベルマッチャー (`=`, `!=`, `=~`, `!~`) 、`offset` 修飾子、`@` タイムスタンプ修飾子、サブクエリ。

### 関数

| カテゴリ | 関数 |
| - | - |
| 範囲 | `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` |
| 数学 | `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` |
| DateTime | `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`, `absent` |

**注**: `histogram_quantile` は、従来のヒストグラムバケット (`le` ラベルで識別) に対して線形補間を使用します。ネイティブヒストグラムはサポートされていません。`phi` (quantile level) 引数は定数スカラーである必要があります。`histogram_quantile(time() / 1000, ...)` のようにステップごとに変化する式は受け付けられず、`NOT_IMPLEMENTED` 例外になります。

**注**: `ts_of_min_over_time` と `ts_of_max_over_time` は Prometheus のExperimental関数です (Prometheus では `--enable-feature=promql-experimental-functions` で有効化されます) 。ClickHouse では、このフラグを必要とせずに評価されます。

### 演算子

`on()`/`ignoring()` および `group_left()`/`group_right()` 修飾子付きの、算術 (`+`, `-`, `*`, `/`, `%`, `^`, `atan2`) 、比較 (オプションの `bool` を付けた `==`, `!=`, `<`, `>`, `<=`, `>=`) 二項演算子。

`on()`/`ignoring()` 修飾子付きの論理集合演算子 `and`、`or`、および `unless`。

単項演算子 `+` と `-`。

### 集計演算子

`sum`, `avg`, `min`, `max`, `count`, `count_values`, `stddev`, `stdvar`, `group`, `quantile`, `topk`, `bottomk`, `limitk` — オプションで `by()` または `without()` 修飾子を指定できます。

### 現時点では未サポート

* 範囲関数 `stddev_over_time`, `stdvar_over_time`, `mad_over_time`, `first_over_time`, `ts_of_last_over_time`, `ts_of_first_over_time`

## 例

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