跳到内容

细分语言

Pushwoosh 提供了一个强大的细分引擎,用于根据标签值构建精细的细分。细分语言是一种编写和组合细分标准的特定方式,用于描述符合这些标准的特定用户组,并将其视为单个受众细分。

本文介绍了细分语言的基本概念和语法,并提供了构建各种情况下的细分标准的综合示例。

基础知识

Anchor link to

您的用户群中的每个设备都通过标签值关联了特定的属性。

例如,假设一个名叫 Jane 的用户住在东京,年龄为 28 岁。该用户的设备将设置以下标签:

  • Name: Jane
  • City: Tokyo
  • Age: 28

要定位 Jane,您需要按如下方式描述一个细分:

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

这种条件的组合是在细分语言中用于描述用户组(即受众细分)的筛选表达式

筛选表达式

Anchor link to

筛选表达式是一个字符串,包含一个或多个描述您所需细分的条件。

每个条件都描述了符合该条件中指定标准的设备细分。

例如,以下条件构建了一个居住在东京的用户细分:

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

其中

  • T 是一个标签(条件类型);
  • eq 是要应用的运算符;
  • “Tokyo” 是用户设备关联的标签值。

条件类型

Anchor link to

以下条件类型可用于细分:

  • A (Application) – 描述安装了特定应用的设备细分。别名:AppApplication
  • T (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)

确定在筛选表达式中对条件执行操作的顺序。

例如,以下筛选表达式将首先获取年龄为 18 岁的 12345-67890 订阅者细分,然后减去该细分中的所有男性:

( A("12345-67890") * T("Age", eq, 18) ) \ T("Gender", eq, "Male")

标签条件运算符

Anchor link to

每种标签类型都应用其自己的运算符。

整数标签运算符

Anchor link to
  • eq - 等于指定值
  • noteq - 不等于指定值
  • lte - 小于或等于指定值
  • gte - 大于或等于指定值
  • in - 任何指定值之一
  • notin - 不等于任何指定值
  • between - 在指定范围内
  • any - 为该标签设置了任何值的设备
  • notset - 未为该标签设置值的设备

字符串标签运算符

Anchor link to
  • eq - 等于指定值
  • noteq - 不等于指定值
  • startswith - 以指定前缀开头
  • endswith - 以指定后缀结尾
  • contains - 包含指定子字符串
  • in - 等于任何指定值之一
  • notin - 不等于任何指定值
  • any - 为该标签设置了任何值的设备
  • notset - 未为该标签设置值的设备

列表标签运算符

Anchor link to
  • in - 具有任何指定标签值的设备
  • notin - 设备未关联任何指定标签值
  • any - 为该标签设置了任何值的设备
  • notset - 未为该标签设置值的设备

日期标签运算符

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 - 大于或等于当前时刻之前的指定分钟数

布尔标签运算符

Anchor link to
  • eq - 等于指定值
  • noteq - 不等于指定值
  • any - 为该标签设置了任何值的设备
  • notset - 未为该标签设置值的设备

价格标签运算符

Anchor link to
  • eq - 等于指定值
  • noteq - 不等于指定值
  • lte - 小于或等于指定值
  • gte - 大于或等于指定值
  • in - 等于任何指定值之一
  • notin - 不等于任何指定值
  • between - 在指定范围内
  • any - 为该标签设置了任何值的设备
  • notset - 未为该标签设置值的设备

版本标签运算符

Anchor link to
  • eq - 等于指定值
  • noteq - 不等于指定值
  • lte - 小于或等于指定值
  • gte - 大于或等于指定值
  • in - 等于任何指定值之一
  • notin - 不等于任何指定值
  • between - 在指定范围内
  • any - 为该标签设置了任何值的设备
  • notset - 未为该标签设置值的设备

事件条件运算符

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

地理位置条件

Anchor link to

根据指定半径内的地理位置定位设备。

语法: Geo("<app-code>", <latitude>, <longitude>, <range-in-km>)

BTTS 条件

Anchor link to

根据发送通知的最佳时间(一天中的小时,0-23)定位设备。

运算符:

  • any - 设置了任何最佳发送时间值
  • eq - 精确小时匹配
  • noteq - 不等于该小时
  • gte - 小时大于或等于
  • lte - 小时小于或等于

更新条件

Anchor link to

根据设备的最后更新时间戳筛选设备。

运算符:

  • gte - 在指定日期之后或当天更新
  • lte - 在指定日期之前或当天更新
  • between - 在日期范围内更新

细分条件

Anchor link to

通过其代码引用另一个筛选器/细分。

静态条件

Anchor link to

引用一个预定义的静态细分。可以使用 Static 或简写 S

应用条件设备存在标志

Anchor link to

应用条件支持额外的标志来控制设备和令牌的筛选:

  • with_tokens - 具有推送通知令牌的设备
  • without_tokens - 没有推送通知令牌的设备
  • with_devices - 具有已注册设备的用户
  • without_devices - 没有已注册设备的用户/个人资料

筛选表达式示例

Anchor link to

基本示例

Anchor link to
  1. 已安装应用并带有推送令牌的 iOS 和 Android 设备:
A("11111-11111", ["ios","android"], [with_tokens])
  1. 已安装应用但没有推送令牌的 iOS 和 Android 设备:
A("11111-11111", ["ios","android"], [without_tokens])
  1. 已安装应用的 iOS 和 Android 设备,无论它们是否有推送令牌:
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. 过去 30 天内消费超过 50 美元的用户:
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. 纽约 100 公里范围内最近没有购买的活跃 iOS 用户:
A("11111-11111", ["ios"], [with_tokens]) * Geo("11111-11111", 40.7128, -74.0060, 100) \ Event("11111-11111", "Purchase", date daysago lte 30)
  1. 最佳发送时间在上午 9 点到下午 5 点之间的用户:
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")