更新时间:2025-08-06 GMT+08:00

PROCTIME

功能描述

PROCTIME表示调用系统处理时间。

事件时间和处理时间使用场景说明

  • 事件时间语义适用数据延迟可能性大、顺序性关键、精度要求高的场景。例如攻击检测等要求攻击链准确、还原行为发生顺序的场景建议使用事件时间语义;
  • 处理时间语义适用于实时性强、容忍精度误差的场景。实时快速告警等响应优先的场景建议使用处理时间语义。
  • 请根据您的业务需要选择是使用事件时间语义还是处理时间语义,如果是处理时间语义请使用该语法。关于事件时间和处理时间的含义说明如下:
    • 处理时间:处理时间是指执行相应操作的机器的系统时间。
    • 事件时间:是指事件本身发生的时间,通常由数据中携带的字段表示(例如用户点击日志中的 event_time: "2025-06-10T10:00:00Z")。

语法格式

PROCTIME()

语法说明

PROCTIME()表明您需要使用系统处理时间语义,请您根据业务场景选择是否使用。

更多语法说明请参见流模型作业升级指导示例

注意事项

  • 在使用流模型进行窗口聚合操作时使用。通过SecMaster SQL语法处理流式数据表的模型就是流模型。

流模型作业升级指导示例

如果您确定要将流模型的语义由事件时间更换为处理时间,例如:
with filter_data as (select * from s_sec_hss_alarm where __time >= timestampadd(minute, -60, now()) AND (event_category = 4000 AND event_type = 4002 AND (event_classid = 'login_0001' OR event_classid = 'login_0002') OR event_category=2000 OR event_category=6002)),operation_total AS (  select window_start,  window_end,  FIRST_VALUE(appendInfo.event_id) AS first_event_id,  LISTAGG(DISTINCT appendInfo.event_id) AS event_id,  COUNT(DISTINCT appendInfo.event_id) AS event_id_count   from table(tumble(table filter_data, DESCRIPTOR(__time), INTERVAL '5' minute))    group by window_start, window_end,hostUuid ),final_total_result as (select * from operation_total WHERE event_id_count > 0),final_source_data as (  select * from final_total_result a, filter_data b WHERE a.first_event_id = b.appendInfo.event_id )select * from final_source_data;

需要执行如下操作:

  1. 删除语句中用事件时间开窗描述:
    from table(tumble(table filter_data, DESCRIPTOR(__time), INTERVAL '5' minute))
  1. 删除select语句中的window_start、window_end:
    window_start,  window_end
  2. 将group语句中的window_start、window_end替换为TUMBLE(PROCTIME(), INTERVAL '5' MINUTE)。替换后示例如下:
    with filter_data as (select * from s_sec_hss_alarm where __time >= timestampadd(minute, -60, now()) AND (event_category = 4000 AND event_type = 4002 AND (event_classid = 'login_0001' OR event_classid = 'login_0002') OR event_category=2000 OR event_category=6002)),operation_total AS (   select   FIRST_VALUE(appendInfo.event_id) AS first_event_id,   LISTAGG(DISTINCT appendInfo.event_id) AS event_id,   COUNT(DISTINCT appendInfo.event_id) AS event_id_count   from filter_data    group by TUMBLE(PROCTIME(), INTERVAL '5' MINUTE),hostUuid ), final_total_result as (select * from operation_total WHERE event_id_count > 0), final_source_data as (   select * from final_total_result a, filter_data b WHERE a.first_event_id = b.appendInfo.event_id ) select * from final_source_data;