只有安装了 SDF 才能使用该工具,没有安装 SDF 请使用 sa_clean 工具进行数据清理,参考文档:sa_clean 数据清理工具使用说明
如果不确认您的环境是否安装了 SDF,请咨询您的数据咨询顾问获取一对一的协助。
概述
数据清理工具既可用于清理神策分析中导入的行为事件数据,也可用于对导入的行为事件数据去重。
该工具 不提供 的功能如下:
- 删除某次批量导入的数据。
- 删除某个时间段导入的数据。
- 将某个事件定义删除。但是元数据管理中可以对事件进行隐藏,管理员可以操作。
数据清理为 不可逆操作,频繁或大量的清理数据将导致碎片过多可能会 影响导入进度,请谨慎操作。
除了 HdfsImporter 导入工具之外,其他导入数据的方式,导入的数据都是会先经过 Kudu,达到一定条件之后,事件数据才会转换到 Hdfs 中存储。
使用方法
请先 ssh 到部署了神策服务的任意一台机器,在 sa_cluster 账户下使用数据清理工具。从 root 切换到 sa_cluster 账户:
su - sa_cluster
- 请注意 su 与 sa_cluster 中间的减号。
事件删除
- 该方法可以清理一个项目指定时间段内所有事件或者指定某些事件名称的事件数据的数据。
- 该时间段为事件行为的时间,非导入数据的时间段。
- 该方法会保留事件、事件属性的定义。
- 单机版:不会释放磁盘。
- 集群版:不会立即释放磁盘,每天凌晨会例行清理。注意 : 集群版事件删除一般需要消耗大量时间和资源,尽量不要指定过大的时间范围。
提交一个事件删除任务
执行命令
sdfadmin event_delete
--method/-m execute <操作类型> \
--project/-p default <项目名> \
--begin/-b 2020-12-01 <删除数据的起始日期(包含这一天)> \
--end/-e 2020-12-01 <删除数据的结束日期(包含这一天)> \
[--priority] LOW \
[--events] 'HomePageView,FistPay' <删除的事件名> \
[--hours] 3,13,21 <删除的小时数或范围> \
[--libs] python,Android <删除的事件来源> \
[--hdfs_import_names] HdfsImporter-785,HdfsImporter-786 <删除的HDFSInporter导入批次> \
[--reserved_events] FollowClick,SpecificRoomView <保留的事件名> \
[--properties] {"city":["BeiJing","ShangHai"],"name":[],"age":[15,16,17]} <指定需要删除的事件的属性和属性值> \
参数列表
参数名 | 必须 | 说明 | 格式 | 样式 | 备注 |
---|---|---|---|---|---|
--method | o | 操作类型 | execute / show / history | execute | |
--begin | o | 删除数据的起始日期(包含这一天) | yyyy-MM-dd | 2020-06-17 | 此时间是事件时间 |
--end | o | 删除数据的结束日期(包含这一天) | yyyy-MM-dd | 2020-06-17 | 此时间是事件时间 |
--project | o | 操作对应的项目 | 项目名 | default | |
--priority | Job 优先级 | VERY_LOW / LOW / NORMAL | LOW | 默认 VERY_LOW,若想增加执行优先级,可指定为 LOW / NORMAL | |
--events | 指定删除数据的 event,可同时指定多个事件,使用逗号分隔 | 事件名称 | 'gameListView,newHobby,search' | 由于$符号的转义问题,要删除的事件需要用单引号引起来,如 'gameListView,newHobby,search' | |
--hours | 指定删除数据所属的小时数,使用逗号分隔 | 1,2,5,23 | 15,16,17 | ||
--libs | 删除的事件来源,多个来源之间使用逗号分隔 | LIBS | python,java | 不能指定BatchImpoter或者HDFSImporter,若要删除某一批HDFSImporter导入的数据,可使用下面的参数,目前不支持删除某一批BatchImporter导入的数据 | |
--hdfs_import_names | 删除的 hdfs_importer 导入批次,对应 session_id | HdfsImporter-785,HdfsImporter-786 | |||
--reserved_events | 指定保留的事件名 | 事件名称 | FollowClick,SpecificRoomView | 由于$符号的转义问题,要保留的事件需要用单引号引起来,如 'gameListView,newHobby,search' | |
--properties | 根据事件的属性和属性值去删除数据 | 一个合法的 json 串. 整个 json 串用单引号括起来, 并且里面不要带多余的空格, 否则无法解析 | '{"city":["BeiJing","ShangHai"],"name":[],"age":[15,16,17],"height":[10]}' |
|
|
--properties_file_path |
根据文件内容删除数据 支持嵌套单引号,空格的字符串 |
--properties_file_path a.txt |
a.txt 文件内容:一个合法的 json 字符串 |
--properties 和现在的 --properties_file_path 是互斥的,如果指定了其中之一,就不要再指定另一个,否则的话,优先级是 properties_file_path > properties 版本要求:sdf 2.2.12389+ / 2.3.1.56 |
注意:–events 不可以和 --reserved_events 参数同时使用
使用示例
- 删除项目 httest 2020 年 11 月 14 号的数据
sdfadmin event_delete -m execute -p httest -b 2020-11-04 -e 2020-11-04
- 删除项目 httest 2020 年 11 月 14 号用 python SDK 和 java SDK 导入的数据
sdfadmin event_delete -m execute -p httest -b 2020-11-04 -e 2020-11-04 --libs 'python,java'
- 删除项目 httest 2020 年 11 月 1 号事件名为 gameListView,newHobby,search 的数据
sdfadmin event_delete -m execute -p httest -b 2020-11-01 -e 2020-11-01 --events 'gameListView,newHobby,search'
- 删除项目 httest 2020 年 11 月 1 号小时数为 1,5,7 的数据
sdfadmin event_delete -m execute -p httest -b 2020-11-01 -e 2020-11-01 --hours 1,5,7
- 删除项目httest2020年11月1号事件名为search的数据, 并且删除的数据必须包含 "city" 和 "name" 和 "height" 这三种属性, 其中 "city" 的属性值需要等于 "BeiJing" 或 "ShangHai", "name" 的属性值无限制, "height" 的属性值需要等于10
sdfadmin event_delete -m execute -p httest -b 2020-11-01 -e 2020-11-01 --events 'search' --properties '{"city":["BeiJing","ShangHai"],"name":[],"height":[10]}'
查看事件删除 job 信息
执行命令
sdfadmin event_delete
--method/-m show <操作类型> \
--job_id 74562 \
参数列表
参数名 | 必须 | 说明 | 格式 | 样式 | 备注 |
---|---|---|---|---|---|
--method | o | 操作类型 | execute / show / history | execute | |
--job_id | o | execute 提交 job 后返回的job ID | 74562 | 该 job ID 对应 sdf_data_loader_job 表中的 ID |
查看事件删除 job 历史
执行命令
sdfadmin event_delete
--method/-m history <操作类型> \
--project/-p default <项目名> \
--begin/-b 2020-12-01 <要查看的最早的 Job 的创建时间(包含这一天)> \
--end/-e 2020-12-01 <要查看的最晚的 Job 的创建时间(包含这一天)>
参数列表
参数名 | 必须 | 说明 | 格式 | 样式 | 备注 |
---|---|---|---|---|---|
--method | o | 操作类型 | |||
--project | o | 项目名称 | |||
--begin | o | 最早的 job 创建时间 | yyyy-MM-dd | ||
--end | o | 最晚的 job 创建时间 | yyyy-MM-dd |
取消正在运行的删除任务
执行命令
sdfadmin event_delete
--method/-m cancel <操作类型> \
--job_id 74562 \
参数名 |
必须 |
说明 |
格式 |
样式 |
备注 |
---|---|---|---|---|---|
--method | o | 操作类型 | cancel | cancel | 选择取消 |
--job_id | o | execute 提交 job 后返回的job ID | 74562 | 该 job ID 对应 sdf_data_loader_job 表中的 ID |
事件去重
- 该方法会去重重复导入的数据,目前仅集群私有环境支持此方法。
提交一个事件去重任务
执行命令
sdfadmin event_distinct
--method/-m execute <操作类型> \
--project/-p default <项目名> \
--begin/-b 2020-12-01 <去重数据的起始日期(包含这一天)> \
--end/-e 2020-12-01 <去重数据的结束日期(包含这一天)> \
[--priority] LOW \
[--events] 'HomePageView,FistPay' <去重的事件名> \
[--skip_properties] property1, property2 <去重时需要忽略的属性>
参数列表
参数名 | 必须 | 说明 | 格式 | 样式 | 备注 |
---|---|---|---|---|---|
--method | o | 操作类型 | execute / show / history | execute | |
--begin | o | 去重数据的起始日期(包含这一天) | yyyy-MM-dd | 2020-06-17 | 此时间是事件时间 |
--end | o | 去重数据的结束日期(包含这一天) | yyyy-MM-dd | 2020-06-17 | 此时间是事件时间 |
--project | o | 操作对应的项目名称 | 项目名 | default | |
--priority | Job 优先级 | VERY_LOW/LOW/NORMAL | LOW | 默认 VERY_LOW,若想增加执行优先级,可指定为 LOW / NORMAL | |
--events | 指定要去重的 event,多个事件使用逗号分隔 | 事件名称 | gameListView,newHobby,search | ||
--skip_properties |
去重时需要忽略的属性,多个属性之间使用逗号分隔 | 属性名 | property1, property2 |
_offset, $kafka_offset,$receive_time这三个属性默认忽略,如果有其他需要忽略的属性,需要用该参数进行指定,如忽略 $lib 属性进行去重:–skip_properties '$lib' 注意:time 不是事件属性,不支持忽略 time 字段 若是去重HDFSImporter导入的数据,需要额外跳过属性 $hdfs_import_batch_name |
使用示例
- 对项目 httest 2020 年 11 月 20 号的数据进行去重
sdfadmin event_distinct -m execute -p httest -b 2020-11-20 -e 2020-11-20
- 对项目 httest 2020 年 11 月 20 号的事件 HomePageView,FistPay 进行去重
sdfadmin event_distinct -m execute -p httest -b 2020-11-20 -e 2020-11-20 --events 'HomePageView,FistPay'
- 对项目 httest 2020 年 11 月 20 号的事件忽略 $lib 属性进行去重
sdfadmin event_distinct -m execute -p httest -b 2020-11-20 -e 2020-11-20 --skip_properties '$lib'
查看事件去重 job 信息
执行命令
sdfadmin event_distinct
--method/-m show <操作类型> \
--job_id 74562
参数列表
参数 | 必须 | 说明 | 格式 | 样式 | 备注 |
---|---|---|---|---|---|
--method | o | 操作类型 | execute / show / history | execute | |
--job_id | o | execute 提交 job 后返回的job ID | 74562 | 该 job ID 对应 sdf_data_loader_job 表中的 ID |
查看事件去重 job 历史
执行命令
sdfadmin event_distinct
--method/-m history <操作类型> \
--project/-p default <项目名> \
--begin/-b 2020-12-01 \
--end/-e 2020-12-01 \
参数列表
参数 | 必须 | 说明 | 格式 | 样式 | 备注 |
---|---|---|---|---|---|
--method | o | 操作类型 | |||
--project | o | 项目名称 | |||
--begin | o | 最早的 job 创建时间 | yyyy-MM-dd | ||
--end | o | 最晚的 job 创建时间 | yyyy-MM-dd |
取消正在运行的去重任务
执行命令
sdfadmin event_distinct
--method/-m cancel <操作类型> \
--job_id 74562 \
参数名 |
必须 |
说明 |
格式 |
样式 |
备注 |
---|---|---|---|---|---|
--method | o | 操作类型 | cancel | cancel | 选择取消 |
--job_id | o | execute 提交 job 后返回的job ID | 74562 | 该 job ID 对应 sdf_data_loader_job 表中的 ID |