原始数据导出

Resource

GET /insights/:ai/:date.json

Authorization

在 Header 里面添加两个属性:

名字 类型 描述 示例
X-Client-Id String GrowingIO 分配的公钥 X-Client-Id: 123abc
Authorization String 认证后获取到的 Token Authorization: Token xxxxxx

URL Parameter

名字 类型 描述 示例
ai String 项目 ID 2a1b4018cd954ec2bcc69da5138bdb96
date String 具体数据日期 20160520
expire Integer 过期时间, 以分为单位 5

date分为两种格式:精确到天(20160520)或者精确到小时(2016052008,20日早上8点),分别对应下载天级别数据与小时级别数据

Responses

Status Code: 200 OK

{
  "downlinks": [
    "link1",
    "link2"
  ]
}

备注:若是downlinks为空,则表示没有原始数据,未开通该功能或者数据尚未生成,联系客服或者稍后再试。否则生成对应每种数据表的下载链接(若表内该时间范围内数据为空,则也不会有导出数据)。

导出数据字段说明

GrowingIO全量数据划分成三个级别,visit,page,action,action_tag与rules表配合组成客户对应圈选的指标数据,custom_attr指对应的打点数据。

visit

列名 字段名称 字段格式 字段说明 值(example)
userId

用户ID

string(36) 针对单个用户生成的唯一id 例如,web网站生成一个有效期三年的cookie值,mobile则为机器唯一标识码
sessionId 会话ID string(36) "web: 30分钟过期的session值,代表一次会话。mobile: app退出30秒后再进入,刷新session值"
sendTime 发送时间 bigint 数据发送过来的时间
eventTime 事件发生时间 bigint 事件实际发生的时间
eventType 事件类型 string(10) 该消息的类型 visit表内消息类型为vst
ip ip string(64) 用户的网络ip地址 10.10.0.21
countryName 国家名称 string(30) 用户所在国家 中国
region 省份 string(30) 用户所在省份区域 浙江省
city 城市 string(30) 用户所在城市 杭州市
domain 域名 string(100) 用户访问的网站域名 www.growingio.com
path 路径 string(512) 网站路径 /login
refer 来源链接 string(1024) 该用户从refer所在地址跳转过来
userAgent 用户客户端 string(1024) 简称ua,例如浏览器信息或者移动设备信息
appVersion app版本 string(10) 客户的产品版本,仅限App端
model 设备型号 string(50) 用户的设备型号,例如小米4
manufacturer 设备厂商 string(50) 用户的设备生产厂商,例如小米
channel 下载渠道 string(40) app的下载渠道,仅限mobile
language 语言 string(10) 用户使用的设备系统语言 cn, en
osVersion 系统版本 string(50) 用户使用的设备系统版本 ios 9.1.3
resolution 设备分辨率 string(20) 用户使用的设备分辨率 1600 * 1800
platform 数据来源平台 string(10) 区分该数据属于哪个平台 web, android, ios
id 访问事件id string(16) 即visit_id,用于与page数据聚合 唯一标记visit事件
query 访问事件的query信息 string(512) 访问时的链接中的query,与前面的domain,path一起构建完整的链接 可用于提取utm等字段
lat gps经度 double mobile平台独有的字段 29.43982,精确到小数点后5位
lng gps纬度 double mobile平台,需要gps权限

page

列名 字段名称 字段格式 字段说明 值(example)
userId 用户ID string(36) 针对单个用户生成的唯一id 例如,web网站生成一个有效期三年的cookie值,mobile则为机器唯一标识码
sessionId 会话ID string(36) "web: 30分钟过期的session值,代表一次会话。mobile: app退出30秒后再进入,刷新session值"
sendTime 发送时间 bigint 数据发送过来的时间
eventTime 事件发生时间 bigint 事件实际发生的时间
eventType 事件类型 string(15) 该消息的类型 page表内类型为page
domain 域名 string(100) 用户访问的网站域名 www.growingio.com
path 路径 string(512) 网站路径 /login
query 参数 string(512) request请求中的查询参数 k1=v1&k2=v2
refer 来源链接 string(1024) 该用户从refer所在地址跳转过来
title 页面名称 string(1024) 该网页名称,page title
platform 数据来源平台 string(10) 区分该数据属于哪个平台:web, android, ios
cs1 用户信息字段1 string(200) 客户平台的登陆用户id:cs1,如果客户安装sdk时设置过cs1字段(上传用户属性字段集cs,cs1用于设置用户id) userid:12345
cs2 ... string(200) 客户平台的项目id:cs2 projectid:abc
cs3 ... string(200)
cs4 ... string(200)
cs5 ... string(200)
cs6 ... string(200)
cs7 ... string(200)
cs8 ... string(200)
cs9 ... string(200)
cs10 ... string(200)
id 页面事件id string(23) 即page_id,用于与action数据聚合 唯一标记page事件
visit_id 访问事件id string(16) 即visit_id,用于与page数据聚合 visit表内id
pagegroup 页面组名称 string(100) 页面组名称,需要在sdk集成时配置 用于标记设置的一组ps字段信息
ps1 页面信息字段1 string(200) sdk配置的页面信息字段1
ps2 ... string(200)
ps3 ... string(200)
ps4 ... string(200)
ps5 ... string(200)
ps6 ... string(200)
ps7 ... string(200)
ps8 ... string(200)
ps9 ... string(200)
ps10 ... string(200) ~

action

列名 字段名称 字段格式 字段说明 值(example)
userId 用户ID string(36)
sessionId 会话ID string(36) "web: 30分钟过期的session值,代表一次会话,。mobile: app退出30秒后再进入,刷新session值"
sendTime 发送时间 bigint 数据发送过来的时间
eventTime 事件发生时间 bigint 事件实际发生的时间
eventType 事件类型 string(10) 该消息的类型 可能值为clck(click), chng(change),sbmt(submit)以及imp(impression),change的含义
eventValue 事件值 string(1024) 该消息的值,例如标签的value “确定”
domain 域名 string(100) 用户访问的网站域名 www.growingio.com
path 路径 string(512) 网站路径 /login
href 链接 string(1024) 标签内的跳转链接(如果没有则为null)
page_id 页面ID string(23) 页面唯一的id,用于与page数据join
action_id 事件ID string(30) 标签事件的唯一id web的action_id以wa开头,mobile以ma开头
index 列表序号 bigint 列表类型标签的序号 用于标记列表内的第几项,分析列表中最常被点击的内容或者首项推广效果等等
info 事件附加信息 string(200) 用户自定义事件信息 对应growingAttributesInfo设置的字段信息

字段备注

  1. 三张数据表分别代表GIO定义的三种数据级别,访问级别(visit),页面级别(page)与标签级别(action)。visit代表访问级别的数据,按照session定义访问,page代表页面级别数据,打开的浏览页面就是一条记录,一条访问级别数据对应多条页面级别,action级别数据代表标签数据,定义页面元素标签的显示,点击,提交等事件,三者形成整个用户行为数据层级。目前导出的数据类型除了action下的imp(impression)类型因为数据量过大不可导出,其它数据都已经导出
  2. sendTime与eventTime的区别在于前者相当于是GIO平台接收到的时间,而eventTime是事件在客户端真正发生的时间,客户可以根据eventTime重现用户操作时间线
  3. 在refer中可以提取utm(广告链接关键字)或者搜索关键字等信息,用于分析访问来源
  4. appVersion,model,manufacturer,channel,osVersion仅在mobile端提供,更多信息可以从userAgent中提取
  5. 三张数据表可以根据“外键”join,分别是page_id与page表的id,visit_id与visit表的id,action_id单独提供。因为标签事件并不导出impression(显示级别)的数据(数据量太大的缘故),所以建议通过action full outer join page,visit与page基本保持对应,若是在小时级别page数据无法join到对应的visit记录,visit记录可能存在于之前的小时单位中。
  6. 所有数据已经根据userId, sessionId, sendTime进行排序,基本能够做到具体用户行为跟踪
  7. mobile端浏览器打开页面访问,默认platform类型为Web,若是需要区分则建议根据osVersion
  8. action数据中index,info为补充字段,参考changelog说明

打点数据 custom_attr (2017-02-15生效)

列名 字段名称 字段格式 字段说明 值(example)
sendTime 发送时间 bigint 数据发送过来的时间
eventname 埋点事件名称 string 用户定义的埋点事件名称 管理平台内定义
attribute 埋点事件属性 string 埋点事件属性为json字符串 _ 开头的字段为growingio相关定义字段,包括_sessionId,_userId,_domain,_eventTime等,其他为客户自定义的字段
custom_attr 内 attribute 字段说明 (2017-02-15生效)
列名 字段名称 字段格式 字段说明 值(example)
_userId 用户ID string(36) 针对单个用户生成的唯一id 例如,web网站生成一个有效期三年的cookie值,mobile则为机器唯一标识码
_sessionId 会话ID string(36) "web: 30分钟过期的session值,代表一次会话。mobile: app退出30秒后再进入,刷新session值"
_eventTime 事件发生时间 bigint 事件实际发生的时间
_domain 域名 string(100) 用户访问的网站域名 www.growingio.com
_path 路径 string(512) 网站路径 /login
_query 访问事件的query信息 string(512) 访问时的链接中的query,与前面的domain,path一起构建完整的链接
_cs1 自定义用户信息字段1 string(200) 客户平台的登陆用户id:cs1,如果客户安装sdk时设置过cs1字段(上传用户属性字段集cs,cs1用于设置用户id) cs1默认用于标记登陆用户ID, userid:12345
xxx 用户打点字段 string / double 客户自定义的打点字段,这部分字段最多有30个字段 所有自定义的打点字段,不同的事件有不同的定义,需要客户根据eventName自定义解析处理

在全量数据之外,提供GrowingIO平台圈选数据映射关系表,包括action_tag与rules表(接口将更新于2016年8月9日)

action_tag

列名 字段名称 字段格式 字段说明 值(example)
sendTime 发送时间 bigint 数据发送过来的时间
action_id 事件ID string(30) 标签事件的唯一id web的action_id以wa开头,mobile以ma开头 数据发送过来的时间
rule_id 规则id string(8) 匹配事件的规则id,该id为growingio平台圈选的标签的唯一id 该值由字母与数字组成,例如‘1ba052a9’

rules(从统计数据的规则逻辑API获取)

列名 字段名称 字段格式 字段说明 值(example)
rule_id 规则id string(8) 匹配事件的规则id,该id为growingio平台圈选的标签的唯一id 该值由字母与数字组成,例如‘1ba052a9’
name 规则名称 string(200) 圈选的标签名称 该名称不可以作为唯一主键,只是便于使用区分
ruleType 规则类型 string(10) 规则在定义时可能有不同的类型,例如按钮的imp或者clck 值包括 page, imp, clck, chng, sbmt

备注

  1. 在基础部分数据导出(visit, page, action)之外,提供圈选数据与action级别数据的映射部分。
  2. 通过action数据中的action_id与action_tag中的action_id聚合,绑定对应的rule_id(映射的规则名称)到action数据上。
  3. rules代表了客户在GrowingIO平台上圈选的标签,rule_id即其唯一标识符。
  4. 通过rules表将名称绑定到上述的action_tag表中,便于通过名称进行数据分析,识别导出数据中圈选部分的数据情况。
  5. action_tag与rules表均是关联信息表,用于更进一步分析导出的部分数据,在导出数据中定位圈选数据。建议规则建立时保持名称的唯一性,GrowingIO平台不保证规则名称唯一性。
  6. 相同的规则名称下可能有多个规则类型,规则名称+规则类型才能区分,此处的规则类型与基础数据action中的事件类型保持一致。

数据处理建议

数据处理建议采用Hive或者Spark平台工具,若是需要导入自有BI平台,可能需要进一步调整数据格式(csv转成其他符合数据处理需求的格式),针对以上的需求,给出相应的数据处理建议。

注意不要以逗号为分隔符进行处理,csv数据格式以引号外的逗号为分隔符

Spark

建议下载数据后,将下载的压缩文件放于hdfs的以日期建立目录结构,同一小时或者同一天的数据放在同一目录下,然后通过spark streaming的fileStream接口监控根目录,读取变动的文件内容。

streamingContext.fileStream[KeyClass, ValueClass, InputFormatClass](dataDirectory)

在依赖中添加:

groupId: com.databricks
artifactId: spark-csv_2.10
version: 1.4.0

具体数据操作参考spark-csv(https://github.com/databricks/spark-csv)

Hive操作

可以参考Hive对CSV数据操作的支持 https://cwiki.apache.org/confluence/display/Hive/CSV+Serde

目前暂未测试该方式~

create external table xxx
数据格式调整处理(以java为例)

新建maven project,在pom.xml中添加以下依赖

    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-compress</artifactId>
      <version>1.12</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-csv -->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-csv</artifactId>
      <version>1.4</version>
    </dependency>

而后在读取数据的方法中:

    GzipCompressorInputStream stream = new GzipCompressorInputStream(new BufferedInputStream(new FileInputStream("data/test.gz")));

    Reader reader = new InputStreamReader(stream);
    Iterable<CSVRecord> records = CSVFormat.DEFAULT.parse(reader);
    for (CSVRecord record : records) {
        System.out.println(record);
    }

上例中,数据读取依赖于commons-compress与commons-csv库,同样在python中有类似的数据处理库。

关于数据处理的sdk正在开发计划中~

results matching ""

    No results matching ""