+++
title = "Многозначные переменные"
weight = 600
+++

# Многозначные переменные

Интерполировать переменную с несколькими выбранными значениями сложно, поскольку не совсем понятно, как отформатировать несколько значений в строку, которая допустима в данном контексте, в котором используется переменная. Harvest пытается решить эту проблему, позволяя каждому плагину источника данных информировать механизм интерполяции шаблонов о том, какой формат использовать для нескольких значений.

> **Примечание:** Параметр **Custom all value** в переменной должен быть пустым, чтобы Harvest отформатировала все значения в одну строку. Если оставить его пустым, то Harvest объединит (сложит вместе) все значения в запросе. Что-то вроде `value1,value2,value3`. Если используется пользовательское значение `all`, то вместо этого значение будет чем-то вроде `*` или `all`.

## Многозначные переменные с графитовым источником данных

Graphite использует глобальные выражения. Переменная с несколькими значениями в этом случае будет интерполирована как `{host1,host2,host3}`, если текущее значение переменной равно *host1*, *host2* и *host3*.

## Многозначные переменные с источником данных Prometheus или InfluxDB

InfluxDB и Prometheus используют регулярные выражения, поэтому одна и та же переменная будет интерполирована как `(host1|host2|host3)`. Каждое значение также будет экранировано регулярным выражением. Если нет, то значение с управляющим символом регулярного выражения приведет к разрыву выражения регулярного выражения.

## Многозначные переменные с эластичным источником данных

Elasticsearch использует синтаксис запроса lucene, поэтому одна и та же переменная будет отформатирована как `("host1" ИЛИ "host2" ИЛИ "host3")`. В этом случае каждое значение должно быть экранировано таким образом, чтобы значение содержало только контрольные слова lucene и кавычки.

## Устранение неполадок с многозначными переменными

Автоматическое экранирование и форматирование могут вызвать проблемы, и может быть сложно понять логику, лежащую в их основе. Особенно для InfluxDB и Prometheus, где использование синтаксиса регулярных выражений требует, чтобы переменная использовалась в контексте оператора регулярных выражений.

Если вы не хотите, чтобы Harvest выполняла автоматическое экранирование и форматирование регулярных выражений, вам необходимо выполнить одно из следующих действий:
- Отключите опции ** С несколькими значениями** или ** Включить все опции**.
- Используйте [формат переменной raw]({{< ссылка на "advanced-variable-format-options.md#raw" >}}).
