本文档所描述的内容属于神策分析的高级使用功能,涉及较多技术细节,仅适用于历史数据导出导入,且环境数据总量不超过 10 亿条的客户参考;
如果您需要把数据迁移到其他新环境,或者环境数据总量超过 10 亿条,那么请联系您的客户成功经理或者项目经理购买数据迁移服务。如果对文档内容有疑惑,请咨询神策值班同学获取协助。
概述
神策分析开始为用户提供数据自助数据导入导出功能,即通过 API 导出原始神策分析环境中的历史数据,然后通过导入工具把历史数据导入到新建神策分析环境中。
数据导入导出准备
请检查您环境里事件属性、用户属性是否有神策保留字段,如果包含保留字段,请联系神策值班同学处理。否则会出现保留字段入库失败的情况。
PS:为了保证查询时属性名不与系统变量名冲突,设置如下保留字段,请避免其作为事件名和属性名(properties 中的 key)使用:
date datetime distinct_id event events event_id first_id id original_id device_id properties second_id time user_id users user_group 开头 user_tag 开头
数据导出
使用查询 API 通过编写 SQL 的方式,导出 users 表(含 Track Signup 数据)和 events 表中的数据
(如果是 1.15.1646 及之后的神策系统版本,且使用了神策的 items 表功能,也需要导出 items 表中的数据)
,设置 format=profile_json/event_json ,这样导出的数据可以直接使用导入工具导入到另一项目。另外需要注意的是,SQL 在执行过程中,默认超过 10 分钟之后会被系统强制杀死,
如果希望增大超时时间可以在 SQL 语句之后添加 MAX_QUERY_EXECUTION_TIME 参数控制(时间单位为秒, 建议最大超时时长不要超过 1800,以免影响系统正常查询 )。导出用户数据
使用 curl 导出 users 表的例子如下:
curl 'https://saasdemo.cloud.sensorsdata.cn/api/sql/query?token=******&project=default' \ -X POST \ --data-urlencode "q=SELECT * FROM users /*MAX_QUERY_EXECUTION_TIME=1800*/" \ --data-urlencode "format=profile_json" \ >> profile.json
导出的数据样例:
{"type":"track_signup","original_id":"anonymousId1","distinct_id":"registerId1","event":"$SignUp","time":1626343612099,"properties":{}} {"type":"profile_set","distinct_id":"registerId1","properties":{"$update_time":1618000000000,"$is_deleted":false,"$is_login_id":true}} {"type":"track_signup","original_id":"anonymousId2","distinct_id":"registerId2","event":"$SignUp","time":1626343612099,"properties":{}} {"type":"profile_set","distinct_id":"registerId2","properties":{"$update_time":1599000000000,"$is_deleted":false,"$is_login_id":true}}
导出事件数据
在导出 events 表数据时,建议通过 date 字段按天导出,这样可以提高 SQL 的查询速度。
使用 curl 导出 events 表的例子如下:
curl 'https://saasdemo.cloud.sensorsdata.cn/api/sql/query?token=******&project=default' \ -X POST \ --data-urlencode "q=SELECT * FROM events where date = '2017-01-01' /*MAX_QUERY_EXECUTION_TIME=1800*/" \ --data-urlencode "format=event_json" \ >> event.json
导出的数据样例:
{"type":"track","event":"$AppStart","time_free":true,"time":1590734123713,"distinct_id":"F8C867C1-5AA8-4F89-A8ED-240BD83A76A2","properties":{"$lib":"iOS","$app_version":"1.0"}} {"type":"track","event":"$AppClick","time_free":true,"time":1590733706742,"distinct_id":"F8C867C1-5AA8-4F89-A8ED-240BD83A76A2","properties":{"$lib":"iOS","$app_version":"1.0"}}
数据导入
导出的数据即是符合神策数据格式的数据,可以利用神策的导入工具直接导入,在导入数据的过程中,应遵循以下步骤,否则会导致 TrackSignup 逻辑混乱。
- 先导入 users 表中的数据
- 再导入 events 表中的数据
导入 users 表中的数据
- 对于私有部署版用户,请使用 BatchImporter 或 LogAgent 进行 users 数据导入;
- 对于云版用户,请使用 FormatImporter 或 LogAgent 进行 users 数据导入;
请不要将文件内容顺序打乱。
导入 events 表中的数据
使用任意一种导入工具导入即可。