You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多事件合并为单一行以展示应用最新启停时间?

问题描述

我有一批记录不同作业启动或结束时间的事件数据,示例如下:

[
  {
    "appName": "a1",
    "eventName": "START",
    "eventTime": "t1"
  },
  {
    "appName": "a1",
    "eventName": "END",
    "eventTime": "t2"
  },
  {
    "appName": "a1",
    "eventName": "START",
    "eventTime": "t3"
  },
  {
    "appName": "a2",
    "eventName": "START",
    "eventTime": "t4"
  }
]

需要将这些数据处理为每个应用一行的表格,展示其最新启动时间和结束时间,目标输出示例:

--AppName--Last Start Time--Last End Time--
--a1--t3--t2--
--a2--t4--null--

目前使用 stats latest(eventTime) by appName, eventName 能提取每个应用各事件的最新时间,但结果是分多行展示的,如何将其合并为单行?

解决方案

可以直接在stats命令中结合条件判断,按应用聚合时分别提取START和END事件的最新时间,一步得到单行结果:

stats 
    latest(eval(if(eventName="START", eventTime, null()))) as "Last Start Time", 
    latest(eval(if(eventName="END", eventTime, null()))) as "Last End Time" 
by appName

关键逻辑说明:

  • eval(if(eventName="START", eventTime, null())):仅保留当前事件为START时的时间值,其余情况返回null
  • latest():针对每个appName,取对应字段的最新非空值,自动忽略无对应事件的null情况
  • 最终每个appName会生成一行数据,包含对应的最新启动/结束时间,未发生过的事件字段显示null

如果已经有了多行的stats结果,也可以用transpose命令转置,但上述方法更高效直接。

内容的提问来源于stack exchange,提问作者Janardan Kelkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 02:33:23