Язык сегментации
Pushwoosh предлагает мощный механизм сегментации для создания детализированных сегментов на основе значений тегов. Язык сегментации — это особый способ написания и комбинирования критериев сегментации для описания определенной группы пользователей, которые соответствуют этим критериям, и для работы с ними как с единым сегментом аудитории.
В этой статье описываются основные концепции и синтаксис языка сегментации, а также приводятся подробные примеры построения критериев сегментации для различных случаев.
Основы
Anchor link toКаждому устройству в вашей пользовательской базе присвоены определенные атрибуты через значения тегов.
Например, предположим, что пользователь по имени Джейн живет в Токио, и ей 28 лет. Для ее устройства будут установлены следующие теги:
- Name: Jane
- City: Tokyo
- Age: 28
Чтобы таргетировать Джейн, вам нужно будет описать сегмент следующим образом:
T("Name", eq, "Jane") * T("Age", eq, 28) * T("City", eq, "Tokyo")
Такая комбинация условий является фильтрующим выражением, используемым в языке сегментации для описания групп пользователей, то есть сегментов аудитории.
Фильтрующие выражения
Anchor link toФильтрующее выражение — это строка, содержащая условие или комбинацию условий, которые описывают нужный вам сегмент.
Условия
Anchor link toКаждое условие описывает сегмент устройств, соответствующих указанным в этом условии критериям.
Например, следующее условие создает сегмент пользователей, которые живут в Токио:
T("City", eq, "Tokyo")
где
- T — это тег (тип условия);
- eq — это применяемый оператор;
- “Tokyo” — это значение тега, присвоенное устройствам пользователей.
Типы условий
Anchor link toДля сегментации можно использовать четыре типа условий:
- A (Application) — описывает сегмент устройств с установленным конкретным приложением;
- T (Tag) — описывает сегмент устройств с указанными значениями тегов;
- AT (App-specific tag) — применяется в сочетании с кодами приложений для тегов, специфичных для конкретного приложения;
- Event — описывает сегмент устройств, вызвавших определенное событие Pushwoosh;
Операции с условиями
Anchor link toДля построения сложных сегментов к условиям в фильтрующем выражении можно применять следующие операции:
Объединение (+)
Anchor link toОбъединяет сегменты, то есть создает новый сегмент пользователей, которые соответствуют хотя бы одному из указанных условий.

Например, чтобы таргетировать пользователей, которые живут в Токио или Осаке, вам нужно будет описать сегмент с помощью следующих условий:
T("City", eq, "Tokyo") + T("City", eq, "Osaka")
Пересечение (*)
Anchor link toСоздает сегмент пользователей, принадлежащих обоим сегментам, описанным условиями. Таким образом, будут включены только те пользователи, которые соответствуют каждому из указанных вами условий.

Следующее выражение описывает сегмент пользователей, которые живут в Токио и указали свои имена:
T("City", eq, "Tokyo") * T("Name", any)
Разность (\)
Anchor link toСоздает сегмент пользователей, которые принадлежат к одному из описанных сегментов и не принадлежат к другому.

Пользователи, которые живут в Токио, но не указали свои имена, будут описаны следующим образом:
T("City", eq, "Tokyo") \ T("Name", any)
Скобки
Anchor link toОпределяют порядок выполнения операций с условиями в вашем фильтрующем выражении.
Например, следующее фильтрующее выражение сначала получит сегмент подписчиков приложения 12345-67890, которым 18 лет, а затем вычтет из этого сегмента всех мужчин:
( A("12345-67890") * T("Age", eq, 18) ) \ T("Gender", eq, "Male")
Операторы для условий с тегами
Anchor link toДля каждого типа тегов применяются свои операторы.
Операторы для целочисленных тегов (Integer)
Anchor link to- eq - равно указанному значению
- noteq - не равно указанному значению
- lte - меньше или равно указанному значению
- gte - больше или равно указанному значению
- in - любое из указанных значений
- notin - не равно ни одному из указанных значений
- between - в указанном диапазоне
- any - устройства с любым значением, установленным для тега
- notset - устройства, у которых не установлено значение для тега
Операторы для строковых тегов (String)
Anchor link to- eq - равно указанному значению
- noteq - не равно указанному значению
- in - равно любому из указанных значений
- notin - не равно ни одному из указанных значений
- any - устройства с любым значением, установленным для тега
- notset - устройства, у которых не установлено значение для тега
Операторы для тегов-списков (List)
Anchor link to- in - устройства с любым из указанных значений тега
- notin - ни одно из указанных значений тега не связано с устройством
- any - устройства с любым значением, установленным для тега
- notset - устройства, у которых не установлено значение для тега
Операторы для тегов с датой (Date)
Anchor link to- eq - равно указанной дате
- noteq - не равно указанной дате
- lte - до указанной даты или в этот день
- gte - после указанной даты или в этот день
- in - равно любой из указанных дат
- notin - не равно ни одной из указанных дат
- between - в указанном диапазоне
- any - устройства с любым значением, установленным для тега
- notset - устройства, у которых не установлено значение для тега
- match - соответствует указанному месяцу года и дню месяца.
- daysago eq - равно указанному количеству дней до текущей даты
- daysago noteq - не равно указанному количеству дней до текущей даты
- daysago lte - меньше или равно указанному количеству дней до текущей даты
- daysago gte - больше или равно указанному количеству дней до текущей даты
- daysago between - между указанным количеством дней
Операторы для логических тегов (Boolean)
Anchor link to- eq - равно указанному значению
- noteq - не равно указанному значению
- any - устройства с любым значением, установленным для тега
- notset - устройства, у которых не установлено значение для тега
Операторы для тегов с ценой (Price)
Anchor link to- eq - равно указанному значению
- noteq - не равно указанному значению
- lte - меньше или равно указанному значению
- gte - больше или равно указанному значению
- in - равно любому из указанных значений
- notin - не равно ни одному из указанных значений
- between - в указанном диапазоне
- any - устройства с любым значением, установленным для тега
- notset - устройства, у которых не установлено значение для тега
Операторы для тегов с версией (Version)
Anchor link to- eq - равно указанному значению
- noteq - не равно указанному значению
- lte - меньше или равно указанному значению
- gte - больше или равно указанному значению
- in - равно любому из указанных значений
- notin - не равно ни одному из указанных значений
- between - в указанном диапазоне
- any - устройства с любым значением, установленным для тега
- notset - устройства, у которых не установлено значение для тега
Операторы для условий с событиями (“Event”)
Anchor link toКоличество событий
Anchor link to- count gte - устройства, вызвавшие событие более или ровно n раз
- count lte - устройства, вызвавшие событие менее или ровно n раз
- count eq - устройства, вызвавшие событие ровно n раз
- count noteq - устройства, вызвавшие событие любое количество раз, кроме n
Дата события
Anchor link to- date gte - устройства, вызвавшие событие позже или ровно в указанную дату
- date lte - устройства, вызвавшие событие раньше или ровно в указанную дату
- date eq - устройства, вызвавшие событие ровно в указанную дату
- date noteq - устройства, вызвавшие событие в любое время, но не в указанную дату
- date in - устройства, вызвавшие событие в любую из указанных дат
- date notin - устройства, вызвавшие событие в любое время, но не в одну из указанных дат
- date between - устройства, вызвавшие событие в течение указанного периода
- date daysago eq - дата вызова события равна указанному количеству дней до текущей даты
- date daysago noteq - дата вызова события не равна указанному количеству дней до текущей даты
- date daysago lte - дата вызова события меньше или равна указанному количеству дней до текущей даты
- date daysago gte - дата вызова события больше или равна указанному количеству дней до текущей даты
- date daysago between - дата вызова события находится между указанным количеством дней
Пример фильтрующего выражения
Anchor link to- Устройства на iOS и Android с установленным приложением и с push-токенами:
A("11111-11111", ["ios","android"], [with_tokens])
- Устройства на iOS и Android с установленным приложением, но без push-токенов:
A("11111-11111", ["ios","android"], [without_tokens])
- Устройства на iOS и Android с установленным приложением, независимо от наличия push-токенов:
A("11111-11111", ["ios","android"], [with_tokens, without_tokens])
- Все подписчики приложения, которые что-либо купили в приложении:
AT( "11111-11111", "In-App Purchase", gte, 1)