+++
title = "Поддержка Flux в Harvest"
description = "Руководство по Flux в Harvest"
weight = 200
+++
# Язык запросов Flux в Harvest

Harvest поддерживает Flux, работающий на InfluxDB 1.8+. См. [Совместимость 1.8] (https://github.com/influxdata/influxdb-client-go/#influxdb-18-api-compatibility) для получения дополнительной информации и сведений о подключении.
Имя             | Описание
---------------- | -------------
`Имя` | Имя источника данных. Именно так вы обращаетесь к источнику данных в панелях и запросах. Мы рекомендуем что-то вроде «InfluxDB-Flux».
`По умолчанию` | Источник данных по умолчанию означает, что он будет предварительно выбран для новых панелей.
`URL` | Протокол HTTP, IP-адрес и порт вашего API InfluxDB. Порт API InfluxDB 2.0 по умолчанию 8086.
`Организация` | [Организация Influx](https://v2.docs.influxdata.com/v2.0/organizations/), которая будет использоваться для запросов Flux. Это также используется для макроса запроса `v.organization`.
`Жетон` | Маркер аутентификации, используемый для запросов Flux. В Influx 2.0 используйте [токен аутентификации influx для работы] (https://v2.docs.influxdata.com/v2.0/security/tokens/create-token/). Для притока 1.8 токен имеет вид «имя пользователя: пароль».
`Корзина по умолчанию` | (Необязательно) [Influx Bucket](https://v2.docs.influxdata.com/v2.0/organizations/buckets/), который будет использоваться для макроса `v.defaultBucket` в запросах Flux.
`Минимальный временной интервал` | (Необязательно) См. [Минимальный временной интервал]({{< relref "#min-time-interval" >}}).
`Максимальная серия`| (Необязательно) Ограничивает количество рядов/таблиц, которые обрабатывает Harvest. Уменьшите это число, чтобы предотвратить злоупотребление, и увеличьте его, если у вас много небольших временных рядов, и не все они показаны. По умолчанию 1000.

## Минимальный временной интервал

Нижний предел автогруппировки по временному интервалу. Рекомендуется установить частоту записи, например `1m`, если ваши данные записываются каждую минуту.
Этот параметр также можно переопределить/настроить на панели инструментов в параметрах источника данных. Важно отметить, что это значение **должно** быть отформатировано как
число, за которым следует действительный идентификатор времени, например. `1m` (1 минута) или `30s` (30 секунд). Поддерживаются следующие идентификаторы времени:
Идентификатор   | Описание
------------ | -------------
`y`          | год
`M`          | месяц
`w`          | неделя
`d`          | день
`h`          | час
`m`          | минута
`s`          | секунда
`ms`         | милисекунда

Вы можете использовать [язык запросов и сценариев Flux] (https://www.influxdata.com/products/flux/). Редактор запросов Flux от Harvest — это текстовый редактор для необработанных запросов Flux с поддержкой макросов.

## Поддерживаемые макросы

Макросы поддерживают копирование и вставку из [Chronograph] (https://www.influxdata.com/time-series-platform/chronograf/).
Macro пример        | Описание
------------         | -------------
`v.timeRangeStart`   | Будет заменено началом текущего активного выбора времени. Например, *2020-06-11T13:31:00Z*
`v.timeRangeStop`    |Будет заменено к концу текущего активного выбора времени. Например, *2020-06-11T14:31:00Z*
`v.windowPeriod`     |Будет заменена строкой интервала, совместимой с Flux, которая соответствует расчетному интервалу Harvest на основе временного диапазона активного выбора времени. Например, *5s*
`v.defaultBucket`    | Будет заменен параметром конфигурации источника данных «Корзина по умолчанию».
`v.organization`     | Будет заменен параметром «Организация» конфигурации источника данных.

Например, следующий запрос будет интерполирован как запрос, следующий за ним, при этом значения интервала и периода времени будут изменяться в соответствии с активным выбором времени\):

Запрос Harvest Flux:

```flux
from(bucket: v.defaultBucket)
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "cpu" or r["_measurement"] == "swap")
  |> filter(fn: (r) => r["_field"] == "usage_system" or r["_field"] == "free")
  |> aggregateWindow(every: v.windowPeriod, fn: mean)
  |> yield(name: "mean")
```

Интерполированный запрос отправляется в Influx:

```flux
from(bucket: "harvest")
  |> range(start: 2020-06-11T13:59:07Z, stop: 2020-06-11T14:59:07Z)
  |> filter(fn: (r) => r["_measurement"] == "cpu" or r["_measurement"] == "swap")
  |> filter(fn: (r) => r["_field"] == "usage_system" or r["_field"] == "free")
  |> aggregateWindow(every: 2s, fn: mean)
  |> yield(name: "mean")
```

Вы можете просмотреть интерполированную версию запроса с помощью инспектора запросов. Для получения дополнительной информации см.[Inspect a panel]({{< relref "../../panels/inspect-panel.md" >}}) and [Queries]({{< relref "../../panels/queries.md" >}}).
