如何自定义SQL创建标签

数据源

在系统通过SQL创建标签,可以使用的数据源主要有事件行为表、用户属性表以及标签表。其中标签表根据创建的标签数量不同,存在多张表的可能,表名按照smarttag_开头,后跟数字。有关事件行为和用户属性的详细介绍,请参考《数据模型》、《数据格式》。

表名称

说明

关联字段

event_vd

存储用户事件行为数据

xwho,distinct_id

profile_vd

存储用户属性数据

xwho,distinct_id

smarttag_*

存储用户标签数据

xwho,distinct_id

查询结果格式

在使用自定义SQL进行标签加工时,需注意遵从如下的格式返回查询数据。

查询仅支持返回三列数据,请按照xwho,distinct_id和所需返回的标签值顺序返回查询结果。

xwho为用户id,在用户未登录的情况下,xwho 会是一个方舟匿名生成的 ID,在已登录的情况下的,xwho 应及时被客户自己业务系统的ID所改写。

distinct_id为方舟的唯一ID,与xwho一一对应,在计算时会使用这个ID。

USER_SEX即为查询返回的字符型标签

动态时间范围

在之前的介绍中我们介绍到可以配置标签的更新周期,每天、每周、每月定期执行标签加工。在实际的加工过程中,会遇到需要每次加工计算前多少日、上月、当月等等动态时间范围的标签,这里将主要介绍如何在SQL中定义动态时间。

标签的默认加工时间在每日或指定周期的0点开始,因此now()代表了执行当日的时间,但由于是在0时开始执行,所以基本不会包含当日的数据,可以认为实际统计的日期在执行的上一日到前30日的时间范围。通过指定interval后的数值,可以计算如:

近1日: BETWEEN now()- interval '1' day and now()

近7日: BETWEEN now()- interval '7' day and now()

近30日:BETWEEN now()- interval '30' day and now()

易观方舟使用的查询引擎是presto ,关于presto的Date和Time类型的函数可以参考presto的官方文档:https://prestodb.github.io/docs/0.201/functions/datetime.html

SQL标签示例

1 将用户属性表属性作为标签

加工标签时,有时需要将上传至用户属性表的属性纳入标签体系,这时候通过SQL可以直接查询属性表,指定需要保存为标签的属性进行加工。

将用户属性作为标签保存的好处在于,标签表会保存标签的历史数据,如以上的user_level,在用户表中我们只能保存用户当前的user_level状态,如果我们想要去查询用户一个月前的用户等级通过属性表是无法回溯的,而在标签中可以回溯,甚至我们对比历史和当前的状态,选择用户级别发生明显变化的用户群出来。

2 首次访问距当前天数

3 最后购买距当前天数

4 RFM用户价值标签

在常用的用户分层标签中,RFM价值模型应用最为广泛,该模型通过三个基本的指标(最后购买时间距当前天数、购买次数、购买总金额)对用户进行分段。

5 首末次行为

将用户首次或最后一次发生某个行为的事件属性作为标签,如首次购买金额、最后访问平台等

6 最近30天访问天数

最后更新于

这有帮助吗?