---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://yandex.ru/dev/metrika/en/stat/segmentation.md
  - https://yandex.ru/dev/metrika/ru/stat/segmentation.md
  - href: ru/stat/segmentation.md
    type: text/markdown
    title: Markdown version
  - href: ../llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.ru/dev/metrika/ru/llms.txt

# Сегментация

Все методы API отчетов позволяют возвращать результаты, рассчитанные не только по всему сайту, но и по отдельному сегменту данных. Для задания сегмента используйте параметр `filters`.

Вы можете сегментировать запрос по группировкам и метрикам. Фильтры по группировкам будут применены к исходным (не сгруппированным) данным, фильтры по метрикам — уже к сгруппированным строкам результата.

Для задания фильтра в URL-адресе запроса необходимо использовать [URL-кодирование](https://ru.wikipedia.org/wiki/URL#.D0.9A.D0.BE.D0.B4.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_URL).

## Формат фильтра {#format}

```xml translate=no
attribute operator 'value'
```

где

- `attribute` — группировка или метрика. Например, `ym:s:trafficSource` или `ym:s:pageDepth`. Можно использовать [параметры](https://yandex.ru/dev/metrika/ru/stat/param.md), например, `ym:s:goal<goal_id>IsReached` — чтобы выделить события достижения цели, где `goal_id` — идентификатор цели.
    
    Метрика, по которой фильтруются данные, должна быть указана в параметре `metrics`. В отчетах сравнения ([сегментов](https://yandex.ru/dev/metrika/ru/stat/openapi/comparison.md) или [сравнение-drill down](https://yandex.ru/dev/metrika/ru/stat/openapi/comparison_drilldown.md)) фильтрация по метрике недоступна.

- `operator` — [оператор фильтрации](https://yandex.ru/dev/metrika/ru/stat/relations.md). Указывает какой тип фильтра будет применен. Например, `==` или `>=`. Для метрик поддерживаются операторы: !=, <, <=, ==, >, >=, для группировок операторы можно найти в разделе [Список группировок и метрик](https://yandex.ru/dev/metrika/ru/stat/attrandmetr/dim_all.md).

- `value` — значение для сравнения. В строке со значением должны быть экранированы символы `'` и `\` с помощью символа `\`.

{% note info %}

Язык запроса (параметр `lang`) влияет на значения фильтров. Указывайте параметр `lang=ru`, когда используете русские имена, например, `ym:s:regionCityName=='Санкт-Петербург'`.

{% endnote %}

Ограничения:

- количество уникальных группировок и метрик — до 10;
- количество отдельных фильтров — до 20;
- длина строки в фильтре — до 10 000 символов;
- количество значений в одном условии фильтрации — 100.

Например, чтобы получить данные только по визитам из Москвы, используйте фильтр:

```xml translate=no
filters=ym:s:regionCityName=='Moscow'
```

Для разных группировок доступны разные операторы фильтрации (например, см. столбец **Типы соответствий** в разделе [Источники](https://yandex.ru/dev/metrika/ru/stat/attributes/visits/source.md)).

Чтобы сочетать фильтры между собой в запросе, используйте бинарные операторы `AND` и `OR`, а также унарный оператор `NOT`:

```xml translate=no
&metrics=ym:s:visits&dimensions=ym:s:age&filters=NOT(ym:s:age!=18)
```

```xml translate=no
ym:s:regionCityName=='Москва' OR ym:s:regionCityName=='Saint Petersburg'
```

А также задавайте приоритет с помощью круглых скобок:

```xml translate=no
(ym:s:regionCityName=='Москва' OR ym:s:regionCityName=='Saint Petersburg') AND ym:s:sex=='male'
```

Фильтры по группировкам и по метрикам можно комбинировать только на верхнем уровне (вне скобок) и только через оператор `AND`.

Таким образом можно отслеживать статистику без визитов роботов — с помощью параметра `filters=ym:s:isRobot=='No'` ([пример](#robots)). Подробно о том, как Метрика определяет роботов, см. в [Справке](https://yandex.ru/support/metrica/general/robots.html).

## Множества и отношения {#sets}

В одном визите может быть несколько параметров визитов или просмотров. API позволяет осуществлять более точные запросы с помощью специального расширенного синтаксиса. Он может применяться в следующих случаях:

- Сегментация по группировкам из Множеств (например, см. раздел [Параметры визита](https://yandex.ru/dev/metrika/ru/stat/attributes/visitsbehavior_/visit_params.md)).
- Сегментация визитов по просмотрам.

### Синтаксис {#syntax}

В синтаксисе фильтров можно использовать следующие операторы:

```xml translate=no
[EXISTS|ALL|NONE](<filter>)
```

#|
|| **Оператор** | **Значение** | **Описание** ||
|| `EXISTS` | Содержит | Используйте, если требуется **наличие хотя бы одного** элемента множества/просмотра в визите, удовлетворяющего условию в скобках. ||
|| `ALL` | Все | Используйте, если требуется, чтобы **все** элементы множества/просмотры в визите удовлетворяли условию в скобках. ||
|| `NONE` | Не содержит | Используйте, если требуется, чтобы **ни один** элемент множества/просмотр в визите не удовлетворял условию в скобках. ||
|#

Например, фильтр по визитам, которые содержат параметр визита `client_id`, будет иметь вид:

```http translate=no
filters=EXISTS(ym:s:paramsLevel1=='client_id')
```

Метрики по множествам можно фильтровать, используя группировки этого множества:

```http translate=no
<metric>[<metric_filter>]
```

Например, сумма параметров визитов для всех параметров с ключом первого уровня `money`:

```http translate=no
metrics=ym:s:sumParams[ym:s:paramsLevel1=='money']
```

Вы можете использовать фильтры по множествам и без операторов `EXISTS`, `ALL`, `NONE`. В таком случае автоматически используется оператор `EXISTS`.

Список [логических операторов](https://yandex.ru/dev/metrika/ru/stat/relations.md).

### Примеры использования операторов {#example-segment}

Сумма числовых значений параметров визитов для всех параметров с ключом первого уровня `money`:

```http translate=no
metrics=ym:s:sumParams(ym:s:paramsLevel1=='money')
```

Количество параметров для `{"order":"created"}`:

```http translate=no
metrics=ym:s:paramsNumber(ym:s:paramsLevel1=='order' AND ym:s:paramsLevel2=='created')
```

Сегментация по визитам с параметром визита `{"new_client":"no"}`:

```http translate=no
filters=EXISTS(ym:s:paramsLevel1=='new_client' AND ym:s:paramsLevel2=='no')
```

Сегментация по визитам с параметром визита `{"new_client":"no"}`**и** параметром визита `{"orange_button":"yes"}`:

```http translate=no
filters=EXISTS(ym:s:paramsLevel1=='new_client' AND ym:s:paramsLevel2=='no') AND EXISTS(ym:s:paramsLevel1=='orange_button' AND ym:s:paramsLevel2=='yes')
```

Сегментация по визитам с параметром визита `{"new_client":"no"}` и **без** параметра визита `{"orange_button":"yes"}`:

```http translate=no
filters=EXISTS(ym:s:paramsLevel1=='new_client' AND ym:s:paramsLevel2=='no') AND NONE(ym:s:paramsLevel1=='orange_button' AND ym:s:paramsLevel2=='yes')
```

Количество визитов по запросам на URL, содержащий `category1`:

```http translate=no
metrics=ym:s:visits&filters=EXISTS(ym:pv:URL=@'category1')
```

Количество визитов по отсутствию запросов на URL, содержащий `category1`:

```http translate=no
metrics=ym:s:visits&filters=NONE(ym:pv:URL=@'category1')
```

Количество визитов по запросам на URL, который начинается с `https://example.com/tariff/`, включая указанную страницу:

```http translate=no
metrics=ym:s:visits&filters=EXISTS(ym:pv:URL=*'https://example.com/tariff/*')
```

Количество визитов по поисковым запросам, которые включают в себя фрагмент фразы:

```http translate=no
metrics=ym:s:visits&filters=EXISTS(ym:s:<attribution>SearchPhrase=*'*yandex*')
```

## Примеры использования сегментации {#examples}

Используйте данные примеры, чтобы формировать более детальные отчеты. При фильтрации используются значения группировок. О том, как получать эти значения, см. в разделе [Локализация и расшифровка значений группировок](https://yandex.ru/dev/metrika/ru/stat/localize.md).

С примерами можно ознакомиться в разделе [Примеры.Шаблоны](https://yandex.ru/dev/metrika/ru/stat/examples.md#segment).
