原始数据导出API V2.0

anwei发表于:2019年12月09日 10:39:43更新于:2019年12月09日 10:41:26

一.概述

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.导出流程

原始数据导出包括鉴权、获取链接、下载三个过程。



-Lo08UtW7H58ehFKeZ4g-LvAAaMwqVyQ9Q49rAlE-LvABUMhi6ymktzKujoqimage.png



鉴权:获取Authorization,参考认证章节。

获取下载链接:获取请求API的响应中的downloadLinks,参见按事件类型导出原始数据导出全部事件类型原始数据

下载:通过“获取连接”获取到的链接下载文件。



二.事件表字段说明

1.事件表关联

无埋点数据

无埋点三张数据表分别代表GIO定义的三种数据级别:

  • visit为访问级别的数据,按照session定义访问

  • page为表页面级别数据,打开的浏览页面就是一条记录,一条访问级别数据对应多条页面级别

  • action级别数据代表标签数据,定义页面元素标签的点击、修改、提交等事件

三者形成整个用户行为数据层级。

广告监测数据

ads_track_click和ads_track_activation两张表分别代表GIO定义的2种数据级别,ads_track_click为广告点击数据(每条监测链接统计到的点击次数),ads_track_activation为广告激活数据(在通过监测链接下载App 后首次联网打开的设备数)


常用关联场景



-Lo08UtW7H58ehFKeZ4g-LrWbSQ0Tum9atKScAs7-LrWbY-saJlKO0DTV7mdE58E9FE5A78BE695B0E68DAEE585B3E88194E585B3E7B3BBE59BBE.png



关联

关联场景

无埋点-无埋点

  • 3张表可以根据通用字段visitUserId和sessionId关联查询。

  • visit与page基本保持对应,若是在小时级别page数据无法join到对应的visit记录,visit记录可能存在于之前的小时单位中,可使用通用字段vstRequestId进行关联。每个visit(每次访问)都会至少访问了一个page,所以visit中的vstRequestId可以在page中至少存在一个相对应的vstRequestId。

  • action与page表,可根据通用字段pageRequestId进行关联,但page表中的pageRequestId,并不是一定存在于action表中,只有当用户存在clck,chng等行为时,才能在action中对应存在pageRequestId。

  • 对应单独统计这三个数据表时,page表可使用pageRequestId来统计页面浏览,visit表可使用sessionID来统计访问数据,action表中可使用actionRequestId来统计事件数据。

无埋点-埋点

  • 关联字段:visitUserId,sessionId

  • 对于无埋点数据(page,visit,action)和埋点数据(custom_event,pvar,evar,vstr),都会存在访问用户ID和访问ID,可使用这两个字段关联各表。

  • page,custom_event和pvar三张表,可使用字段pageRequestId来 join查询,统计自定义事件所在页面以及对应的页面级变量。

  • evar表可使用visitUserId,sessionId分别与page表和visit表 join关联。

广告监测-广告监测

  • 用户用户唯一设备号,对于安卓应用,GIO 优先使用 IMEI 号进行精准激活匹配,没有 IMEI 的情况下采用 AndroidID 匹配,如果也没有获取到 AndroidID ,则采用 IP+UA 的方式模糊匹配。 对于 iOS 应用,GIO 优先使用 IDFA 进行精准激活匹配,没有 IDFA 则使用 IP+UA 的方式模糊匹配。

  • 两张数据表可以根据“外键”join,可优先使用设备ID进行关联(IDFA/ IMEI/ AndroidID ),如设备ID为空,则可使用字段IP+字段userAgent进行关联查询。

  • 如要根据原始数据统计每条监测链接的点击数据和激活数据,可使用click表和activation中的通用字段linkId 进行关联。

  • 如要根据原始数据统计各目标渠道的点击数据和激活数据,可使用click表和activation中的通用字段channelId 进行关联。

广告监测-无埋点


移动端监测数据

ads_track_activation和visit两表关联字段:visitUserId

  • activation表中激活数据为,通过监测链接下载app后,首次联网打开(app已加载了gio Android/iOS sdk)

  • 可使用activation表中字段visitUserId与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)

<设备类型>

设备类型:

  • 0:平板

  • 1:手机

示例: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。

  • Web以wa开头

  • 移动端以ma开头


action_tag(元素圈选动作事件)

名称

类型(长度)

说明

sendTime

bigint

<发送时间>

请求在SDK发送的时间戳。

示例:1520899221211

actionRequestId

string(30)

<Action请求内部ID>

用于标识一个action请求的ID。

  • web的以wa开头

  • mobile的以ma开头

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

导出事件类型,系统支持以下事件类型的导出,可选值:

  • visit: 访问事件

  • page: 页面事件

  • action: 动作事件,包括点击、修改等动作

  • action_tag: 动作事件与圈选规则关联关系

  • custom_event: 自定义事件

  • ads_track_activation: 广告激活事件

  • ads_track_click: 广告点击事件

  • pvar:页面级变量

  • evar: 转化变量

  • vstr:访问用户变量

ai

string

项目ID。

export_date

string

导出数据北京时间,格式为 yyyyMMddHHmm, 表现请求导出哪段时间内的数据,分为以下情况:

  • 当 export_type 为 day 时,只会截取 export_date 中 yyyyMMdd, 其余将忽略。

  • 当 export_type 为 hour 时,只会截取 export_date 中 yyyyMMddHH, 其余将忽略。

查询参数

类型

是否必传

说明

expire

integer

下载链接失效时间,单位为分钟。最长时间为7天。

默认值:5


返回参数

名称

说明

status

导出状态。可能值为:

  • FINISHED:导出任务完成,客户可以使用 downloadLinks 中的链接进行文件下载。

  • RUNNING:导出任务正在运行。

  • NOT_EXISTS:导出任务不存在,请检查是否开启了导出功能并检查请求日期时间。

  • ERROR:导出任务发生错误。

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, 表现请求导出哪段时间内的数据,分为以下情况:

  • 当 export_type 为 day 时,只会截取 export_date 中 yyyyMMdd, 其余将忽略。

  • 当 export_type 为 hour 时,只会截取 export_date 中 yyyyMMddHH, 其余将忽略。

查询参数

类型

是否必传

说明

minutes

integer

链接失效时间,单位为分钟。

最大值7天。

默认值:5


返回参数

名称

说明

status

导出状态。可能值为:

  • FINISHED:导出任务完成,客户可以使用 downloadLinks 中的链接进行文件下载。

  • RUNNING:导出任务正在运行。

  • NOT_EXISTS:导出任务不存在,请检查是否开启了导出功能并检查请求日期时间。

  • ERROR:导出任务发生错误。

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信息如下



-LGNxeGABUADKiTWTaEM-LfTS0t4L9N-sPU92Tqn-LfUKiffTSE26b4GhHkaimage.png


md5校验结果



-LGNxeGABUADKiTWTaEM-LfTS0t4L9N-sPU92Tqn-LfULNTbINi97T-Rha_Uimage.png