Skip to content

历史数据加工最佳实践

如何对历史数据进行加工

当您的数据之前已经导入了名为data_collection的logstore中,现在想要对这些历史数据进行加工,那么您只需要在数据加工规则配置面板设置一下加工范围即可。具体步骤如下:

  1. 在data_collection面板中点击数据加工按钮
  2. 在数据加工面板编写数据加工语句
  3. 点击保存数据加工按钮,配置规则名称、授权方式以及存储目标
  4. 选择加工范围为所有,或某时间开始特定时间范围

加工范围说明

选项说明
所有从Logstore接收到第一条日志的时间点开始数据加工任务,直到加工任务被手动停止
某时间开始指定数据加工任务的开始时间,从该时间点开始加工,直到加工任务被手动停止
特定时间范围指定数据加工任务的起止时间,加工任务执行到指定时间后自动停止

查看历史数据加工结果

您可以直接到目标logstore查看对应的加工结果。假设您将数据加工结果分发至名为target的logstore后,如果目标logstore无数据,您可以参考以下方案进行解决。

扩大数据检索时间范围

如果您在数据加工语句中未对__time__字段进行设置,那么某条数据在源logstore中出现的时间会与目标logstore保存一致,而刚进入某个logstore,默认的数据检索时间范围为最近15分钟,因此,您可能看不到历史数据的加工结果。这时,您可以通过设置搜索框右侧的时间选择器来查看指定时间范围内的历史数据。

创建索引

索引是一种倒排的数据存储结构,由关键词和指向实际数据的逻辑指针组成,用于快速根据关键词定位到具体数据行,类似于数据的目录。您只有创建索引后,才能进行查询和分析操作。如果您进入目标logstore看到如下错误提示,那么您需要开启索引才能看到加工结果数据。具体步骤与注意事项请参考创建索引

重建索引

创建索引只对之后进入logstore的数据有效,如果您是在数据加工任务已经创建之后才在目标logstore创建了索引,那么在创建索引之前数据加工导入的数据对您将是不可见的,这时,您可以重建索引功能以对之前进入logstore的数据配置索引。具体步骤与注意事项请参考重建索引

提高历史数据加工效率

当您的历史数据量比较大,同时还需要对它们进行加工以进行下一步的数据消费时,受限于单个数据加工任务的处理效率,往往很难满足实时性的需求。这时,您可以针对历史数据创建一个或多个数据加工任务对其进行处理,而对实时导入的数据,使用单独的数据加工任务进行处理。具体案例如下: 某个logstore中存在大量的历史数据,同时每时每刻还会有很多的数据被导入,我们想要对过去一周的历史数据以及之后导入的数据进行加工处理,如果只创建一个数据加工任务来进行处理的话,将可能会出现加工消费延迟大且不降低的现象。此时可以使用多个加工任务来对历史数据进行分时间段处理,对新导入的数据使用单独的作业进行处理。 这里我们处理从2023.01.01导入的所有数据,创建数据加工作业的时间为2023.01.16,在此,我们将历史数据按照时间分成四份,每一份使用单独的数据加工作业进行处理,图示如下:

其中,任务一、二和三,分别对2023.01.01 00:00:00到2023.01.05 23:59:59,2023.01.06 00:00:00到2023.01.10 23:59:59,2023.01.11 00:00:00到2023.01.15 23:59:59时间段的数据进行加工处理,该类别加工范围设置方法如图所示:

任务四表示对从2023.01.16 00:00:00之后的数据进行加工处理,该类别的加工范围设置方法如图所示:

通过如上设置,可以有效地避免数据加工一直在处理历史数据导致数据延迟很大的问题。