数据清理工具使用说明

1. 概述

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

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

  1. 删除指定属性的数据。

  2. 删除某次批量导入的数据。

  3. 删除某个时间段导入的数据。

  4. 将某个事件定义删除。但是元数据管理中可以对事件进行隐藏,管理员可以操作。

数据清理为 不可逆操作,频繁或大量的清理数据将导致碎片过多可能会 影响导入进度,请谨慎操作。

2. 使用方法

请先 ssh 到部署了神策服务的任意一台机器,在 sa_cluster 账户下使用数据清理工具。从 root 切换到 sa_cluster 账户:

su - sa_cluster
  • 请注意 su 与 sa_cluster 中间的减号。

2.1 事件删除

该方法可以清理一个项目指定时间段内 所有事件或者某些指定事件 的行为事件数据。

  • 该时间段为 事件行为 的时间,非导入数据的时间段。

  • 该方法会保留事件、事件属性的定义。

  • 单机版:不会立即释放磁盘,后台会缓慢释放,如果删除的是指定事件的数据那么释放的时间可能会很长。

  • 集群版:不会立即释放磁盘,每天凌晨会例行清理。注意 : 集群版事件删除一般需要消耗大量时间和资源,尽量不要指定过大的时间范围。另外支持使用 -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 --event ButtonClick
--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 --event 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 --event ButtonClick
    --hours 0,[3-5] --project my_project --libs scala,python

2.2 支持GDPR欧盟标准 ,删除底层用户数据 (目前仅支持1.13.5169单机版)

  • 方案一: 使用用户 id 直接删除 (目前 event user 数据均被删除)

参数列表:

参数名

必须

说明

格式

样例

备注

filename

包含 id set 的文件,

filename

user_id.txt

默认为 user_id

is_distinct_id

id set 的文件中包含的是否是 distinct_id

若 id set 中的数据是 distinct_id, 需指定此参数

project

操作对应的项目,默认为“默认项目”

项目名

my_project

  1. 创建用户文本,每行一个用户(user_id 或者 distinct_id)(USER_ID_SET_FILENAME或者DISTINCT_ID_SET_FILENAME)

  2. 使用如下指令删除 使用 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
  3. 方案二:使用 profile_delete 标记删除

参数列表:

参数名

必须

说明

格式

样例

备注

only_profile

是否只删除 profile 表中的数据

指定后,仅删除 profile 数据

project

操作对应的项目,默认为“默认项目”

项目名

my_project

  1. 用户调用 profile_delete 接口标记数据为删除状态

  2. 使用如下命令删除数据

    删除 event 和 user 数据

    sa_clean clean_event_and_profile_by_is_deleted --project PROJECT_NAME

    仅删除 user 数据

    sa_clean clean_event_and_profile_by_is_deleted --project PROJECT_NAME --only_profile

2.3 事件去重

该方法会去重重复导入的数据

参数列表:

参数名

必须

说明

格式

样例

备注

begin

删除数据的起始日期(包含这一天)

yyyy-MM-dd

2015-12-21

end

删除数据的结束日期(包含这一天)

yyyy-MM-dd

2015-12-22

project

操作对应的项目,默认为“默认项目”

项目名

my_project

  • 去重 my_project 项目 2016 年 1 月 2 号全天的数据

    sa_clean distinct_event_by_date --project my_project --begin '2016-01-02' --end '2016-01-02'

3. 其他

由于删除是不可逆操作,所以执行过程中需要用户键入 yes 并回车才会进行实际删除操作。如果在执行前已经确认操作是正确的(主要用于自动化脚本),那么可以加 --yes 参数,将不会再要求键入 yes 才能执行。

Last updated

Was this helpful?