1. 概述

事件数据删除可以用于清理神策分析中导入的行为事件数据。

该工具 提供 如下功能:

  • 仅删除事件表中数据。


该工具 不提供 如下功能:

  • 删除事件元数据。
  • 删除事件属性元数据。


事件数据删除属于不可逆操作,删除后不可恢复,请谨慎操作。

对于元数据的处理可以参考 元数据管理


2. 提交事件数据删除任务

本功能用于提交一个事件删除任务,任务提交成功之后,会在控制台输出任务 id。

后续可以使用 查询事件数据删除任务状态 功能查询任务的状态。

2.1. 操作指令

horizonadmin event_delete_op execute
BASH

2.2. 参数列表

参数必填描述
-p / --project需要操作事件数据删除的项目的项目名。
-b / --begin

需要删除的事件数据的开始时间 (包含开始时间),这个时间是事件发生的时间,不是事件上报的时间。
时间格式:yyyy-MM-dd
样例:-b 2024-01-01 或者 --begin 2024-01-01

-e / --end

需要删除的事件数据的结束时间 (包含结束时间),这个时间是事件发生的时间,不是事件上报的时间。
时间格式:yyyy-MM-dd
样例:-e 2024-01-02 或者 --end 2024-01-02

--events

需要删除的事件数据的事件名列表,筛选条件之一,按事件名筛选需要删除的事件数据,参数值需要用 '(单引号) 包裹。
同时删除多个事件时,用 , (英文逗号) 分隔。
不能与 --reserved_events 参数同时使用。
样例:--events 'event_name1, event_name2'

--reserved_events需要保留的事件数据的事件名列表,筛选条件之一,会删除事件名不在参数值列表中的事件数据,参数值需要用 '(单引号)。 包裹
同时保留多个事件时,用 , (英文逗号) 分隔。
不能与 --events 参数同时使用。
样例:--reserved_events 'event_name3, event_name4'
--hours

需要删除的事件数据的发生时间的小时数列表,筛选条件之一,删除事件发生时间的小时数在参数值列表中的事件数据,小时数范围为 0 ~ 23,参数值需要用 '(单引号) 包裹。
同时指定多个小时数时,用 , (英文逗号) 分隔。
样例:--hours '1,15,16'

--libs

需要删除的事件数据的事件来源列表,筛选条件之一,删除事件来源在参数值列表中的事件数据
同时指定多个事件来源时,事件来源用 , (英文逗号) 分隔,参数值需要用 '(单引号) 包裹。
如果要删除事件来源为 NULL 值的事件数据,可以指定 --libs 的值为 NULL,例如:–libs 'NULL'
同时指定多个事件来源时,用 , (英文逗号) 分隔。
样例:--libs 'NULL,js,python'

--properties属性值信息,参数值为 json 字符串,筛选条件之一,会根据属性值筛选需要删除的事件数据。
一个属性指定多个属性值时,会筛选属性值为多个属性值中的一个的事件数据。
同时指定多个属性时,会筛选同时满足每个属性的属性值条件的事件数据。
目前 仅支持 属性类型为 <数值 Number>、<布尔 Bool> 和 <字符串 String> 类型 的属性,不支持 属性类型为 <日期时间 Datetime> 和 <集合 List> 类型 的属性。
样例:--properties '{"city":["BeiJing","ShangHai"],"age":[15,16,17],"height":[10]}'
这个样例会删除 city 属性的值为 BeiJing 或 ShangHai 并且 age 属性的值为 15 或 16 或 17 并且 height 属性的值为 10 的事件数据。
--properties_file_path

属性值信息文件,文件内容就是 --properties 的参数值,同时使用 --properties 和 --properties_file_path 时,只有 --properties_file_path 会生效。
样例:–-properties_file_path properties.json

2.3. 指令样例

# 删除 default 项目 2020年11月14号 的事件数据
horizonadmin event_delete_op execute -p default -b 2020-11-04 -e 2020-11-04

# 删除 default 项目 2020年11月1号 事件名为 gameListView,newHobby,search 的事件数据
horizonadmin event_delete_op execute -p default -b 2020-11-01 -e 2020-11-01 --events 'gameListView,newHobby,search'
 
# 删除 default 项目 2020年11月14号 除了事件 $pageview 以外的事件数据
horizonadmin event_delete_op execute -p default -b 2020-11-04 -e 2020-11-04 --reserved_events '$pageview'
 
# 删除 default 项目 2020年11月14号 事件来源为 python 的事件数据
horizonadmin event_delete_op execute -p default -b 2020-11-04 -e 2020-11-04 --libs 'python'
 
# 删除 default 项目 2020年11月1号 小时数为 1,5,7 的数据
horizonadmin event_delete_op execute -p default -b 2020-11-01 -e 2020-11-01 --hours '1,5,7'
 
# 删除 default 项目 2020年11月1号 事件名为 search 而且 "city" 的属性值为 "BeiJing" 或 "ShangHai" 而且 "height" 的属性值为 10 的事件数据
horizonadmin event_delete_op execute -p default -b 2020-11-01 -e 2020-11-01 --events 'search' --properties '{"city":["BeiJing","ShangHai"],"height":[10]}'

# 如果过滤条件比较复杂,可以将 --properties 的内容放到 json 文件中,例如 filter.json
horizonadmin event_delete_op execute -p default -b 2020-11-01 -e 2020-11-01 --events 'search' --properties_file_path filter.json
BASH



3. 查询事件数据删除任务状态

本功能用于查询事件数据删除任务的状态。

3.1. 操作指令

horizonadmin event_delete_op show
BASH

3.2. 参数列表

参数必填描述
-j / --job_id事件删除任务的任务 id

3.3. 任务状态

状态描述
RUNNING事件数据删除任务正在处理中
SUCCESS事件数据删除任务执行成功
FAILED事件数据删除任务执行失败

3.4. 指令样例

# 查询任务 id 为 12345 的任务状态
horizonadmin event_delete_op show -j 12345
BASH


4. 最佳实践

4.1. 切换到 sa_cluster 用户

su - sa_cluster
BASH

4.2. 开启一个 screen 窗口

开启 screen 窗口可以避免因为与远程服务器断开连接、突然没有网络等情况,导致操作失败。

screen -S event_delete
BASH

4.3. 统计需要删除的事件数据的条数

统计需要删除的事件数据的条数,可以用于后续验证,验证事件数据删除操作结果跟预期是否相符。

4.4. 提交事件数据删除任务

参考 提交事件删除任务

4.5. 查询事件数据删除任务状态

参考 查询事件数据删除任务状态

4.6. 统计需要删除的事件数据的条数

当事件数据删除任务处理成功之后,统计需要删除的事件数据的条数,理论上预期的结果应该是 0。有可能存在删除数据后,有上报的数据写入,查询结果不为 0 的情况。这部分需结合场景自行判断。