跳至主要内容

虚拟属性

1. 概述#

对于已经上报的事件属性和用户属性,可以通过设置虚拟属性将原先上传的数据映射为另一种展示值或计算值,使初始埋点时的属性值不与展示值相同,并可在后期可对数据进行加工,提高灵活性。

虚拟属性通过 SQL 表达式对基础属性字段进行计算,得到一个新的属性字段。

可在事件属性管理中新建、管理虚拟事件属性,在用户属性管理中创建、管理虚拟用户属性。

2. 适用角色与用途#

角色用途
埋点设计人员(数据产品经理/分析师)对埋点字段进行转化,降低埋点方案设计的复杂度,弥补埋点设计、开发中的缺陷
数据分析人员(数据产品经理/分析师/运营)自助从现埋点数据中提取部分低频或少量场景使用的分析维度,快速响应分析需求

3. 新建虚拟属性#

点击事件属性管理、用户属性管理右上角「新建事件属性」或「新建用户属性」,选择「新建虚拟属性」。

新建虚拟属性

3.1. 填写基础信息#

3.1.1. 通用基础信息#

填入或选择属性名、显示名、数据类型、单位、说明,属性名默认以 #vp@ 开头。

通用基础信息

3.1.2. 虚拟事件属性的独有基础信息#

选择「关联主体」,不同的选择对应不同的基础属性(预置属性、自定义属性统称为基础属性)范围,以及该虚拟属性应用范围:

关联主体基础属性范围虚拟属性应用范围
无主体事件属性以设备或账号作为查询主体时
账号事件属性&账号属性
账号属性
以账号作为查询主体时
设备事件属性&设备属性
设备属性
以设备作为查询主体时

选择「关联事件」,不同的选择对应不同的关联逻辑,如下:

  • 自动识别:关联 SQL 代码所涉及基础事件属性所关联的事件的并集

  • 全部事件:关联全部事件,若新增事件则自动关联

  • 指定事件:关联指定事件

事件属性独有

3.1.3. 虚拟用户属性的独有基础信息#

选择「用户标识」,不同的选择对应不同的基础属性范围,以及该虚拟属性应用范围:

用户标识基础属性范围虚拟属性应用范围
账号账号属性以账号为查询主体时
设备设备属性以设备为查询主体时

户属性独有基础信息

3.2. 编辑虚拟属性的创建规则#

在左侧列表中可以快速获取当前可用的基础属性的信息,在文本框输入 SQL 表达式。

创建规则

虚拟属性的 SQL 表达式使用 presto 语法,可以访问 presto 文档 获取 presto 的语法以及函数的使用方法。

可通过「插入模板」功能,插入常用的应用场景所需的代码片段,通过替换字段名和修改逻辑即可简单快捷实现虚拟属性的创建。

3.3. 逻辑校验#

输入内容后,可点击「校验」检查基础属性范围、SQL 语法,校验成功则会在「调试」板块出现属性的值输入框。

输入校验值后查看结果,可以校验结果是否符合需求。如果符合需求,可以点击「下一步」完成属性创建,如果不符合预期则可继续修改创建规则,并重复校验。

逻辑校验

4. 虚拟属性的管理与使用#

4.1. 管理虚拟属性#

可在事件属性管理或用户属性管理页面中,对虚拟属性进行管理,虚拟事件属性、虚拟用户属性可创建数量上限均为 300,可以进行编辑、删除操作。

管理虚拟属性

4.2. 模型中使用的注意事项#

虚拟属性在使用上和通常的属性一致,根据类型决定其计算逻辑以及筛选条件。

虚拟事件属性可以在计算其关联的事件时被使用,关联关系可以自定义。

虚拟用户属性,可用场景等同一般的用户属性。

5. 最佳实践#

5.1. 弥补埋点开发中的字段类型上报错误#

错误将用户年龄字段「age」上报为文本,在重新发版前,现暂时紧急需对用户年龄进行分析:

cast("age" as int)

5.2. 计算用户生命周期#

根据用户的激活时间「activation_time」和事件发生时间「time」,现需计算用户行为发生时的生命周期:

date_diff('day', date("activation_time"), date("time"))

5.3. 通过算术运算完成单位转化#

已有以「分」为单位的支付金额字段「amount」,现需要将其转化为以「元」为单位:

"amount" / 100

5.4. 标识独立角色或其他所希望进行分析的主体#

一个用户可在不同服务器创建不同角色,根据用户身份标识字段「user_id」和服务器标识字段「server_id」生成标识角色的字段:

concat("server_id",  "user_id")

5.5. 截取字段获得复杂字段中的关键维度信息#

根据论坛帖子的 ID「post_id」(实例:10086202012310001)截取发帖月份:

substring("post_id", 6, 6)

5.6. 将页面按照功能模块分类#

埋点记录了用户访问的 url 地址,现需要了解用户使用的功能模块的情况:

case
    when "url" like '%home%' then '首页'
    when "url" like '%store%' then '商城'
    when "url" like '%stage%' then '剧情'
    else '其他'
end