跳到主要内容
版本:4.1

创建规则标签

一、在 客户数据平台 > 标签管理 中点击 新建用户标签 进入用户标签创建弹窗

图 7

二、选择 标签类型 并填写标签基本信息

是否必填说明限制条件
名称用户标签名称名称唯一,不可重复
最大输入 30 个字符
标识符用户标签标识符
可用于数据库和 API 查询
名称唯一,不可重复
最大输入 100 个字符
仅允许大小写英文、数字、以及下划线
描述用户标签的业务意义描述最大输入 150 个字符
所属分类选择自定义的用户标签分类如不选择则为未分类

三、点击 下一步 开始定义标签规则

3.1 基础指标值

把事件的统计结果作为标签值,对用户打标。点击查看说明

控件说明

说明限制条件
时间选择器选择打标事件发生时间
事件选择器选择打标事件支持埋点事件和虚拟事件
维度+度量选择器选择打标事件计算逻辑支持选择字符串、整数、小数类型事件属性
过滤选择器选择事件过滤条件支持选择事件属性和用户属性

维度+度量选择器

系统根据不同数值类型的事件属性,支持以下度量方式:

维度总和(度量)平均值(度量)中位数(度量)累计占比(度量)去重数(度量)
次数---
总天数-----
整数、小数事件属性-
字符串事件属性----

统计逻辑

例 1: 过去 30 天,直接访问次数总和

业务定义:使用过去 30 天,每个用户直接访问的次数作为标签值,对用户进行打标

select
gio_id as gio_id
,count(1) as tag_value -- 事件次数
from olap.event
where account_id = 'bc675c65b3b0290e' -- 项目ID
and dateDiff( 'day' , dt , today()) between 1 and 30 -- 时间筛选
and event_key = '$visit' -- 事件标识符
and $referrer_type is null -- 事件过滤
group by gio_id

例 2: 过去 30 天,总访问天数

业务定义:使用过去 30 天,每个用户访问的总天数作为标签值,对用户进行打标

select
gio_id as gio_id
,count( distinct dt ) as tag_value -- 事件总天数
from olap.event
where account_id = 'bc675c65b3b0290e' -- 项目ID
and dateDiff( 'day' , dt , today()) between 1 and 30 -- 时间筛选
and event_key = '$visit' -- 事件标识符
group by gio_id

例 3: 过去 30 天,订单支付金额总和

业务定义:使用过去 30 天,每个用户订单支付总金额作为标签值,对用户进行打标

select
gio_id as gio_id
,sum( var_payamount ) as tag_value -- 订单支付总金额
from olap.event
where account_id = 'bc675c65b3b0290e' -- 项目ID
and dateDiff( 'day' , dt , today()) between 1 and 30 -- 时间筛选
and event_key = 'payment' -- 事件标识符
and var_payamount is not null
group by gio_id

例 4: 过去 30 天,订单支付金额平均值

业务定义:使用过去 30 天,每个用户订单支付金额的平均值作为标签值,对用户进行打标

注 1: 仅统计有效订单(金额有值)的订单金额平均值 注 2: 计算结果保留小数点后 2 位有效数字

select
gio_id as gio_id
,round( avg( var_payamount ) , 2 ) as tag_value -- 金额平均值
from olap.event
where account_id = 'bc675c65b3b0290e' -- 项目ID
and dateDiff( 'day' , dt , today()) between 1 and 30 -- 时间筛选
and event_key = 'payment' -- 事件标识符
and var_payamount is not null
group by gio_id

例 5: 过去 30 天,订单支付金额累计占比

业务定义:使用过去 30 天,每个用户 3c 类产品支付金额占总支付金额的占比作为标签值,对用户进行打标

注 1: 仅统计有效订单(金额有值) 注 2: 计算结果保留小数点后 2 位有效数字

select
gio_id as gio_id
,round( sum( if( var_product_layer1 = '3c' , var_payamount , 0 ) ) /
sum( var_payamount ) , 2 ) as tag_value -- 金额累计占比
from olap.event
where account_id = 'bc675c65b3b0290e' -- 项目ID
and dateDiff( 'day' , dt , today()) between 1 and 30 -- 时间筛选
and event_key = 'payment' -- 事件标识符
and var_payamount is not null
group by gio_id

例 6: 过去 30 天,订单支付优惠券类型去重数

业务定义:使用过去 30 天,每个用户订单支付中使用优惠券类型去重个数作为标签值,对用户进行打标

注:标签计算结果中, 过去 30 天,未发生订单支付事件的用户标签值为 null 过去 30 天,发生订单支付但未使用优惠券的用户标签值为 0 过去 30 天,发生订单支付且使用优惠券的用户标签值为 1,2,3...

select
gio_id as gio_id
,count( distinct var_coupon_type ) as tag_value -- 优惠券类型去重数
from olap.event
where account_id = 'bc675c65b3b0290e' -- 项目ID
and dateDiff( 'day' , dt , today()) between 1 and 30 -- 时间筛选
and event_key = 'payment' -- 事件标识符
group by gio_id

例 7: 过去 180 天,浏览房产价格的中位数

业务定义:使用过去 180 天,每个用户浏览房产价格的中位数作为标签值,对用户进行打标

注:标签计算结果中, 过去 180 天,未浏览房产的用户标签值为 null 过去 180 天,浏览房产的用户标签值为其浏览价格的中位数

select
gio_id as gio_id
,quantileExactInclusive(0.5)(var_property_price) as tag_value -- 房产价格中位数
from olap.event
where account_id = 'bc675c65b3b0290e' -- 项目ID
and dateDiff( 'day' , dt , today()) between 1 and 180 -- 时间筛选
and event_key = 'property_view' -- 事件标识符
and var_property_price is not null
group by gio_id

3.2 最大值/最小值的事件属性

按事件属性分组后,对发生次数或整数、小数类型事件属性求和最多或最少的分组属性值作为标签值,对用户打标。点击查看说明

控件说明

说明限制条件
时间选择器选择打标事件发生时间
事件选择器选择打标事件支持埋点事件和虚拟事件
排序维度选择器选择计算维度和排序逻辑支持整数、小数类型事件属性
支持最多和最少排序逻辑
分组维度选择器选择分组维度支持字符串类型事件属性
过滤选择器选择事件过滤条件支持选择事件属性和用户属性

统计逻辑

例 1:过去 30 天,购买金额最多的一级品类

业务定义:将过去 30 天每个用户订单支付金额总和按商品一级品类分组,使用支付金额最多的分组品类名称作为标签值,对用户进行打标

注 1:仅从商品一级品类名称(分组维度)非空值中进行排序打标 注 2:当多种一级品类(分组维度)支付总额并列最多时,随机返回其中某个一级品类名称

select
gio_id as gio_id
,groupArray(1)(group_attribute)[1] as tag_value
from
(
select
gio_id as gio_id
,var_product_layer1 as group_attribute -- 分组维度
,sum( var_payamount ) as order_attribute -- 排序维度
from olap.event
where account_id = 'bc675c65b3b0290e' -- 项目ID
and dateDiff( 'day' , dt , today()) between 1 and 30 -- 时间筛选
and event_key = 'payment' -- 事件标识符
and var_product_layer1 is not null
group by gio_id
,var_product_layer1
order by gio_id,order_attribute desc
)
group by gio_id

3.3 首次/末次的事件属性

将事件第一次或最后一次发生的字符串类型事件属性作为标签值,对用户打标。点击查看说明

控件说明

说明限制条件
时间选择器选择打标事件发生时间
事件选择器选择打标事件支持埋点事件和虚拟事件
逻辑选择器选择计算逻辑支持首次发生和末次发生
维度选择器选择打标维度支持距今天数、日期和字符串事件属性
过滤选择器选择事件过滤条件支持选择事件属性和用户属性

编辑限制

首次/末次的事件属性 支持将某个事件的发生时距今天数(小数)、发生时的具体日期(日期)和发生时的事件属性(字符串)作为标签值,对用户打标。且已保存标签支持在分析工具、群体画像等应用中作为维度过滤和维度拆解使用。为保证标签在应用中平稳使用,标签编辑时禁止修改标签的数值类型。因此编辑标签时具有以下限制:

当前选择修改-距今天数修改-日期修改-事件属性
距今天数--
日期--
事件属性--

统计逻辑

例 1:过去 30 天,首次订单支付距今天数

业务定义:使用过去 30 天,每个用户首次发生订单支付距今天数作为标签值,对用户进行打标

select
gio_id as gio_id
,groupArray(1)(target_atttribute)[1] as tag_value
from
(
select
gio_id as gio_id
,dt as order_attribute
,dateDiff( 'day' , dt , today()) as target_atttribute
from olap.event
where account_id = 'bc675c65b3b0290e' -- 项目ID
and dateDiff( 'day' , dt , today()) between 1 and 30 -- 时间筛选
and event_key = 'payment' -- 事件标识符
order by gio_id,dt
)
group by gio_id

例 2:过去 30 天,末次订单支付日期

业务定义:使用过去 30 天,每个用户末次发生订单支付的具体日期作为标签值,对用户进行打标

select
gio_id as gio_id
,groupArray(1)(target_atttribute)[1] as tag_value
from
(
select
gio_id as gio_id
,dt as order_attribute
,dt as target_atttribute
from olap.event
where account_id = 'bc675c65b3b0290e' -- 项目ID
and dateDiff( 'day' , dt , today()) between 1 and 30 -- 时间筛选
and event_key = 'payment' -- 事件标识符
order by gio_id,dt desc
)
group by gio_id

例 3:过去 30 天,首次使用的优惠券类型

业务定义:使用过去 30 天,每个用户发生订单支付时,首次使用的优惠券类型作为标签值,对用户进行打标

注 1:仅从优惠券类型非空值中进行排序打标,即有使用优惠券的用户 注 2:以天粒度排序,如果一天内用户使用多个优惠券,随机返回其中某个优惠券名称

select
gio_id as gio_id
,groupArray(1)(target_atttribute)[1] as tag_value
from
(
select
gio_id as gio_id
,dt as order_attribute
,var_conpon_type as target_atttribute
from olap.event
where account_id = 'bc675c65b3b0290e' -- 项目ID
and dateDiff( 'day' , dt , today()) between 1 and 30 -- 时间筛选
and event_key = 'payment' -- 事件标识符
and var_conpon_type is not null
order by gio_id,dt
)
group by gio_id

3.4 列表类的事件属性

将事件的全部事件属性列表作为标签值,对用户打标,常用于偏好类标签。点击查看说明

控件说明

说明限制条件
时间选择器选择打标事件发生时间
事件选择器选择打标事件支持埋点事件和虚拟事件
维度选择器选择打标维度支持字符串事件属性
过滤选择器选择事件过滤条件支持选择事件属性和用户属性

统计逻辑

例 1:过去 30 天,使用的全部优惠券类型偏好

业务定义:使用过去 30 天,每个用户使用的全部优惠券类型(去重)作为标签值,对用户进行打标

注 1:仅筛选使用优惠券的订单 注 2:优惠券类型去重

select
gio_id as gio_id
,groupArray(target_atttribute) as tag_value
from
(
select
gio_id as gio_id
,var_conpon_type as target_atttribute
from olap.event
where account_id = 'bc675c65b3b0290e' -- 项目ID
and dateDiff( 'day' , dt , today()) between 1 and 30 -- 时间筛选
and event_key = 'payment' -- 事件标识符
and var_conpon_type is not null
group by gio_id,var_conpon_type
)
group by gio_id

3.5 计算标签

计算标签支持将数值型的用户属性及规则标签,通过四则运算生成新标签。点击查看说明

控件说明

说明限制条件
属性选择器选择用户特征支持选择整数型和小数型的用户属性和用户标签(除分层标签、用户评分标签、SQL标签)
计算公式标签的四则运算公式,引用运算指标中各运算项的英文字母代号做计算

图 9

统计逻辑

如果一个用户同时满足第 1 分层和第 2 分层的规则,优先被计算在第 1 分层里,第 2 分层不再计算

例 1:近30天用户客单价

业务定义:

  • 近30天用户笔单价=近30天用户购买金额÷近30天用户购买次数 图 8
SELECT  gio_id
,tag_j30tgmje / tag_j30tgmcs AS tag_value
FROM user_view
WHERE tag_j30tgmje IS NOT NULL
AND tag_j30tgmcs IS NOT NUL

3.6 用户评分标签

用户评分标签支持对用户属性/用户标签/用户身份信息分别进行评分加总生成新标签。点击查看说明

控件说明

用户评分标签支持根据 用户行为用户属性 自定义评分规则。

用户行为 - 做过

说明限制条件
时间选择器选择事件发生时间
事件选择器选择事件支持埋点事件和虚拟事件
维度+度量选择器选择事件计算逻辑支持选择次数总和
支持选择整数、小数类型事件属性总和
行为条件选择器选择事件计算结果的筛选条件
过滤选择器选择事件过滤条件支持选择事件属性和用户属性
评分器设定当前条件的评分规则支持加分、减分,且必须输入正整数

图 10

用户行为 - 未做过

说明限制条件
时间选择器选择事件发生时间
事件选择器选择事件支持埋点事件和虚拟事件
过滤选择器选择事件过滤条件支持选择事件属性和用户属性
评分器设定当前条件的评分规则支持加分、减分,且必须输入正整数

图 12

用户属性

说明限制条件
属性选择器选择用户特征支持选择用户身份、用户属性和用户标签(除分层标签)
过滤选择器选择用户特征过滤条件
评分器设定当前条件的评分规则支持加分、减分,且必须输入正整数

图 13

统计逻辑

分别计算每个用户评分规则进行评分赋值,然后进行求和加总。评分器选择加分时,该评分项为正数;选择减分时,该评分项为负数。

例 1:用户活跃分

业务定义:

  • 近30天浏览次数1次以上 加10分
  • 近30天加购次数1次以上 加50分
  • 近30天看过直播 加100分 图 14
SELECT  gio_id
,SUM(CASE WHEN flag_A1 = 1 THEN 10 WHEN flag_A2 = 1 THEN 50 WHEN flag_A3 = 1 THEN 100 END) AS tag_value
FROM
(
SELECT gio_id
,MAX(flag = 'A1') AS flag_A1
,MAX(flag = 'A2') AS flag_A2
,MAX(flag = 'A3') AS flag_A3
FROM
(
SELECT gio_id AS gio_id
,'A1' AS flag
FROM
(
SELECT gio_id AS gio_id
,COUNT(1) AS term0
FROM event_view
WHERE ((event_key = '$page'))
AND event_time >= '2022-08-27'
AND event_time < '2022-09-26'
GROUP BY gio_id
HAVING term0 >= 1.0
) A1
UNION ALL
SELECT gio_id AS gio_id
,'A2' AS flag
FROM
(
SELECT gio_id AS gio_id
,COUNT(1) AS term0
FROM event_view
WHERE ((event_key = 'add_to_cart'))
AND event_time >= '2022-08-27'
AND event_time < '2022-09-26'
GROUP BY gio_id
HAVING term0 >= 1.0
) A2
UNION ALL
SELECT gio_id AS gio_id
,'A3' AS flag
FROM
(
SELECT gio_id AS gio_id
,COUNT(1) AS term0
FROM event_view
WHERE ((event_key = 'E_JoinLive'))
AND event_time >= '2022-09-19'
AND event_time < '2022-09-26'
GROUP BY gio_id
HAVING term0 >= 1.0
) A3
) tbl
GROUP BY gio_id
)
GROUP BY gio_id;

例 2:用户价值分

业务定义:

  • 关注公众号 加100分
  • 取关公众号 减100分
  • 用户为女性 加50分
  • 近30天购买金额大于等于300 加300分 图 15
SELECT  gio_id
,SUM(CASE WHEN flag_A2 = 1 THEN -100 WHEN flag_A1 = 1 THEN 100 WHEN flag_A3 = 1 THEN 50 WHEN flag_A4 = 1 THEN 300 END) AS tag_value
FROM
(
SELECT gio_id
,MAX(flag = 'A2') AS flag_A2
,MAX(flag = 'A1') AS flag_A1
,MAX(flag = 'A3') AS flag_A3
,MAX(flag = 'A4') AS flag_A4
FROM
(
SELECT gio_id AS gio_id
,'A2' AS flag
FROM
(
SELECT gio_id AS gio_id
,COUNT(1) AS term0
FROM event_view
WHERE ((event_key = 'LEGO_focus'))
AND event_time >= '2020-09-01'
AND event_time < '2022-09-27'
GROUP BY gio_id
HAVING term0 >= 1.0
) A2
UNION ALL
SELECT gio_id AS gio_id
,'A1' AS flag
FROM
(
SELECT gio_id AS gio_id
,COUNT(1) AS term0
FROM event_view
WHERE ((event_key = 'LEGO_scancode'))
AND event_time >= '2020-09-01'
AND event_time < '2022-09-27'
GROUP BY gio_id
HAVING term0 >= 1.0
) A1
UNION ALL
SELECT term0 AS gio_id
,'A3' AS flag
FROM
(
SELECT gio_id AS term0
FROM user_view
WHERE ((usr_$basic_gender = 'Female'))
) A3
UNION ALL
SELECT term0 AS gio_id
,'A4' AS flag
FROM
(
SELECT gio_id AS term0
FROM user_view
WHERE ((tag_j30tgmje >= 300.0))
) A4
) tbl
GROUP BY gio_id
)
GROUP BY gio_id;

3.7 分层标签

根据自定义规则对用户进行分层打标,常用于生命周期、RFM、线索分层、用户分层等业务模型标签的构建。点击查看说明

控件说明

分层标签支持根据 用户行为用户属性 自定义用户分层。

注 1:分层名称不能为空,且不同分层名称不能重复 注 2:最多支持 10 个用户分层 注 3:每个分层最多支持 10 条筛选规则

用户行为 - 做过

说明限制条件
时间选择器选择事件发生时间
事件选择器选择事件支持埋点事件和虚拟事件
维度+度量选择器选择事件计算逻辑支持选择次数总和
支持选择整数、小数类型事件属性总和
行为条件选择器选择事件计算结果的筛选条件
过滤选择器选择事件过滤条件支持选择事件属性和用户属性

用户行为 - 未做过

说明限制条件
时间选择器选择事件发生时间
事件选择器选择事件支持埋点事件和虚拟事件
过滤选择器选择事件过滤条件支持选择事件属性和用户属性

用户属性

说明限制条件
属性选择器选择用户特征支持选择用户身份、用户属性和用户标签(除分层标签)
过滤选择器选择用户特征过滤条件

编辑限制

分层标签 为防止计算循环依赖,分层标签暂不支持引用SQL标签

统计逻辑

如果一个用户同时满足第 1 分层和第 2 分层的规则,优先被计算在第 1 分层里,第 2 分层不再计算

例 1:用户活跃度分层

业务定义:

  • 高活跃:过去 30 天,活跃天数大于 3
  • 中活跃:过去 30 天,活跃天数大于 1 且小于等于 3
  • 低活跃;过去 30 天,活跃天数等于 1
  • 流失:过去 30 天,未活跃(即所有用户中,未发生任意行为的用户)

select
u.gio_id as gio_id
,case when e.activity_days > 3 then '高活跃'
when e.activity_days > 1 then '中活跃'
when e.activity_days = 1 then '低活跃'
else '流失'
end as tag_value
from
(
select
gio_id as gio_id
from olap.user
where usr_$first_day is not null
) u -- 全量用户
left join
(
select
gio_id as gio_id
,count( distinct dt ) as activity_days
from olap.event
where account_id = 'bc675c65b3b0290e' -- 项目ID
and dateDiff( 'day' , dt , today()) between 1 and 30 -- 时间筛选
and event_key = '$anyevent' -- 事件标识符
group by gio_id
) e -- 活跃天数
on u.gio_id = e.gio_id

例 2:用户价值分层

业务定义:

  • 高价值: 用户行为:过去 180 天,订单支付金额总和大于 1 万元 且 用户属性:最后一次订单支付时间在过去 30 天之内
  • 中价值: 用户行为:过去 180 天,订单支付金额总和大于 6 千元 且 ( 用户属性:交易频次大于 5 或 用户属性:会员等级为付费会员 )
  • 低价值: 用户行为:过去 180 天,订单支付金额总和大于 3 千元

仅对符合分层定义的用户打标,其余用户标签值为 null

sql 示例仅为业务逻辑示意,当使用 sql 标签或 zeppelin 查询时,需要进行 sql 查询性能优化

select
u.gio_id as gio_id
,case when e.pay_sum > 10000
and dateDiff( 'day' , u.tag_last_pay_date , today() ) between 0 and 29
then '高价值'
when e.ay_sum > 6000
and ( y.tag_payment_freq > 5
or u.usr_membership = '付费会员')
then '中价值'
when e.pay_sum > 300
then '低价值'
end as tag_value
from
(
select
gio_id
,tag_last_pay_date
,tag_payment_freq
,usr_membership
from olap.user
where usr_$first_day is not null
) u
left join
(
select
gio_id as gio_id
,sum( var_payamount ) as pay_sum
from olap.event
where account_id = 'bc675c65b3b0290e' -- 项目ID
and dateDiff( 'day' , dt , today()) between 1 and 180 -- 时间筛选
and event_key = 'payment' -- 事件标识符
group by gio_id
) e
having tag_value is not null