虚拟属性可以满足属性值二次加工的需求,您可以通过编写SQL表达式中的四则运算和部分字符串操作函数来创建一个虚拟属性,后续用于用户属性、部分或全部事件属性。本文为您介绍虚拟属性的注意事项和使用指导。
一个应用允许创建的虚拟属性个数有限,当创建的虚拟属性数量达到上限后,“创建虚拟属性”按钮将不可点击。
登录DataFinder控制台后,单击顶部导航栏数据管理>元数据管理>虚拟属性,进入虚拟属性页面。
单击页面右上角的创建虚拟属性按钮,新建一个虚拟属性,在弹出的侧边框中配置虚拟属性参数。
配置基本信息。
参数 | 配置说明 |
---|---|
属性名称 | 必填,仅可命名为英文和字符。规则为[a-zA-Z_][0-9a-zA-Z_]*,长度100 字符以内。大小写敏感(与现状保持一致)。我们会增加默认前缀为 $vp |
属性类型 |
|
展示名 & 属性描述 | 自定义虚拟属性的属性名和描述信息。 |
可用范围 | 配置虚拟叙述的可见范围。
|
数据类型 | 配置虚拟属性的取值数据类型:string,int,float,datetime,list |
关联方式 | 配置虚拟属性的关联方式:
关联事件的异同说明如下: |
配置表达式。填写对属性的加工的 SQL 表达式片段。
注意
说明
如果您同时开通了DataFinder和CDP,SaaS-云原生环境中,创建虚拟属性时,虚拟属性的表达式支持引用cdp标签创建虚拟事件属性和虚拟用户属性,语法为tags.xxx
。
123
,user_profiles.123
。说明
SaaS-云原生环境中,创建虚拟事件属性时,支持您通过手动填写SQL表达式直接引用业务维度(item表)数据来创建虚拟事件属性,例如,concat(item_profiles.fund.name, event_params.price)
。
单击页面右下角的在线结果测试,测试表达式配置结果。在完整输入配置表达式后,可以通过自定义原始value值,即时查看加工后的属性值。
完成以上操作,单击确定,即可创建一个虚拟属性。
【举例 1】
event_params.sale_price - event_params.cost_price
【举例 2】
event_params.principal + event_params. principal * pow(event_params.interest_rate, event_params.duration)
【举例 1】
示例场景:假设埋点的时候有属性:事件属性「网址 full_url」,希望提取出域名信息。比如https://console.volcengine.com/datafinder/app/178497/dashboard/6807670720953319944
,希望提取出console.volcengine.com
SQL 表达式:
domain(event_params.full_url)
具体的URL相关函数,具体的URL相关函数,请请参考SQL自定义查询(SaaS)中的函数列表。
【举例 2】
示例场景:假设埋点的时候有属性:事件属性「内容详情 body_json」,属性内容为json格式的字符串,比如:
{"product": "datafinder", "user_name": "管理员"}
希望提取出product信息: datafinder
SQL 表达式:
JSONExtractString(event_params.body_json,'product')
具体的JSON相关函数,请请参考SQL自定义查询(SaaS)中的函数列表。
【举例 1】
if(event_params.product_name IS NOT NULL, event_params.product_name, event_params.produc_name)
【举例 2】
concat('¥',toString(event_params.price))
round(event_params.price,0)
示例场景:
假设埋点的时候有属性:用户属性「累计消费金额 total_cost」,为float类型
希望根据消费金额来对用户进行会员等级的区分,比如:
累计消费金额 | VIP 等级 |
---|---|
>=1000 | 黑金 |
[500,1000) | 钻石 |
[200,500) | 白金 |
[100,200) | 黄金 |
<100 | 青铜 |
SQL 表达式:
multiIf( user_profiles.total_cost<100,'青铜', user_profiles.total_cost>=100 and user_profiles.total_cost<200 ,'钻石', user_profiles.total_cost>=200 and user_profiles.total_cost<500,'白金', user_profiles.total_cost>=500 and user_profiles.total_cost<1000,'黄金', '黑金' )
示例场景:
假设埋点的时候有属性:事件属性「视频时间 media_duration_info」,为float类型,表示毫秒,希望将其转换成int型,同时转化成分钟,方便计算。
SQL 表达式:
cast(event_params.media_duration_info/1000/60 as Nullable(int))
注意:槽位化后Map列中所有事件属性均是nullable类型的,因此在通过cast对属性类型进行强制转化的时候,无论转化成什么类型(int、float等),都需要使用函数assumeNotNull对属性包装一下,保证转化后的属性类型是nullable类型的,否则会导致类型转化出问题,使用办法:Nullable(int)、Nullable(float)等。
虚拟属性提供了“展示名、属性描述、字典、数据类型”的编写和修改,有关说明如下:
1)使用到的用户或事件公共属性被禁用了;
2)使用到的属性类型被修改了;
3)被删除。
功能 | 描述 |
---|---|
自定义查询 | 不适用。 |
虚拟事件 | 适用。被用于查询时,只要所含一个事件包含的虚拟事件属性就可以被选择。 |
圈选事件 | 事件虚拟属性不适用,用户虚拟属性适用。 |
任意事件 | 不适用,包括:any_event 和 any_active_event。 |
分析主体 | 适用,创建和使用时作为普通属性。 |
属性关联 | 适用。 |
用户路径 | 适用。 |
虚拟属性 | 不适用。不允许基于虚拟属性创建虚拟属性,用户类型的虚拟属性的表达式中不允许包含事件属性。 |