Перейти к содержанию

Язык сегментации

Pushwoosh предлагает мощный механизм сегментации для создания детализированных сегментов на основе значений Tag. Язык сегментации — это особый способ написания и комбинирования критериев сегментации для описания определенной группы пользователей, которые соответствуют этим критериям, и рассмотрения их как единого сегмента аудитории.

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

Основы

Anchor link to

Каждое устройство в вашей базе пользователей имеет определенные атрибуты, связанные с ним через значения Tag.

Например, предположим, что пользователь по имени Джейн живет в Токио, и ей 28 лет. У этого пользователя будут установлены следующие теги для ее устройства:

  • Имя: Джейн
  • Город: Токио
  • Возраст: 28

Чтобы нацелиться на Джейн, вам нужно будет описать сегмент следующим образом:

T("Name", eq, "Jane") * T("Age", eq, 28) * T("City", eq, "Tokyo")

Эта комбинация условий является фильтрующим выражением, используемым в языке сегментации для описания групп пользователей, то есть сегментов аудитории.

Фильтрующие выражения

Anchor link to

Фильтрующее выражение — это строка, которая содержит условие или комбинацию условий, описывающих нужный вам сегмент.

Условия

Anchor link to

Каждое условие описывает сегмент устройств, которые соответствуют критериям, указанным в этом условии.

Например, следующее условие создает сегмент пользователей, которые живут в Токио:

T("City", e, "Tokyo")

где

  • T — это Tag (тип условия);
  • eq — это применяемый оператор;
  • “Tokyo” — это значение Tag, связанное с устройствами пользователей.

Типы условий

Anchor link to

Для сегментации доступны следующие типы условий:

  • A (Application) — описывает сегмент устройств с установленным определенным приложением. Псевдонимы: App, Application;
  • T (Tag) — описывает сегмент устройств с указанными значениями Tag;
  • AT (App-specific tag) — применяется в сочетании с кодами приложений для тегов, специфичных для приложения. Псевдоним: Tag;
  • Event — описывает сегмент устройств, вызвавших определенное событие Pushwoosh;
  • Geo — описывает сегмент устройств в определенном географическом радиусе;
  • BTTS — описывает сегмент устройств на основе их лучшего времени для отправки;
  • Updated — описывает сегмент устройств на основе временной метки их последнего обновления;
  • Segment — ссылается на другой фильтр/сегмент по его коду;
  • Static (или S) — ссылается на предопределенный статический сегмент;

Операции с условиями

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")

Операторы условий для Tag

Anchor link to

Для каждого типа Tag применяются свои операторы.

Операторы для целочисленных тегов (Integer Tags)

Anchor link to
  • eq - равно указанному значению
  • noteq - не равно указанному значению
  • lte - меньше или равно указанному значению
  • gte - больше или равно указанному значению
  • in - любое из указанных значений
  • notin - не равно ни одному из указанных значений
  • between - в указанном диапазоне
  • any - устройства с любыми значениями, установленными для тега
  • notset - устройства без установленного значения для тега

Операторы для строковых тегов (String Tags)

Anchor link to
  • eq - равно указанному значению
  • noteq - не равно указанному значению
  • startswith - начинается с указанного префикса
  • endswith - заканчивается указанным суффиксом
  • contains - содержит указанную подстроку
  • in - равно любому из указанных значений
  • notin - не равно ни одному из указанных значений
  • any - устройства с любыми значениями, установленными для тега
  • notset - устройства без установленного значения для тега

Операторы для тегов-списков (List Tags)

Anchor link to
  • in - устройства с любым из указанных значений тега
  • notin - ни одно из указанных значений тега не связано с устройством
  • any - устройства с любыми значениями, установленными для тега
  • notset - устройства без установленного значения для тега

Операторы для тегов-дат (Date Tags)

Anchor link to
  • eq - равно указанной дате
  • noteq - не равно указанной дате
  • lte - до или в указанную дату
  • gte - после или в указанную дату
  • in - равно любой из указанных дат
  • notin - не равно ни одной из указанных дат
  • between - в указанном диапазоне
  • any - устройства с любыми значениями, установленными для тега
  • notset - устройства без установленного значения для тега
  • match - соответствует указанному месяцу года и дню месяца.
  • daysago eq - равно указанному количеству дней до текущего дня
  • daysago noteq - не равно указанному количеству дней до текущего дня
  • daysago lte - меньше или равно указанному количеству дней до текущего дня
  • daysago gte - больше или равно указанному количеству дней до текущего дня
  • daysago between - между указанным количеством дней
  • minutesago lte - меньше или равно указанному количеству минут до текущего момента
  • minutesago gte - больше или равно указанному количеству минут до текущего момента

Операторы для булевых тегов (Boolean Tags)

Anchor link to
  • eq - равно указанному значению
  • noteq - не равно указанному значению
  • any - устройства с любыми значениями, установленными для тега
  • notset - устройства без установленного значения для тега

Операторы для тегов-цен (Price Tags)

Anchor link to
  • eq - равно указанному значению
  • noteq - не равно указанному значению
  • lte - меньше или равно указанному значению
  • gte - больше или равно указанному значению
  • in - равно любому из указанных значений
  • notin - не равно ни одному из указанных значений
  • between - в указанном диапазоне
  • any - устройства с любыми значениями, установленными для тега
  • notset - устройства без установленного значения для тега

Операторы для тегов-версий (Version Tags)

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 - дата вызова события находится между указанным количеством дней
  • date minutesago lte - дата вызова события меньше или равна указанному количеству минут до текущего момента
  • date minutesago gte - дата вызова события больше или равна указанному количеству минут до текущего момента

Платформы событий

Anchor link to

Фильтрация событий по платформе, на которой они были вызваны.

  • platforms - список платформ (например, [“ios”, “android”])

Атрибуты событий

Anchor link to

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

Целочисленные атрибуты событий

Anchor link to
  • attribute “name” eq - атрибут равен указанному значению
  • attribute “name” noteq - атрибут не равен указанному значению
  • attribute “name” gte - атрибут больше или равен указанному значению
  • attribute “name” lte - атрибут меньше или равен указанному значению
  • attribute “name” between - атрибут в указанном диапазоне
  • attribute “name” in - атрибут равен любому из указанных значений
  • attribute “name” notin - атрибут не равен ни одному из указанных значений
  • attribute “name” any - любое значение, установленное для атрибута
  • attribute “name” notset - нет значения, установленного для атрибута

Строковые атрибуты событий

Anchor link to
  • attribute “name” eq - атрибут равен указанному значению
  • attribute “name” noteq - атрибут не равен указанному значению
  • attribute “name” startswith - атрибут начинается с указанного префикса
  • attribute “name” endswith - атрибут заканчивается указанным суффиксом
  • attribute “name” contains - атрибут содержит указанную подстроку
  • attribute “name” in - атрибут равен любому из указанных значений
  • attribute “name” notin - атрибут не равен ни одному из указанных значений
  • attribute “name” any - любое значение, установленное для атрибута
  • attribute “name” notset - нет значения, установленного для атрибута

Булевы атрибуты событий

Anchor link to
  • attribute “name” eq - атрибут равен true или false
  • attribute “name” noteq - атрибут не равен true или false

Атрибуты событий-дат

Anchor link to
  • attribute “name” eq - атрибут равен указанной дате
  • attribute “name” noteq - атрибут не равен указанной дате
  • attribute “name” gte - атрибут после или в указанную дату
  • attribute “name” lte - атрибут до или в указанную дату
  • attribute “name” between - атрибут в указанном диапазоне дат
  • attribute “name” in - атрибут равен любой из указанных дат
  • attribute “name” notin - атрибут не равен ни одной из указанных дат
  • attribute “name” daysago eq/noteq/gte/lte/between - атрибут относительно прошедших дней
  • attribute “name” minutesago gte/lte - атрибут относительно прошедших минут
  • attribute “name” any - любое значение, установленное для атрибута
  • attribute “name” notset - нет значения, установленного для атрибута

Атрибуты событий-цен

Anchor link to
  • attribute “name” eq - атрибут равен указанному значению цены
  • attribute “name” noteq - атрибут не равен указанному значению цены
  • attribute “name” gte - атрибут больше или равен указанной цене
  • attribute “name” lte - атрибут меньше или равен указанной цене
  • attribute “name” between - атрибут в указанном диапазоне цен
  • attribute “name” in - атрибут равен любой из указанных цен
  • attribute “name” notin - атрибут не равен ни одной из указанных цен
  • attribute “name” any - любое значение, установленное для атрибута
  • attribute “name” notset - нет значения, установленного для атрибута

Атрибуты событий-списков

Anchor link to
  • attribute “name” in - атрибут содержит любое из указанных значений
  • attribute “name” notin - атрибут не содержит ни одного из указанных значений
  • attribute “name” any - любое значение, установленное для атрибута
  • attribute “name” notset - нет значения, установленного для атрибута

Дополнительные типы условий

Anchor link to

Условие Geo

Anchor link to

Нацеливание на устройства на основе географического местоположения в указанном радиусе.

Синтаксис: Geo("<app-code>", <latitude>, <longitude>, <range-in-km>)

Условие BTTS

Anchor link to

Нацеливание на устройства по их лучшему времени для отправки уведомлений (час дня, 0-23).

Операторы:

  • any - установлено любое значение лучшего времени для отправки
  • eq - точное совпадение часа
  • noteq - не равно часу
  • gte - час больше или равен
  • lte - час меньше или равен

Условие Updated

Anchor link to

Фильтрация устройств по временной метке их последнего обновления.

Операторы:

  • gte - обновлено после или в указанную дату
  • lte - обновлено до или в указанную дату
  • between - обновлено в диапазоне дат

Условие Segment

Anchor link to

Ссылка на другой фильтр/сегмент по его коду.

Условие Static

Anchor link to

Ссылка на предопределенный статический сегмент. Можно использовать Static или сокращение S.

Флаги наличия устройств для условия Application

Anchor link to

Условия для приложений поддерживают дополнительные флаги для управления фильтрацией устройств и токенов:

  • with_tokens - устройства с токенами push-уведомлений
  • without_tokens - устройства без токенов push-уведомлений
  • with_devices - пользователи с зарегистрированными устройствами
  • without_devices - пользователи/профили без зарегистрированных устройств

Примеры фильтрующих выражений

Anchor link to

Базовые примеры

Anchor link to
  1. Устройства iOS и Android с установленным приложением и с push-токенами:
A("11111-11111", ["ios","android"], [with_tokens])
  1. Устройства iOS и Android с установленным приложением, но без push-токенов:
A("11111-11111", ["ios","android"], [without_tokens])
  1. Устройства iOS и Android с установленным приложением, независимо от наличия push-токенов:
A("11111-11111", ["ios","android"], [with_tokens, without_tokens])
  1. Все подписчики приложения, которые что-то купили в приложении:
AT("11111-11111", "In-App Purchase", gte, 1)

Продвинутые примеры

Anchor link to
  1. Пользователи в Токио, которые открывали приложение за последние 7 дней:
T("City", eq, "Tokyo") * Event("11111-11111", "App Open", date daysago lte 7)
  1. Пользователи, совершившие покупку на сумму более 50 долларов за последние 30 дней:
Event("11111-11111", "Purchase", attribute "total_price" gte 50.00, date daysago lte 30)
  1. Пользователи, чьи имена начинаются на “J” или заканчиваются на “e”:
T("Name", startswith, "J") + T("Name", endswith, "e")
  1. Активные пользователи iOS в радиусе 100 км от Нью-Йорка, которые недавно не совершали покупок:
A("11111-11111", ["ios"], [with_tokens]) * Geo("11111-11111", 40.7128, -74.0060, 100) \ Event("11111-11111", "Purchase", date daysago lte 30)
  1. Пользователи с лучшим временем для отправки между 9:00 и 17:00:
BTTS("11111-11111", gte 9) * BTTS("11111-11111", lte 17)
  1. Пользователи, которые вызвали определенное событие на Android или iOS за последний час:
Event("11111-11111", "Button Click", platforms ["android", "ios"], date minutesago lte 60)
  1. Устройства, обновленные за последние 3 месяца, с версией приложения 4.2 или выше:
Updated("11111-11111", gte "2024-07-01 00:00:00") * AT("11111-11111", "App Version", gte, "4.2")