1.功能概述
虚拟属性是指基于现有普通属性值进行二次加工,具体方式是使用SQL表达式加工而成
2.虚拟属性创建
2.1:手工新建
把鼠标放到“新建属性”框上,会弹出新增虚拟属性的浮窗
新建属性下拉按钮中:新建普通属性、新建虚拟属性、批量导入创建
事件属性以及全局属性均支持创建对应类型的虚拟属性
普通属性和虚拟属性的新建入口是分开的,对已经存在属性进行编辑的时候,无法修改属性类型
点击"新建虚拟属性"的按钮,会弹出填写虚拟属性信息的页面,下面介绍一下新建虚拟属性需要填写的相关信息
基本信息:里面包含属性key、属性名称和属性描述,自定义填写即可;
属性值类型:里面有数值、字符串、字符串组三种类型表达式返回的值类型必须和配置的一致
点击【校验SQL】按钮,进行表达式校验,点击保存,会自动校验SQL,校验通过则保存成功,校验失败则无法保存,具体校验规则可参考新建虚拟属性界面中的SQL输入规则:
默认是整个组织,关掉之后,会显示出当前组织下的所有应用,可以对应用进行勾选
当上述的信息填写完成之后,点击下面的“保存”按钮,一个虚拟属性就创建完成了。
2.2:批量导入
虚拟属性支持批量导入功能,在模板里面填写好属性的信息,需要填写的内容和手工新建时一样,表格模板如下图:
批量导入时,属性类型为虚拟属性时,SQL表达式必填字段,否则会导入失败
属性值类型必须与SQL表达式返回值类型一致,否则会校验失败
2.3:虚拟属性管理
虚拟属性支持编辑以及删除
虚拟属性支持属性值管理
参与分析按钮可以控制虚拟属性是否在分析界面参与分析
3.使用场景示例
以下示例3.1、3.3、3.4、3.5使用的view_dwd_aplus_log_event_ri表中的event_kv_json字段,该字段以KV键值对形式存储系统的各个属性key以及对应的value,$sys_为系统属性,$channel_utm_为渠道属性,$global_为全局属性,其余则为事件属性;
示例3.2使用的是view_dwd_aplus_log_event_ri表中的sys_url字段,存储的是web页面路径,由协议+域名+路径所组成的url
3.1属性计算
示例1:假设当前埋点事件已有属性:<销售数量 sales_volume>和 <销售单价Unit_selling_price>,均为数值类型,计算商品收入可以使用如下表达式,使用销售数量*销售单价
toInt32OrZero(JSONExtractString(event_kv_json,'$sales_volume'))*toInt32OrZero(JSONExtractString(event_kv_json, '$Unit_selling_price'))
3.2属性值抽取
示例2:现有系统sys_url属性存放url页面路径(协议+域名+路径),例如https://yuming.com/path1/path2/
希望提取出/path1/path2/页面路径,可以使用如下表达式
extract(sys_url, '/[^/]+(/.*)')
3.3属性值合并
示例3:假设当前埋点事件已有属性:<国家Country>、<城市City>、街道<Street>,需要将这些字符串拼接为”国家-城市-街道“,可以使用如下表达式
CONCAT(JSONExtractString(event_kv_json,'$Country'),'-',JSONExtractString(event_kv_json, '$City'),'-',JSONExtractString(event_kv_json,'$Street'))
3.4时间日期再加工
示例4:假设当前埋点事件已有属性<时间date>中存储的数据为2023-04-01,需要转化为20230401,使用如下表达式
replaceOne(JSONExtractString(event_kv_json,'date'),'-','')
3.5数据类型转换
示例5:假设当前埋点事件已有属性<毫秒millisecond>,需要将毫秒转化为分钟的同时类型为int,使用如下表达式
CAST(JSONExtractInt(event_kv_json, 'millisecond') / 1000 / 60 AS Nullable(Int))