sa_clean 数据清理工具使用说明
|
收藏
安装了 SDF 后该工具会失效,请使用 sdfadmin 工具进行数据清理,参考文档:sdfadmin 数据清理工具使用说明
如果不确认您的环境是否安装了 SDF,请咨询神策值班同学获取一对一的协助。
概述
数据清理工具既可用于清理神策分析中导入的行为事件数据,也可用于对导入的行为事件数据去重。
该工具 不提供 的功能如下:
- 删除指定属性的数据。
- 删除某次批量导入的数据。
- 删除某个时间段导入的数据。
- 将某个事件定义删除。但是元数据管理中可以对事件进行隐藏,管理员可以操作。
数据清理为 不可逆操作,频繁或大量的清理数据将导致碎片过多可能会 影响导入进度,请谨慎操作。
除了 HdfsImporter 导入工具之外,其他导入数据的方式,导入的数据都是会先经过 Kudu,达到一定条件之后,事件数据才会转换到 Hdfs 中存储。
如您的神策分析版本在 1.13 及以下且为集群版环境,需要注意,数据清理工具默认只会删除 Hdfs 中的数据,不会清除 Kudu 中的数据。如需要清除最近导入的数据,请不要停止导入数据并等候 4 小时以上,以确保最近导入的数据顺利进入到 Hdfs中。
使用方法
请先 ssh 到部署了神策服务的任意一台机器,在 sa_cluster 账户下使用数据清理工具。从 root 切换到 sa_cluster 账户:
su - sa_cluster
- 请注意 su 与 sa_cluster 中间的减号。
事件删除
该方法可以清理一个项目指定时间段内 所有事件或者某些指定事件 的行为事件数据。
- 该时间段为 事件行为 的时间,非导入数据的时间段。
- 该方法会保留事件、事件属性的定义。
- 单机版:不会立即释放磁盘,后台会缓慢释放,如果删除的是指定事件的数据那么释放的时间可能会很长。
- 集群版:不会立即释放磁盘,每天凌晨会例行清理。注意 : 集群版事件删除一般需要消耗大量时间和资源,尽量不要指定过大的时间范围。另外支持使用 -m 参数加快执行速度。
参数列表:
参数名 | 必须 | 说明 | 格式 | 样例 | 备注 |
---|---|---|---|---|---|
begin | √ | 删除数据的起始日期(包含这一天) | yyyy-MM-dd | 2015-12-21 | |
end | √ | 删除数据的结束日期(包含这一天) | yyyy-MM-dd | 2015-12-22 | |
events | 指定删除数据的 event,集群版可同时指定多个事件,使用逗号分隔 | 事件名称 | ButtonClick | ||
project | 操作对应的项目,默认为“默认项目” | 项目名 | my_project | ||
hours | 指定删除数据所属的小时数或范围,多个不连续的时间之间使用逗号分 | [0-23] | 0,[3-5] | 仅集群版支持 | |
max_tasks | 指定 event 进行删除时,可以通过该参数设置任务的并发度,从而加快执行速度,默认为1。 | 正整数 | 2 | 仅集群版支持 | |
libs | 删除的事件来源,多个来源之间使用逗号分隔。 | LIBS | LIBS | 仅集群版支持 |
- 清除 default 项目下 2015 年 12 月 22 日这 1 天的行为事件数据:
sa_clean clean_event_by_date --begin 2015-12-22 --end 2015-12-22 --project default
- 清除 production 项目下 2015 年 12 月 20 日 到 22 日这 3 天的行为事件数据:
sa_clean clean_event_by_date --begin 2015-12-20 --end 2015-12-22 --project production
- 清除 my_project 项目下 ButtonClick 这个事件 2015 年 12 月 20 日 到 22 日这 3 天的行为事件数据,其他事件无改动:
sa_clean clean_event_by_date --begin 2015-12-20 --end 2015-12-22 --events ButtonClick --project my_project
注:如果 events 对应的事件名带 "$" 符号,则 events 后的事件名需要加单引号:
sa_clean clean_event_by_date --begin 2015-12-20 --end 2015-12-22 --events '$AppStart' --project my_project
- 清除 my_project 项目 ButtonClick 这个事件 2015 年 12 月 22 日 0 点、3 点、4 点、5 点的行为事件数据,其他事件无改动:
sa_clean clean_event_by_date --begin 2015-12-22 --end 2015-12-22 --events ButtonClick --hours 0,[3-5] --project my_project
- 清除 my_project 项目 ButtonClick 这个事件 2015 年 12 月 22 日 0 点、3 点、4 点、5 点的来自于 scala 和 python 的行为事件数据,其他事件无改动:
sa_clean clean_event_by_date --begin 2015-12-22 --end 2015-12-22 --events ButtonClick --hours 0,[3-5] --project my_project --libs scala,python
支持 GDPR 欧盟标准 ,删除底层用户数据 (目前仅支持 单机版&云版 )
- 方案一: 使用用户 id 直接删除 (目前 events 和 users 表中的数据均被删除,用户关联关系也会删除)
参数列表:
参数名 | 必须 | 说明 | 格式 | 样例 | 备注 |
---|---|---|---|---|---|
filename | √ | 包含 id set 的文件 | filename | user_id.txt | 默认为 user_id |
is_distinct_id | id set 的文件中包含的是否是 distinct_id | 若 id set 中的数据是 distinct_id, 需指定此参数 | |||
project | 操作对应的项目,默认为“默认项目” | 项目名 | my_project |
- 创建用户文本,每行一个用户(user_id 或者 distinct_id)(USER_ID_SET_FILENAME或者DISTINCT_ID_SET_FILENAME)
使用如下指令删除
使用 user_id 删除的指令
sa_clean clean_event_and_profile_by_id_list --project PROJECT_NAME --filename USER_ID_SET_FILENAME
使用 distinct_id 删除的指令
sa_clean clean_event_and_profile_by_id_list --project PROJECT_NAME --filename DISTINCT_ID_SET_FILENAME --is_distinct_id
注:如果使用 distinct_id 删除的指令删除用户的事件数据和用户数据,必须要保证 events 表中有该用户的事件数据,才能找到该用户在 users 表中的信息,并删除。否则删除不成功,需要使用 user_id 删除指令才能删除。
- 方案二:使用 profile_delete 标记删除
参数列表:
参数名 | 必须 | 说明 | 格式 | 样例 | 备注 |
---|---|---|---|---|---|
only_profile | 是否只删除 profile 表中的数据 | 指定后,仅删除 profile 数据 | |||
project | 操作对应的项目,默认为“默认项目” | 项目名 | my_project |
- 用户调用 profile_delete 接口标记数据为删除状态
- 使用如下命令删除数据,删除 events 和 users 表中的所有数据,用户关联关系也会删除
sa_clean clean_event_and_profile_by_is_deleted --project PROJECT_NAME
仅删除 users 表中的用户数据和用户关联关系
sa_clean clean_event_and_profile_by_is_deleted --project PROJECT_NAME --only_profile
事件去重
该方法会去重重复导入的数据,目前仅集群私有环境支持此方法。
参数列表:
参数名 | 必须 | 说明 | 格式 | 样例 | 备注 |
---|---|---|---|---|---|
begin | √ | 删除数据的起始日期(包含这一天) | yyyy-MM-dd | 2015-12-21 | |
end | √ | 删除数据的结束日期(包含这一天) | yyyy-MM-dd | 2015-12-22 | |
project | 操作对应的项目,默认为“默认项目” | 项目名 | my_project | ||
skip_properties | 去重时需要忽略的属性,多个属性之间使用逗号分隔 | 属性名 | $ip,$city | 1.13及之后支持,请先小版本升级 |
- 去重 my_project 项目 2016 年 1 月 2 号全天的数据,忽略 $ip 和 $city 属性
sa_clean distinct_event_by_date --project my_project --begin '2016-01-02' --end '2016-01-02' --skip_properties '$ip','$city'
注:可以指定忽略某个事件属性属性去重,即不校验该属性的值是否一样。目前不支持指定忽略 time 删除重复数据
其他
由于删除是不可逆操作,所以执行过程中需要用户键入 yes 并回车才会进行实际删除操作。如果在执行前已经确认操作是正确的(主要用于自动化脚本),那么可以加 --yes 参数,将不会再要求键入 yes 才能执行。
注:本文档内容为神策产品使用和技术细节说明文档,不包含适销类条款;具体企业采购产品和技术服务内容,以商业采购合同为准。