跳到主要内容
版本:2.3

离线数据导出

简介

GrowingIO 为开放架构,采集上报的用户数据支持离线导出到客户的自建数仓或数据湖系统,以满足在客户在自身系统中做数据集成应用。

离线数据导出需要较充裕的磁盘空间,它是默认关闭的。若需开启,请联系GrowingIO的技术支持。

能力边界和约束

  • 用户数据由系统定时生成为文件供下载使用,不支持直连数仓导出数据。
  • 系统生成文件的启动时间为每日凌晨,生成完毕的时间跟数据量有关,建议观察稳定后再做下游的使用配置。
  • 每天定时生成的文件,按种类分为5组压缩文件:事件明细、用户ID、用户属性、用户标签和用户分群,每组文件在其文件夹中存储。
  • 用户ID/属性/标签解压后的文件均是以gio_id(GrowingIO生成的用户编号)为首列(主键)的两列数据,第二列是用户字段的值。比如用户属性为生日的文件,第二列即是用户的生日值。这样设计的优点是文件内容的结构稳定,更接近数据的本质,使用灵活;缺点是在用户宽表的使用场景中,需要将所需字段的文件按主键关联整合成宽表存储,有一定的ETL工作量。
  • 事件明细的数据是T+1的增量数据,即今天凌晨生成的文件内容是昨日0点起至23点末的事件;用户ID/属性/标签/分群则为全量用户数据。

导出文件的下载与使用

导出文件所在的FTP路径

系统每日启动导出任务,将在FTP固定路径下生成前一日的日期名称的文件夹。

例子:比如今天是2021-12-02,系统创建的文件夹为:/ftp/admin/gio_data/v1/2021-12-01。

连接FTP的凭证信息请联系GrowingIO技术支持。

数据详情

每个日期文件夹下,均有5个文件组,对应不同的数据种类,如事件明细、用户属性等。

文件组文件夹文件列表文件数据字典
事件明细eventpart-XXXX.csv.gz见附录
用户IDuser_iduser_id/id_$anonymous_user/part-XXXX.csv.gz
user_id/id_$basic_userId/part-XXXX.csv.gz
user_id/{其他自定义ID}/part-XXXX.csv.gz
gio_id {用户ID值}
用户属性user_propsuser_props/usr_{用户属性标识符}/part-XXXX.csv.gzgio_id {用户属性值}
用户标签user_tagsuser_props/tag_{用户标签标识符}/part-XXXX.csv.gzgio_id {用户标签值}
用户分群user_segmentsuser_props/seg_{用户分群标识符}/part-XXXX.csv.gzgio_id

最终文件目录下生成的文件数是根据客户 clickhouse 集群内的shard数计算的,如果 clickhouse 集群shard为1 ,文件也是1个

在服务器上,可以使用一些简单的linux命令查看导出文件的详情,以便更好地理解数据格式。 如下提供事件明细和用户属性的示例供参考:

示例1:事件明细数据

将FTP文件下载到本地:

hdfs dfs -get /ftp/admin/gio_data/v1/2021-12-15/event/part* ./

压缩文件解压命令:

gunzip -d part*.csv.gz

解压后的文件:part-00000-0c57c7a1-4d4c-4b49-ba40-045b802dd6cb-c000.csv

查看文件内容命令:

head -1 part-00000-0c57c7a1-4d4c-4b49-ba40-045b802dd6cb-c000.csv

picture 1

数据字段的分隔符是\t,空字符串为英文双引号包裹。各字段的含义见附录。

示例2:用户属性数据

将FTP中用户生日(属性标识符为birthday)的文件下载到本地:

hdfs dfs -get /ftp/admin/gio_data/v1/2021-12-15/user_props/usr_birthday/part* ./

压缩文件解压命令:

gunzip -d part*.csv.gz

解压后的文件:part-00000-39d0854c-6e9b-42cc-a06a-a419975911f7-c000.csv

查看文件内容命令:

head part-00000-39d0854c-6e9b-42cc-a06a-a419975911f7-c000.csv 

picture 1

数据字段的分隔符是\t,空字符串为英文双引号包裹

常见问题

Q:事件明细是否有历史数据一次性导出的方案? A:由于事件明细的每日例行定时导出任务是导出T+1的数据,因此在开启离线数据导出能力后,可以每日下载前一日的事件数据。若需要将历史数据一次性导出,请联系GrowingIO项目经理获得支持。

Q:下载压缩文件前,如何知道文件是完整的? A:每个压缩文件生成完毕后,都会在同级路径下生成名称为 _SUCCESS 的完整性校验文件,获取到该文件后再下载数据文件。

附录:事件明细文件的字段详情

序号字段含义备注
1event_key事件标识visit事件$visit、访问事件$page、自定义事件如paySuccess
2event_time事件接收时间示例:2021-06-01 23:59:20.912
3event_id事件ID事件内容hash后的长度为32位的字符串,也支持导入数据中自定义event_id值
4event_type事件类型visit, page, custom_event类型
5client_time事件采集时间示例:2021-06-01 23:59:20.912
6anonymous_user访问用户ID
7user登录用户ID
8user_key用户身份访问状态:$anonymous_user;登录状态:$basic_userId;自定义身份:自定义值
9gio_id用户编号GrowingIO id-service服务给用户生成的唯一编号
10session会话标识
11attributes事件属性事件属性的KV值
12$package包名
13$platform平台标识Web
14$referrer_domain来源域名或包名
15$utm_source广告来源,标识投放的网站
16$utm_medium广告媒介或营销媒介
17$utm_campaign广告名称,产品的具体广告系列名称、标语、促销代码等
18$utm_term广告关键字,标识付费搜索关键字
19$utm_content广告内容,用于区分相似内容或同一广告内的链接。
20$ads_id广告ID
21$key_word访问来源广告关键字(通用维度)
22$country_code国家码示例:CN
23$country_name国家名称示例:中国
24$region省份示例:江苏
25$city城市示例:南京
26$browser浏览器名称
27$browser_version浏览器版本
28$os操作系统名称
29$os_version操作系统版本
30$client_version客户端版本,移动端存在
31$channel客户端渠道来源
32$device_brand设备品牌名称
33$device_model设备型号
34$device_type设备类型0:平板 1:手机
35$device_orientation设备方向
36$resolution屏幕尺寸
37$language语言示例:zh-cn
38$referrer_type来源类型
39account_idGrowingIO的AI值
40$domain域名或包名
41$ip客户端IP地址
42$user_agent浏览器 agent 详细信息
43$sdk_versionSDK版本号
44$data_source_id数据源ID