
# 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))
   ```
   

2. 删除select语句中的window_start、window_end：
   ```
   window_start,  window_end
   ```
   
3. 将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;
   ```
   
 
