数据模型

简介

GrowingIO采集的原始行为数据分为四种不同类型,分别为访问(visit)、页面(page)、埋点(custom_event)和行为(action)。

  • 访问(visit): 代表用户开启了一个新的访问会话,访问行为的生命周期与会话(session)绑定,新的session代表一个新的访问。

  • 页面浏览(page): 代表用户的一次页面浏览,SDK采集以及发送浏览事件中的数据。

  • 埋点(custom_event): 代表用户触发了客户埋的点发送的事件。事件触发的时间以及发送的行为数据信息都由客户指定。

  • 行为(action): 代表用户操作了页面上的某些元素发送的行为,包括点击了按钮,修改了数据框的内容等等。

过去,GrowingIO数据平台将上述四种行为数据存储至多张Hive表中,这种模型导致后续的统计逻辑非常复杂。为了串联多种行为数据,我们在查询时进行了多表关联计算,因此导致部分极端场景下数据计算结果不一致的问题偶有发生。另外,该种数据模型数据比较分散,没有统一的接口,不易与其他组件对接。

9.0版本后,我们将多种行为数据统一抽象为EVENT模型,即四种行为数据统一到一张表中。该种模型简化了平台计算逻辑,并且通过Thrift Server方便GrowingIO数据平台与其他组件进行对接,进而提升开发效率和降低维护成本。

最新的数据模型同时具备了提供实时数据的能力,行为数据从触点触发再到客户可以观察到,时间间隔可以缩小到5 ~ 10秒钟。

客户操作手册

GrowingIO CDP为客户安装了Zeppelin,客户可以通过Zeppelin SQL解释器查询数据平台中的数据库、数据表和表中数据。

SQL语法:

查询所有的数据库:show databases

查询数据库中的数据表:show tables in {database_name}

查询数据表结构:desc {database_name}.{table_name}

查询数据表分区: show partitions {database_name}.{table_name}

查询数据表数据: select {field} from {database_name}.{table_name}

数据表:

行为模型:CARBON.EVENT_LOG

查询时请使用时间和类型分区加速查询速度。如需查询当前小时实时数据,可查询 HBASE 表,表名为 EVENT_BUFFER_SECOND_{day}_{hour} ,比如北京时间 2020.10.1 上午 8点,对应的是 EVENT_BUFFER_SECOND_2020100100。

用户属性模型:USER_PROPS

物品模型:CARBON.ITEM

标签模型:TAG_RULE_RESULTS(标签角度)、USER_TAG_RULE_VALUES(用户角度)

行为模型(Event)

原始数据字段

类型

备注

event_key

string

事件标识符: 访问事件 → $visit,页面事件 → $page,埋点事件 → 埋点事件标识符

event_time

bigint

事件接收时间: 服务端接收时间为准,精确到毫秒。

event_id

string

事件唯一标识符:GrowingIO系统生成,不同事件类型生成id逻辑不同。

event_type

string

事件类型:visit、page、custom_event

client_time

bigint

事件发生时间:精确到毫秒

anonymous_user

string

访问用户标识符

user

string

用户标识符:如果登录用户为空,则为访问用户,否则为登录用户

user_type

string

用户类型:标识user对应的是登录用户还是访问用户

user_id

int

用户:登录用户、访问用户生成的ID

user_session

string

访问会话标识符

account_id

string

项目标识符: 通过 url 路径解析

platform

string

事件发送平台

domain

string

事件应用域名

referrer_domain

string

访问来源域名

ip

string

IP地址,通过 http 请求自动获取

utm_source

string

广告来源:utm所有字段从query中解析

utm_medium

string

广告媒介:utm所有字段从query中解析

utm_campaign

string

广告名称:utm所有字段从query中解析

utm_term

string

广告关键字:utm所有字段从query中解析

utm_content

string

广告内容:utm所有字段从query中解析

key_word

string

搜索关键字:从query中解析

country_code

stirng

国家代码:地理位置信息从ip/gps(lat, lng)中解析

country_name

string

国家名称:地理位置信息从ip/gps(lat, lng)中解析

region

string

省份: 地理位置信息从ip/gps(lat, lng)中解析

city

string

城市: 地理位置信息从ip/gps(lat, lng)中解析

user_agent

string

客户端信息:通过 http 请求自动获取

browser

string

浏览器 :从user_agent中解析

browser_version

string

浏览器版本: 从user_agent中解析

os

string

操作系统:移动端通过 SDK 上传,web 端从user_agent中解析

os_version

string

操作系统版本:移动端通过 SDK 上传,web 端从user_agent中解析

client_version

string

客户端版本

channel

string

渠道来源

devcie_brand

string

设备品牌:移动端通过 SDK 上传,web 端从user_agent中解析

device_model

string

设备型号

device_type

string

设备类型

deivce_orientation

string

设备方向

screen_height

string

屏幕高度

screen_width

string

屏幕宽度

lat

string

经度

lng

string

维度

language

string

语言

bot_id

string

爬虫标识,如果大于-1说明为爬虫数据

ads_id

string

广告 id,私有化版本未支持

data_source_id

string

数据源ID

attributes

map<string, string>

行为属性 : 多个字段map json string。

1.访问事件,页面事件:path, query, title, referrer, refferrer_path

2.埋点事件: itemKey, itemOriginalId, itemId,关联的事件级变量

3.点击事件:pageShowTimestamp,textValue,xpath,index,hyperlink

4.表单提交事件:pageShowTimestamp,xpath,index

5.输入元素内容改变事件 pageShowTimestamp,textValue,xpath,index

time

string

时间分区列,UTC 时区,精确到小时,如 202010010000 为北京时间 10月1 日早8点

type

string

同 event_type,分区列

物品模型(Item)

GrowingIO平台采用独立的模型存储商品属性信息。在计算的过程中,我们采用高效的mapping算法,完美的解决了维度值组合过多的问题,加速对商品指标的计算速度。

经典电商场景:

一般情况下,企业内商品种类繁多。如果把商品特征(如品牌、颜色 etc.)作为行为维度进行存储,会造成维度值组合爆炸的问题。因此GrowingIO将物品属性与其他属性分割开。

物品模型需要与埋点事件进行绑定后才能使用

原始数据字段

类型

备注

account_id

string

项目标识符

send_time

bigint

数据处理时间,因为用户属性是取最后一次归因,因此以处理时间为准,不以数据发送时间为准

item_key

string

物品模型 key

item_value

string

物品模型 value

item_id

int

GrowingIO 内部使用

attributes

map<string, string>

用户自定义属性

用户属性模型(UserProps)

用户属性是人的画像描述信息,可以作为维度对人群进行拆解。

用户属性模型相比事件模型而言要简单的多,包含who(用户标识),dim(属性名称),dvalue(属性值), in_time(更新时间)信息。

通过用户模型可以确定某个用户在某个时间点用户 ‘长什么样',方便客户更加深入的洞察某个用户。

原始数据字段

类型

备注

ai

string

项目标识符

dim

string

用户属性名

dvalue

string

用户属性值

gid

int

用户标识符,同 EVENT 模型中的 user_id

in_time

bigint

属性值最后更新时间,精确到秒

标签模型(Tag)

用户标签是人的画像描述信息,与用户属性的差别在于标签是基于GrowingIO计算能力对人进行打标。

字段

类型

备注

tag_id

varchar

标签id

tag_value

varchar

标签值

tag_type

varchar

标签类型

cnt

bigint

标签人数

bitmap

varbinary

标签人bitmap

in_time

bigint

更新时间

tag_id, tag_value

map<string, string>

联合主键

从用户角度看,该用户在哪些标签人群中。

字段

类型

备注

gid

varchar

用户标识符

tag_id

varchar

标签id

tag_value

varchar

标签值

in_time

bigint

更新时间

gid, tag_id

map<string, string>

联合主键