You need to enable JavaScript to run this app.
导航

原始数据导出 API(SaaS)

最近更新时间2023.12.13 17:02:58

首次发布时间2021.02.23 10:41:49

1. 概述

本文档为为SaaS产品原始数据自定义导出的使用文档;

私有化版本可以查看私有化文档-原始数据导出 API

通过该文档为T+1离线的方式导出原始数据,如果需要实时数据可以查看数据分发

特别说明:云原生版本暂不支持数据导出。
为了保证您和用户的数据安全,应用原始数据导出的接口权限默认是关闭的。
在开始使用之前,您需要联系客服开通数据导出功能。
开通原始数据导出功能后,系统会每天自动执行任务,导出前一天数据并上传文件系统,您可以通过该开放接口获取和导出开通之日之后的原始数据。
根据数据时间(当天时间为T),接口分为:

  1. T-7 至 T-1数据导出,对应api为【3.获取数据文件清单API】,数据会由系统定时为您导出,需要注意的是如果数据导出功能开通时间在T-7之后,则只能获取自功能开通之日起的数据;
  2. 历史 至 T-8数据导出,对应api为【4.提交自定义数据导出API】和【5.获取自定义导出数据清单API】,需要您使用【4.提交自定义数据导出API】提交对应日期的数据导出任务,系统会为您自动导出,导出速率约为1天可以导出单个应用1个月的数据,等待数据导出完成后,使用【5.获取自定义导出数据清单API】获取数据文件地址,需要注意的是,最远支持导出T-90的历史数据。

2. API 公共参数
  • Context-path: /datarangers

  • Path-parameters:

    Parameter

    Type

    Description

    Required

    app_id

    int

    应用的app_id

    true

    begin_date

    string

    yyyy-MM-dd,需要导出数据的开始日期

    true

    end_date

    string

    yyyy-MM-dd,需要导出数据的结束日期。

    true

  • Response:

    {
            "code": 200,
            "data": [{REULT_OBJECT}],
            "message": "success"
    }
    
    • code 状态码,200 表示成功,其他非失败
    • message 成功或失败信息
    • data 结果数据,为一个json object array

3. 获取数据文件清单 API

3.1 API 定义

  • Path:/openapi/v2/{app_id}/date/{begin_date}/{end_date}/downloads

  • Method: GET

  • Content-type: application/json

  • Path-parameters:

    Parameter

    Type

    Description

    Required

    begin_date

    string

    yyyy-MM-dd,需要导出数据的开始日期,只支持最近7天

    true

    end_date

    string

    yyyy-MM-dd,需要导出数据的结束日期,只支持最近7天

    true

3.2 OpenAPI SDK 使用样例

bc 为创建的 RangersClient, 其初始化请参考 “OpenAPI SDK 使用说明”, 各语言的 SDK 都提供了类似的接口。

  • 调用(Python):

    # 这是 Python 示例
    res = bc.data_rangers('/openapi/v2/{appid}/date/{begin_date}/{end_date}/downloads', method='get')
    print(res.content)
    
  • 返回结果:

    {
            "code": 200,
            "data": [{
                    "date": "2021-10-10",
                    "urls": ["http://xxxx/xxxx.txt.gz"],
                    "row_count": 10,
                    "expire_time": "2021-11-09"
            }, {
                    "date": "2021-10-11",
                    "urls": ["http://xxxx/xxxx.txt.gz"],
                    "row_count": 200,
                    "expire_time": "2021-11-10"
            }],
            "message": "success"
    }
    

4. 提交自定义数据导出 API

该接口支持自定义数据导出,需注意以下几点:

  1. 开始日期不能早于90天之前;
  2. 结束日期不能是最近7天(最近7天由定时任务导出),如当前日期为2021-06-24,则结束日期必须小于2021-06-17;
  3. 起始日期和结束日期间隔不能超过365天;
  4. 可以提交多个导出请求,但是请求之间日期不能重合;
  5. 导出任务会按照提交时间依次执行,数据导出之后,文件会保存30天,您在提交导出任务之后,可以使用【获取自定义导出数据文件清单API】每天检查下对应数据是否完成导出。

4.1 API 定义

  • Path:/openapi/v1/{appid}/date/{begin_date}/{end_date}/exports

  • Method: Type: POST

  • Content-type: application/json

  • Path-parameters:

    Parameter

    Type

    Required

    begin_date

    string

    yyyy-MM-dd,需要导出数据的开始日期,不能早于2020-01-01

    end_date

    string

    yyyy-MM-dd,需要导出数据的结束日期,开始结束日期间隔不能超过365天

  • Body:

4.2 OpenAPI SDK 使用样例

bc 为创建的 RangersClient, 其初始化请参考 “OpenAPI SDK 使用说明”, 各语言的 SDK 都提供了类似的接口。

  • 调用(Python):

    # 这是 Python 示例
    res = bc.data_rangers('/openapi/v1/{appid}/date/{begin_date}/{end_date}/exports', method='post', body='')
    print(res.content)
    
  • 返回结果:

    {
            "code": 200,
            "message": "success"
    }
    

5.获取自定义导出数据文件清单 API

该接口返回自定义导出数据的文件清单,需注意一下几点:

  1. 同一个app_id多次提交的自定义导出数据,该接口会一次返回所有导出成功的数据文件清单;
  2. 需在发起请求后的30天内及时取出文件,过期的数据不会在接口返回。

5.1 API 定义

  • Path:/openapi/v1/{app_id}/exports

  • Method: GET

  • Content-type: application/json

  • Path-parameters: 无特殊参数,参考公共参数即可

  • Response:

    参数

    类型

    说明

    code

    int

    接口返回状态,200为成功

    date

    string

    数据文件的对应的日期

    name

    string

    app_launch为应用启动,origin_event为行为日志

    urls

    list

    文件的下载地址列表

    row_count

    int

    文件中包含的条数

    expire_time

    string

    数据失效时间

    message

    string

    接口返回的消息

5.2 OpenAPI SDK 使用样例

bc 为创建的 RangersClient, 其初始化请参考 “OpenAPI SDK 使用说明”, 各语言的 SDK 都提供了类似的接口。

  • 调用(Python):

    res = bc.data_rangers('/openapi/v1/{app_id}/exports', method='get')
    print(res.content)
    
  • 返回结果:

    {
            "code": 200,
            "data": [{
                    "date": "2020-02-10",
                    "name": "app_launch",
                    "urls": ["http://xxxx/obj/dptob-nj-dataexoort/xxxx.csv.gz"],
                    "row_count": 10,
                    "expire_time": "2020-03-10 12:00:00"
            }, {
                    "date": "2020-02-10",
                    "name": "origin_event",
                    "urls": ["http://xxxx/obj/dptob-nj-dataexoort/xxxx.csv.gz"],
                    "row_count": 302,
                    "expire_time": "2020-03-10 12:00:00"
            }],
            "message": "success"
    }
    

6.下载数据文件

使用3或者5结果返回的urls,依次下载原始数据文件,可以并发下载,建议最多5个线程。
建议每日定时获取前一天的数据。

附:数据文件字段说明

下载后的原始数据文件为csv.gz文件,可以直接导入hdfs,编码为utf-8。
文件字段字段如下:

字段

说明

数据类型

app_name

应用名称

string

event

事件名称

string

params

事件属性(客户端上报的params字段)

map<string, string>

header_custom

自定义的公共属性

map<string, string>

local_time_ms

事件触发时间(客户端时间)

bigint

server_time

事件上报到服务器端的时间,unixtime格式

int

user_unique_id

用户唯一id

string

ssid

SSID

string

bddid

设备id

string

udid

imei

string

session_id

会话id

string

app_package

应用包名

string

app_channel

应用渠道

string

app_version

应用版本

string

app_install_id

安装id

string

app_language

语言

string

ab_version

ab测试版本

string

client_ip

ip地址,原device_id

string

device_timezone

时区

int

device_model

设备型号

string

device_brand

设备品牌

string

os_name

操作系统

string

os_version

操作系统版本

string

os_is_jailbroken

设备是否越狱

int

network_type

网络类型

string

network_carrier

运营商

string

screen_resolution

分辨率

string

screen_density

像素密度

string

screen_density_dpi

像素密度dpi

bigint

push_os

推送的os

string

push_sdk

推送的sdk列表

string

tea_event_index

一个session中事件的发生顺序

bigint