菜单

sdfadmin 数据清理工具使用说明

只有安装了 SDF 才能使用该工具,没有安装 SDF 请使用 sa_clean 工具进行数据清理,参考文档:sa_clean 数据清理工具使用说明

如果不确认您的环境是否安装了 SDF,请咨询您的数据咨询顾问获取一对一的协助。

概述

数据清理工具既可用于清理神策分析中导入的行为事件数据,也可用于对导入的行为事件数据去重。

该工具 不提供 的功能如下:

  1. 删除某次批量导入的数据。
  2. 删除某个时间段导入的数据。
  3. 将某个事件定义删除。但是元数据管理中可以对事件进行隐藏,管理员可以操作。

数据清理为 不可逆操作,频繁或大量的清理数据将导致碎片过多可能会 影响导入进度,请谨慎操作。
除了 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]}'
  1. 目前只支持 NUMBER, BOOL, STRING 三种数据类型的属性, DATE 和 LIST 类型后续会支持
  2. 如果只填属性名,不填属性值,那么删除时就不会考虑该属性的属性值(样例中 name 的属性值传入的是个空数组[],那只要包含这个属性名的事件就会被删除)
  3. 如果指定了多个属性和值,删除时属性之间取交集,满足所有属性的条件才会被删除。属性值之间取并集,只要该数据的属性值等于指定中的一个即可
  4. 上报小数类型的属性值,需要保留3位小数
  5. 属性值需要指定一个数组,如果没有属性值或者属性值只有一个,也需要用中括号[]括起来写成数组的形式(参考样例中 "height":[10] 和 "name":[])
  6. 不支持删除属性值为 NULL 的数据,因为无法判断是真的 空 还是 客户传的值是 "NULL"
  7. 支持删除属性值为空("")的数据, "name":[""]
  8. 版本要求 sdf 2.2.11292+ / 2.3.0.706+
--properties_file_path  

根据文件内容删除数据

支持嵌套单引号,空格的字符串

--properties_file_path a.txt

a.txt 文件内容:一个合法的 json 字符串
cat test1.txt
{"$country":["People's Republic of China"],"$province":["黑龙江","吉林","辽宁","河北","河南","山东","山西","安徽","江西","江苏","浙江","福建","广东","湖南","湖北","海南","云南","贵州","四川","青海","甘肃","陕西"," 内蒙古","新疆","广西","宁夏","西藏","北京","天津","上海","重庆","中国"]}

--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 
上一个
元数据创建工具使用说明
下一个
高级功能
最近修改: 2024-12-27