Сегментация
Все методы API отчетов позволяют возвращать результаты, рассчитанные не только по всему сайту, но и по отдельному сегменту данных. Для задания сегмента используйте параметр filters
.
Вы можете сегментировать запрос по группировкам и метрикам. Фильтры по группировкам будут применены к исходным (не сгруппированным) данным, фильтры по метрикам — уже к сгруппированным строкам результата.
Для задания фильтра в URL-адресе запроса необходимо использовать URL-кодирование.
Формат фильтра
attribute operator 'value'
где
-
attribute
— группировка или метрика. Например,ym:s:trafficSource
илиym:s:pageDepth
. Можно использовать параметры, например,ym:s:goal<goal_id>IsReached
— чтобы выделить события достижения цели, гдеgoal_id
— идентификатор цели.Метрика, по которой фильтруются данные, должна быть указана в параметре
metrics
. В отчетах сравнения (сегментов или сравнение-drill down) фильтрация по метрике недоступна. -
operator
— оператор фильтрации. Указывает какой тип фильтра будет применен. Например,==
или>=
. Для метрик поддерживаются операторы: !=, <, <=, ==, >, >=, для группировок операторы можно найти в разделе Список группировок и метрик. -
value
— значение для сравнения. В строке со значением должны быть экранированы символы'
и\
с помощью символа\
.
Примечание
Язык запроса (параметр lang
) влияет на значения фильтров. Указывайте параметр lang=ru
, когда используете русские имена, например, ym:s:regionCityName=='Санкт-Петербург'
.
Ограничения:
- количество уникальных группировок и метрик — до 10;
- количество отдельных фильтров — до 20;
- длина строки в фильтре — до 10 000 символов;
- количество значений в одном условии фильтрации — 100.
Например, чтобы получить данные только по визитам из Москвы, используйте фильтр:
filters=ym:s:regionCityName=='Moscow'
Для разных группировок доступны разные операторы фильтрации (например, см. столбец Типы соответствий в разделе Источники).
Чтобы сочетать фильтры между собой в запросе, используйте бинарные операторы AND
и OR
, а также унарный оператор NOT
:
&metrics=ym:s:visits&dimensions=ym:s:age&filters=NOT(ym:s:age!=18)
ym:s:regionCityName=='Москва' OR ym:s:regionCityName=='Saint Petersburg'
А также задавайте приоритет с помощью круглых скобок:
(ym:s:regionCityName=='Москва' OR ym:s:regionCityName=='Saint Petersburg') AND ym:s:sex=='male'
Фильтры по группировкам и по метрикам можно комбинировать только на верхнем уровне (вне скобок) и только через оператор AND
.
Таким образом можно отслеживать статистику без визитов роботов — с помощью параметра filters=ym:s:isRobot=='No'
(пример). Подробно о том, как Метрика определяет роботов, см. в Справке.
Множества и отношения
В одном визите может быть несколько параметров визитов или просмотров. API позволяет осуществлять более точные запросы с помощью специального расширенного синтаксиса. Он может применяться в следующих случаях:
- Сегментация по группировкам из Множеств (например, см. раздел Параметры визита).
- Сегментация визитов по просмотрам.
Синтаксис
В синтаксисе фильтров можно использовать следующие операторы:
[EXISTS|ALL|NONE](<filter>)
Оператор |
Значение |
Описание |
|
Содержит |
Используйте, если требуется наличие хотя бы одного элемента множества/просмотра в визите, удовлетворяющего условию в скобках. |
|
Все |
Используйте, если требуется, чтобы все элементы множества/просмотры в визите удовлетворяли условию в скобках. |
|
Не содержит |
Используйте, если требуется, чтобы ни один элемент множества/просмотр в визите не удовлетворял условию в скобках. |
Например, фильтр по визитам, которые содержат параметр визита client_id
, будет иметь вид:
filters=EXISTS(ym:s:paramsLevel1=='client_id')
Метрики по множествам можно фильтровать, используя группировки этого множества:
<metric>[<metric_filter>]
Например, сумма параметров визитов для всех параметров с ключом первого уровня money
:
metrics=ym:s:sumParams[ym:s:paramsLevel1=='money']
Вы можете использовать фильтры по множествам и без операторов EXISTS
, ALL
, NONE
. В таком случае автоматически используется оператор EXISTS
.
Список логических операторов.
Примеры использования операторов
Сумма числовых значений параметров визитов для всех параметров с ключом первого уровня money
:
metrics=ym:s:sumParams(ym:s:paramsLevel1=='money')
Количество параметров для {"order":"created"}
:
metrics=ym:s:paramsNumber(ym:s:paramsLevel1=='order' AND ym:s:paramsLevel2=='created')
Сегментация по визитам с параметром визита {"new_client":"no"}
:
filters=EXISTS(ym:s:paramsLevel1=='new_client' AND ym:s:paramsLevel2=='no')
Сегментация по визитам с параметром визита {"new_client":"no"}
и параметром визита {"orange_button":"yes"}
:
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"}
:
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
:
metrics=ym:s:visits&filters=EXISTS(ym:pv:URL=@'category1')
Количество визитов по отсутствию запросов на URL, содержащий category1
:
metrics=ym:s:visits&filters=NONE(ym:pv:URL=@'category1')
Количество визитов по запросам на URL, который начинается с https://example.com/tariff/
, включая указанную страницу:
metrics=ym:s:visits&filters=EXISTS(ym:pv:URL=*'https://example.com/tariff/*')
Количество визитов по поисковым запросам, которые включают в себя фрагмент фразы:
metrics=ym:s:visits&filters=EXISTS(ym:s:<attribution>SearchPhrase=*'*yandex*')
Примеры использования сегментации
Используйте данные примеры, чтобы формировать более детальные отчеты. При фильтрации используются значения группировок. О том, как получать эти значения, см. в разделе Локализация и расшифровка значений группировок.
С примерами можно ознакомиться в разделе Примеры.Шаблоны.