一.概述
1.规格说明
规格
是否付费 | 数据保留时间 | 导出延迟 | 导出格式 |
是 | 从开通之日起保留最近15天 | 小时数据:30分钟。 天数据:1-2小时。 | gzip压缩包。 以每64M大小分包发送。 导出数据皆为csv格式:
|
导出数据会有延迟,接口返回值status字段为FINISHED后,才会生成下载链接。
数据导出后表中所有时间相关字段都为UTC时间。
由于凌晨会出现大量计算任务,建议数据导出任务在早上六点后进行。
事件类型
原始数据导出API可导出的所有字段的事件分类如下:
V2.0可导出字段的事件分类有10种。
事件大类 | 事件小类 |
无埋点事件 | visit、page、action、action_tag |
埋点事件 | custom_event(原custom_attr)、pvar(新增)、evar(新增)、vstr(新增) |
广告相关 | ads_track_click、ads_track_activation |
2.导出流程
原始数据导出包括鉴权、获取链接、下载三个过程。
鉴权:获取Authorization,参考认证章节。
获取下载链接:获取请求API的响应中的downloadLinks,参见按事件类型导出原始数据和导出全部事件类型原始数据。
下载:通过“获取连接”获取到的链接下载文件。
二.事件表字段说明
1.事件表关联
无埋点数据
无埋点三张数据表分别代表GIO定义的三种数据级别:
visit为访问级别的数据,按照session定义访问
page为表页面级别数据,打开的浏览页面就是一条记录,一条访问级别数据对应多条页面级别
action级别数据代表标签数据,定义页面元素标签的点击、修改、提交等事件
三者形成整个用户行为数据层级。
广告监测数据
ads_track_click和ads_track_activation两张表分别代表GIO定义的2种数据级别,ads_track_click为广告点击数据(每条监测链接统计到的点击次数),ads_track_activation为广告激活数据(在通过监测链接下载App 后首次联网打开的设备数)
常用关联场景
关联 | 关联场景 |
无埋点-无埋点 |
|
无埋点-埋点 |
|
广告监测-广告监测 |
|
广告监测-无埋点 | 移动端监测数据 ads_track_activation和visit两表关联字段:visitUserId
|
通用字段说明
时间字段
所有原始数据导出接口中的时间字段,一般情况会包含下面两类:
类型 | 字段 | 说明 |
事件时间 | time | 取自客户端的系统时间,time字段中出现过去或者未来的时间,很大的可能是用户的系统时间是错的。 对于移动端来说,如果App异常退出,或者突然关闭网络,会导致数据晚发。 |
发送时间 | sendTime | 取自GIO接收到数据的时间,GIO所有小时、天数据全部使用此字段进行统计。 |
用户字段
所有原始数据导出接口中会包含三类用户标识,用于您将GIO数据与您自有数据进行关联:
标识 | 说明 |
访问用户ID | 参考:访问用户 |
登录用户ID | 参考:登录用户 |
其他身份标识 | GrowingIO在导出的访问事件中包含了移动端用于标示用户身份常用的三个字段:IDFA、AndroidID、IMEI 参考:无埋点事件字段 |
2.无埋点事件字段
无埋点事件字段共分为4个事件类型。
visit(访问事件)
名称 | 类型(长度) | 说明 |
visitUserId | string(64) | <访问用户ID> 访问用户的唯一标识,由GrowingIo自动生成。 示例:fc55728b-41ab-42ff-8b1f-714e44c65fd6 |
sessionId | string(50) | <访问ID> 当前访问的唯一标识。 示例:6b5099c7-6006-422d-92ac-4f3bf4ddd37c |
accountVersion | string(20) | <SDK版本> 示例:2.3.0 |
platform | string(64) | <平台> 访问所属平台,可能值为 iOS / Android / Web 等。 示例:Web |
domain | string(100) | <域名> 访问的域名,当为 iOS / Android 时,为 app 包名。 示例:www.growingio.com |
page | string(1024) | <页面> 用户访问的当前页面。 示例:pages/index |
queryParameters | string(1024) | <查询参数> 当前网站页面URL中的查询参数。 示例:cid=1234567 |
referrer | string(1024) | <页面来源> 当前页面浏览的引荐来源。 示例:https://www.growingio.com?cid=1234567 |
language | string(10) | <语言> 系统使用的语言。 示例:zh-cn |
screenHeight | string(10) | <屏幕高度> 示例:1242 |
screenWidth | string(10) | <屏幕宽度> 示例:2016 |
time | bigint | <时间戳> 请求在用户端发生的时间戳。 示例:1520899220665 |
sendTime | bigint | <发送时间> 请求在SDK发送的时间戳。 示例:1520899221211 |
ip | string(15) | <IP地址> 示例:127.0.0.1 |
userAgent | string(512) | <用户代理> 简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。 示例:Mozilla/5.0 (iPhone; CPU iPhone OS 11_2_6 like Mac OS X) AppleWebKit/604.5.6 (KHTML, like Gecko) Mobile/15D100 |
operatingSystem | string(30) | <操作系统> 示例:iOS/Android |
operatingSystemVersion | string(50) | <操作系统版本> 示例:iOS 11.0.1 /Android 6.0.1 |
clientVersion | string(50) | <客户的产品版本> 仅限移动端。 示例:1.0 |
channel | string(40) | <App的下载渠道> 仅限移动端。 示例:App tore |
deviceBrand | string(20) | <设备品牌> 示例:google |
deviceModel | string(50) | <设备型号> 示例:Nexus 5 |
deviceType | string(50) | <设备类型> 设备类型:
示例:1 |
deviceOrientation | string(10) | <设备方向> 请求产生时设备方向。 示例:PORTRAIT |
latitude | double | <地理位置纬度> 精确到小数点后5位。 示例:29.43982 |
longitude | double | <地理位置精度> 精确到小数点后5位。 示例:29.43982 |
vstRequestId | string(16) | <访问请求内部ID> GrowingIO系统内部用于标识一个访问请求的ID,可以用来关联访问数据。 示例:c7db72a5841506bd 若是在小时级别page数据无法join到对应的visit记录,visit记录可能存在于之前的小时单位中。 |
idfa | string(40) | <iOS独有的广告标识符> 苹果系统用于监测广告的ID。 示例:A075A0F9-32D2-4671-A78D-144B6B7D2920 |
androidId | string(16) | <安卓系统的一个ID> 示例:6284760c2926bcd5 |
IMEI | string(16) | <国际移动设备识别码> 示例:867459000000000 |
page(页面事件)
名称 | 类型(长度) | 说明 |
visitUserId | string(64) | <访问用户ID> 访问用户的唯一标识,由GrowingIo自动生成。 示例:fc55728b-41ab-42ff-8b1f-714e44c65fd6 |
sessionId | string(50) | <访问ID> 当前访问的唯一标识。 示例:6b5099c7-6006-422d-92ac-4f3bf4ddd37c |
platform | string(20) | <平台> 访问所属平台,可能值为 iOS / Android / Web 等。 示例:Web |
domain | string(100) | <域名> 访问的域名,当为 iOS / Android 时,为 app 包名。 示例:www.growingio.com |
page | string(1024) | <页面> 用户访问的当前页面。 示例:pages/index |
queryParameters | string(1024) | <查询参数> 当前网站页面URL中的查询参数。 示例:cid=1234567 |
referrer | string(1024) | <页面来源> 当前页面浏览的引荐来源。 示例:http://www.growingio.com?cid=1234567 |
referrerPage | string(1024) | <页面来源页面> 移动应用的来源页面。 示例:myViewController |
title | string(1024) | <页面Title> 示例:GrowingIO |
time | bigint | <时间戳> 请求在用户端发生的时间戳。 示例:1520899220665 |
sendTime | bigint | <发送时间> 请求在SDK发送的时间戳。 示例:1520899221211 |
deviceOrientation | string(10) | <设备方向> 示例:PORTRAIT |
loginUserId | string(200) | <登录用户ID> 登录用户ID,推荐使用那些不能定位到个人的ID信息,通常为企业内部使用的CRM ID。 示例:user12345。 |
pageGroup | string(200) | <页面组> 示例:myPG |
appVariable | map<string,string> | <应用级变量> 示例:{"version":"1.1"}。 |
customerAttributes2 | string(200) | 用户属性2 |
customerAttributes3 | string(200) | 用户属性3 |
customerAttributes4 | string(200) | 用户属性4 |
customerAttributes5 | string(200) | 用户属性5 |
customerAttributes6 | string(200) | 用户属性6 |
customerAttributes7 | string(200) | 用户属性7 |
customerAttributes8 | string(200) | 用户属性8 |
customerAttributes9 | string(200) | 用户属性9 |
customerAttributes10 | string(200) | 用户属性10 |
pageAttributes1 | string(200) | 页面属性1 |
pageAttributes2 | string(200) | 页面属性2 |
pageAttributes3 | string(200) | 页面属性3 |
pageAttributes4 | string(200) | 页面属性4 |
pageAttributes5 | string(200) | 页面属性5 |
pageAttributes6 | string(200) | 页面属性6 |
pageAttributes7 | string(200) | 页面属性7 |
pageAttributes8 | string(200) | 页面属性8 |
pageAttributes9 | string(200) | 页面属性9 |
pageAttributes10 | string(200) | 页面属性10 |
pageRequestId | string(23) | <页面请求ID> GrowingIO系统内部用于标识一个唯一的页面请求的ID,可以用来关联page 数据。 示例:1521010820647fa5a9314e6 |
vstRequestId | string(16) | <访问请求内部ID> GrowingIO系统内部用于标识一个访问请求的ID,可以用来关联访问数据。 示例:c7db72a5841506bd 若是在小时级别page数据无法join到对应的visit记录,visit记录可能存在于之前的小时单位中。 |
action(动作事件)
名称 | 类型(长度) | 说明 |
visitUserId | string(64) | <访问用户ID> 访问用户的唯一标识,由GrowingIo自动生成。 示例:fc55728b-41ab-42ff-8b1f-714e44c65fd6 |
sessionId | string(50) | <访问ID> 当前访问的唯一标识。 示例:6b5099c7-6006-422d-92ac-4f3bf4ddd37c |
requestType | string(10) | <请求类型> 根据请求的类型不同,可能值为:clck(click), chng(change),sbmt(submit) 示例:clck |
domain | string(100) | <域名> 访问的域名,当为 iOS / Android 时,为 app 包名。 示例:www.growingio.com |
page | string(1024) | <页面> 用户访问的当前页面。 示例:pages/index |
sendTime | bigint | <发送时间> 请求在SDK发送的时间戳。 示例:1520899221211 |
time | bigint | <时间戳> 请求在用户端发生的时间戳。 示例:1520899220665 |
href | string(1024) | <标签内的跳转连接> 没有则为null。 示例:help.growingio.com |
requestValue | string(1024) | <请求值> 该消息的值,例如标签的value。 示例:“确定” |
index | bigint | <标签序号> 列表类型标签的序号,用于标记列表内的第几项,分析列表中最常被点击的内容或者首项推广效果等等。 |
info | string(200) | <用户自定义信息> 对应growingAttributesInfo设置的字段信息。 |
pageRequestId | string(23) | <页面请求ID> GrowingIO系统内部用于标识一个唯一的页面请求的ID,可以用来关联page 数据。 示例:1521010820647fa5a9314e6 |
actionRequestId | string(30) | <Action请求内部ID> 用于标识一个action请求的ID。
|
action_tag(元素圈选动作事件)
名称 | 类型(长度) | 说明 |
sendTime | bigint | <发送时间> 请求在SDK发送的时间戳。 示例:1520899221211 |
actionRequestId | string(30) | <Action请求内部ID> 用于标识一个action请求的ID。
|
ruleId | string(8) | <Rule内部ID> 用于标识元素圈选无埋点事件的唯一ID,由字母和数字组成。 示例:99ae0dec |
3.埋点事件与变量字段
custom_event(埋点事件)
名称 | 类型(长度) | 说明 |
visitUserId | string(64) | <访问用户ID> 访问用户的唯一标识,由GrowingIo自动生成。 示例:fc55728b-41ab-42ff-8b1f-714e44c65fd6 |
sessionId | string(50) | <访问ID> 当前访问的唯一标识。 示例:6b5099c7-6006-422d-92ac-4f3bf4ddd37c |
time | bigint | <时间戳> 事件发生的时间戳。 示例:1520899220665 |
sendTime | bigint | <发送时间> 请求在SDK发送的时间戳。 示例:1520899221211 |
pageTime | bigint | <页面时间> pvar对应的页面请求的产生时间。 示例:1516349263375 |
domain | string(100) | <域名> 访问的域名,当为 iOS / Android 时,为 app 包名。 示例:www.growingio.com |
page | string(1024) | <页面> 用户访问的当前页面。 示例:pages/index |
queryParameters | string (1024) | <查询参数> 当前网站页面URL中的查询参数。 示例:cid=1234567 |
eventName | string(50) | <事件名称> 自定义事件的标识符。 示例:recenue |
eventNumber | double | <事件数值> 自定义事件的值。 示例:99.99 |
eventVariable | map<string,string> | <事件级变量> 自定义事件级变量。 示例:{"price":"50.0","item":"101"} |
loginUserId | string(200) | <登录用户ID> 推荐使用那些不能定位到个人的ID信息,通常为企业内部使用的CRM ID。 示例:user12345 |
pageRequestId | string(23) | <页面请求ID> GrowingIO系统内部用于标识一个唯一的页面请求的ID,可以用来关联page 数据。 示例:1521010820647fa5a9314e6 |
pvar(自定义页面变量)
名称 | 类型(长度) | 说明 |
visitUserId | string(64) | <访问用户ID> 访问用户的唯一标识,由GrowingIo自动生成。 示例:fc55728b-41ab-42ff-8b1f-714e44c65fd6 |
sessionId | string(50) | <访问ID> 当前访问的唯一标识。 示例:6b5099c7-6006-422d-92ac-4f3bf4ddd37c |
time | bigint | <时间戳> 事件发生的时间戳。 示例:1520899220665 |
sendTime | bigint | <发送时间> 请求在SDK发送的时间戳。 示例:1520899221211 |
pageTime | bigint | <页面时间> pvar对应的页面请求的产生时间。 示例:1520899221209 |
domain | string(100) | <域名> 访问的域名,当为 iOS / Android 时,为 app 包名。 示例:growingio.com |
page | string(1024) | <页面> 用户访问的当前页面。 示例:pages/funnel |
pageVariable | map<string,string> | <页面级变量> 页面级变量键值对。 示例:{"category":"funnel"} |
pageRequestId | string(23) | <页面请求ID> GrowingIO系统内部用于标识一个唯一的页面请求的ID,可以用来关联page 数据。 示例:1521010820647fa5a9314e6 |
evar(转化变量)
名称 | 类型(长度) | 说明 |
visitUserId | string(64) | <访问用户ID> 访问用户的唯一标识,由GrowingIo自动生成。 示例:fc55728b-41ab-42ff-8b1f-714e44c65fd6 |
sessionId | string(50) | <访问ID> 当前访问的唯一标识。 示例:6b5099c7-6006-422d-92ac-4f3bf4ddd37c |
time | bigint | <时间戳> 请求发生的时间戳。 示例:1520899220665 |
sendTime | bigint | <发送时间> 请求在SDK发送的时间戳。 示例:1520899221211 |
domain | string(100) | <域名> 访问的域名,当为 iOS / Android 时,为 app 包名。 示例:growingio.com |
conversionVariable | map<string,string> | <转化变量> 示例:{"keyword","retention"} |
vstr(访问用户变量)
名称 | 类型 | 说明 |
visitUserId | string(64) | <访问用户ID> 访问用户的唯一标识,由GrowingIo自动生成。 示例:fc55728b-41ab-42ff-8b1f-714e44c65fd6 |
sessionId | string(50) | <访问ID> 当前访问的唯一标识。 示例:6b5099c7-6006-422d-92ac-4f3bf4ddd37c |
time | bigint | <时间戳> 请求发生的时间戳。 示例:1520899220665 |
sendTime | bigint | <发送时间> 请求在SDK发送的时间戳。 示例:1520899221211 |
visitorVariable | map<string,string> | <访问用户变量> |
4.广告相关字段
广告相关事件字段共分为2个事件类型。
激活事件指GrowingIO 移动端Android/iOS SDK采集上报的激活事件数据。
如果激活事件能归因到某次点击事件,其中linkId、campaignId、channelId、linkName、campaignName、channelName、adsVariable 是对应点击事件的链接信息。
点击事件指Growingio广告监测链接收到(点击)访问数据。 其中的idfa、imei、uuid、androidId,如果有通常是由渠道方通过监测链接发送过来的数据。
ads_track_activation(广告激活事件)
名称 | 类型(长度) | 说明 |
visitUserId | string(64) | <访问用户ID> 访问用户的唯一标识,由GrowingIo自动生成。 示例:fc55728b-41ab-42ff-8b1f-714e44c65fd6 |
idfa | string(40) | <iOS独有的广告标识符> 苹果系统用于监测广告的ID。 示例:A075A0F9-32D2-4671-A78D-144B6B7D2920 |
IMEI | string(40) | <IMEI> Android平台用于广告监测的ID。 示例:100500636E9AA9 |
uuid | string(40) | <UUID> 用于广告监测的ID的UUID格式。 示例:00000000-37fc-f5ob-1e8d-484b190312e1 |
androidId | string(40) | <Android ID> SSAID,又称为Android ID。示例:2cab90e2a3b489ed |
ip | string(15) | <IP地址> 示例:127.0.0.1 |
userAgent | string(512) | <用户代理> 简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。 示例:Mozilla/5.0 (iPhone; CPU iPhone OS 11_2_6 like Mac OS X) AppleWebKit/604.5.6 (KHTML, like Gecko) Mobile/15D100 |
platform | string(20) | <平台> 访问所属平台,可能值为 iOS / Android / Web 等。 示例:Web |
operatingSystemVersion | string(50) | <操作系统版本> 示例:iOS 11.0.1 /Android 6.0.1 |
sendTime | bigint | <发送时间> 请求在SDK发送的时间戳。 示例:1520899221211 |
linkId | string(20) | <链接ID> 监测链接ID。 示例:Yo1KJXRl |
campaignId | string(20) | <活动ID> 示例:GPndl79Y |
channelID | string(20) | <渠道ID> 示例:inmobi |
linkName | string(60) | <链接名称> 2018/5/8 开始生效。 示例:测试链接 |
campaignName | string(60) | <活动名称> 2018/5/8 开始生效。 示例:双十一推广 |
channelName | string(60) | <渠道名称> 2018/5/8 开始生效。 示例:今日头条 |
adsVariable | map<String,String> | <链接维度参数> 2018/8/7 开始生效。 示例:{"city"->"beijing"}。 |
ads_track_click(广告点击事件)
名称 | 类型(长度) | 说明 |
idfa | string(40) | <iOS独有的广告标识符> 苹果系统用于监测广告的ID。 示例:A075A0F9-32D2-4671-A78D-144B6B7D2920 |
IMEI | string(40) | <国际移动设备识别码> 示例:867459000000000 |
uuid | string(40) | <UUID> 用于广告监测的ID的UUID格式。 示例:00000000-37fc-f5ob-1e8d-484b190312e1 |
androidId | string(40) | <Android ID> SSAID,又称为Android ID。 示例:2cab90e2a3b489ed |
ip | string(15) | <IP地址> 示例:127.0.0.1 |
userAgent | string(512) | <用户代理> 简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。 示例:Mozilla/5.0 (iPhone; CPU iPhone OS 11_2_6 like Mac OS X) AppleWebKit/604.5.6 (KHTML, like Gecko) Mobile/15D100 |
platform | string(20) | <平台> 访问所属平台,可能值为 iOS / Android / Web 等。 示例:Web |
operatingSystemVersion | string(50) | <操作系统版本> 示例:iOS 11.0.1 /Android 6.0.1 |
eventTime | bigint | <点击请求时间> 请求在SDK发送的时间戳.。 示例:1521315962320 |
linkId | string(20) | <链接ID> 监测链接ID。 示例:Yo1KJXRl |
campaignId | string(20) | <活动ID> 示例:GPndl79Y |
channelId | string(20) | <渠道ID> 示例:inmobi |
linkName | string(60) | <链接名称> 2018/5/8 开始生效。 示例:测试链接 |
campaignName | string(60) | <活动名称> 2018/5/8 开始生效。 示例:双十一推广 |
channelName | string(60) | <渠道名称> 2018/5/8 开始生效。 示例:今日头条 |
adsVariable | map<string,string> | <链接维度参数> 2018/8/7 开始生效。 示例:{"city"->"beijing"} |
三.接口定义
1.按事件类型导出原始数据URL
https://www.growingio.com/v2/insights/{export_type}/{data_type}/{ai}/{export_date}.json?expire={minutes}
请求类型
GET
请求头部
参数说明与示例
请求参数
路径参数 | 类型 | 是否必传 | 说明 |
export_type | string | 是 | 导出任务类型,系统目前支持小时与天的导出,可选值:hour 或者 day |
data_type | string | 是 | 导出事件类型,系统支持以下事件类型的导出,可选值:
|
ai | string | 是 | 项目ID。 |
export_date | string | 是 | 导出数据北京时间,格式为 yyyyMMddHHmm, 表现请求导出哪段时间内的数据,分为以下情况:
|
查询参数 | 类型 | 是否必传 | 说明 |
expire | integer | 否 | 下载链接失效时间,单位为分钟。最长时间为7天。 默认值:5 |
返回参数
名称 | 说明 |
status | 导出状态。可能值为:
|
downloadLinks | 文件下载链接。 链接可能随时调整,不应使用链接中的任何内容作为处理程序依据,链接过期时间默认为5分钟。 |
exportType | 表示导出任务类型,由用户传入,服务器原样返回。 |
dataType | 表示导出事件类型,由用户传入,服务器原样返回。 |
exportDate | 表示导出数据时间,由用户传入,服务器根据 exportType 截取后返回。 |
exportVersion | 表示导出数据版本,当前版本下默认为 v2。 |
requestTime | 客户请求发生时服务器时间。 |
errorMsg | 请求发生错误时,服务器返回的错误信息。 |
响应示例
{ "status": "", "downloadLinks": [], "exportType": "", "dataType": "", "exportDate": "", "exportVersion": "", "requestTime": "", "errorMsg": "" }
2.导出全部事件类型原始数据
URL
https://www.growingio.com/v2/insights/{export_type}/{ai}/{export_date}.json?expire={minutes}
请求类型
GET
请求头部
参数说明与示例
请求参数
路径参数 | 类型 | 是否必传 | 说明 |
export_type | string | 是 | 导出任务类型,系统目前支持小时与天的导出,可选值:hour 或者 day |
ai | string | 是 | 项目ID。 |
export_date | string | 是 | 导出数据北京时间,格式为 yyyyMMddHHmm, 表现请求导出哪段时间内的数据,分为以下情况:
|
查询参数 | 类型 | 是否必传 | 说明 |
minutes | integer | 否 | 链接失效时间,单位为分钟。 最大值7天。 默认值:5 |
返回参数
名称 | 说明 |
status | 导出状态。可能值为:
|
downloadLinks | 文件下载链接。 链接可能随时调整,不应使用链接中的任何内容作为处理程序依据,链接过期时间默认为5分钟。 |
exportType | 表示导出任务类型,由用户传入,服务器原样返回。 |
dataType | 表示导出数据类型,由用户传入,服务器原样返回。 |
exportDate | 表示导出数据时间,由用户传入,服务器根据 exportType 截取后返回。 |
exportVersion | 表示导出数据版本,当前版本下默认为 v2。 |
requestTime | 客户请求发生时服务器时间。 |
errorMsg | 请求发生错误时,服务器返回的错误信息。 |
响应示例
{ "status": "FINISHED", "downloadLinks": { "evar": [], "vstr": [], "pvar": [], "action_tag": [], "custom_event": [], "page": [], "ads_track_activation": [], "visit": [], "ads_track_click": [], "action": [] }, "exportType": "hour", "exportDate": "2018070100", "exportVersion": "v2", "requestTime": "2018-07-18 02:37", "errorMsg": "" }
四.升级说明
升级方法
请联系客户成功经理进行原始数据导出API版本升级。
注意事项
如果您已经从1.0升级到了2.0,请注意如下事项:
从API2.0接口开通那一刻起,API1.0接口依旧可以继续使用,但是
一个月
之后就会失效,请您在过渡期内尽快升级您的使用代码。API2.0接口从开通的那一刻起就开始生效,比如您于
2018-08-01 10:30:00
升级到了API2.0接口,那么API2.0接口就可以下载2018-08-01 11:00:00
之后的数据了,但是之前的数据还需要通过API1.0去获取。
URL
2.0 接口格式:
https://www.growingio.com/v2/insights/{export_type}/{data_type}/{ai}/{export_date}.json
1.0 接口格式:
https://www.growingio.com/insights/{ai}/{date}.json
响应示例
2.0 接口返回数据格式:
{ "status”:"FINISHED", "downloadLinks":[ "link1", "link2" ], "exportType":"", "dataType":"", "exportDate":"", "exportVersion":"", "requestTime":"", "errorMsg":"" }
1.0接口返回数据格式
{ "status":"FINISHED", "downlinks":[ "link1", "link2" ] }
获取方式和组织
2.0 提供的事件类型:
visit、page、action、action_tag、custom_event(原custom_attr)、ads_track_click、ads_track_activation、pvar(新增)、evar(新增)、vstr(新增)一共10种类型的事件
1.0 提供的数据类型:
visit、page、action、action_tag、custom_attr、ads_track_click、ads_track_activation一共7种类型的事件
数据格式
数据格式变化请参考各个版本的字段说明章节。
五.导出数据处理建议
数据格式
导出数据皆为csv格式:
分隔符: ,
包围符:"
转义符:\
处理建议
Spark处理
Scala/Java程序处理示例
Python处理建议示例
建议下载数据后,将下载的压缩文件放于hdfs的以日期建立目录结构,同一小时或者同一天的数据放在同一目录下,然后通过spark streaming的fileStream接口监控根目录,读取变动的文件内容。
streamingContext.fileStream[KeyClass, ValueClass, InputFormatClass](dataDirectory)
在依赖中添加:
groupId: com.databricksartifactId: spark-csv_2.10version: 1.4.0
具体数据操作参考spark-csv(https://github.com/databricks/spark-csv)
Scala/Java程序处理示例
推荐使用 org.apache.commons.csv 来处理下载到本地的数据文件,如下面的例子:
import java.io.{BufferedReader, File, FileInputStream, InputStreamReader} import org.apache.commons.csv.{CSVFormat, CSVParser, QuoteMode} import scala.collection.JavaConverters._ object Test extends App { val file = new File("xxx") val br = new BufferedReader(new InputStreamReader(new FileInputStream(file))) val csvFileFormat = CSVFormat.DEFAULT.withEscape('\\').withQuote('"') val csvParser = new CSVParser(br, csvFileFormat) val records = csvParser.getRecords for (record <- records.asScala) { val sb = new StringBuilder() val length = record.size() (0 until length).foreach(i => { sb.append(record.get(i)) sb.append(",") }) println(sb.toString) } }
Python处理建议示例
导入到数据仓库示例
导入到Hive
利用Spark导入到其他数据仓库
1.使用Hive新建外部表,如下图所示。
2.使用hadoop fs -put /xx.csv /tmp/test_export/ 将csv放到外部表目录下。
CREATE EXTERNAL TABLE TEST_EXPORT ( sessionId STRING, time BIGINT, sendTime BIGINT, pageTime BIGINT, domain STRING, page STRING, queryParameters STRING, eventName STRING, eventNumber DOUBLE, eventVariable map<string, string>, loginUserId STRING)ROW FORMAT SERDE EATE EXTE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' STORED AS TEXTFILE location '/tmp/test_export' tblproperties ("skip.header.line.count"="1", "quote.delim"="\"", "escape.delim"="\\")
利用Spark导入到其他数据仓库
1.获取DataFrame,代码如下。
2.使用databricks提供的函数Load到Hive数据库(这里省去spark和hive的配置),如: df.select("sessionId", "time", "sendTime", "pageTime", "domain", "page", "queryParameters", "eventName", "eventNumber", "eventVariable", "loginUserId").write.mode("append").insertInto("TEXT_EXPORT")
val df = spark.read .option("header","true") .option("escape", "\\") .option("quote", "\"") .csv("filePath")
md5进行文件完整性校验
用户如果对文件完整性有担心,可以对原始数据导出 API第三步下载时response的headers中x-amz-meta-md5-hash的value值(文件的md5)进行校验。若校验未通过,可重启第三步,轮询获取。
eg: Headers信息如下
md5校验结果