细分语言
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) – 描述安装了特定应用的设备细分。别名:App、Application;
- 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- 已安装应用并带有推送令牌的 iOS 和 Android 设备:
A("11111-11111", ["ios","android"], [with_tokens])- 已安装应用但没有推送令牌的 iOS 和 Android 设备:
A("11111-11111", ["ios","android"], [without_tokens])- 已安装应用的 iOS 和 Android 设备,无论它们是否有推送令牌:
A("11111-11111", ["ios","android"], [with_tokens, without_tokens])- 所有在应用内购买过东西的应用订阅者:
AT("11111-11111", "In-App Purchase", gte, 1)高级示例
Anchor link to- 过去 7 天内打开过应用的东京用户:
T("City", eq, "Tokyo") * Event("11111-11111", "App Open", date daysago lte 7)- 过去 30 天内消费超过 50 美元的用户:
Event("11111-11111", "Purchase", attribute "total_price" gte 50.00, date daysago lte 30)- 名字以 “J” 开头或以 “e” 结尾的用户:
T("Name", startswith, "J") + T("Name", endswith, "e")- 纽约 100 公里范围内最近没有购买的活跃 iOS 用户:
A("11111-11111", ["ios"], [with_tokens]) * Geo("11111-11111", 40.7128, -74.0060, 100) \ Event("11111-11111", "Purchase", date daysago lte 30)- 最佳发送时间在上午 9 点到下午 5 点之间的用户:
BTTS("11111-11111", gte 9) * BTTS("11111-11111", lte 17)- 过去一小时内在 Android 或 iOS 上触发了特定事件的用户:
Event("11111-11111", "Button Click", platforms ["android", "ios"], date minutesago lte 60)- 过去 3 个月内更新且应用版本为 4.2 或更高的设备:
Updated("11111-11111", gte "2024-07-01 00:00:00") * AT("11111-11111", "App Version", gte, "4.2")