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

如何筛选无后续成功恢复的异常/失败作业数据?

筛选未恢复的异常/失败作业记录

需求说明

需要从作业执行记录表中筛选出满足以下条件的记录:

  • 作业状态为异常(e)或失败(f)
  • 同一location和job_name组合下,不存在状态为**完成(c)**的执行记录(系统会自动重试问题作业,存在完成记录意味着已成功恢复)

示例数据集

locationjob_namestatus_codejob_execution_timestamp
1Order Detectionc2022-12-27 15:00:00.000
1Order Processinge2022-12-27 15:00:01.980
1Order Processingc2022-12-27 15:00:10.777
2Publish Salesf2022-12-27 16:00:00.000
3Publish Salese2022-12-27 15:00:00.000

期望输出

locationjob_namestatus_codejob_execution_timestamp
2Publish Salesf2022-12-27 16:00:00.000
3Publish Salese2022-12-27 15:00:00.000

解决方案

方法1:使用NOT EXISTS子查询

直接检查当前记录的location+job_name组合下是否存在完成状态的记录,不存在则保留异常/失败记录:

SELECT t.*
FROM your_table t
WHERE t.status_code IN ('e', 'f')
  AND NOT EXISTS (
    SELECT 1
    FROM your_table t2
    WHERE t2.location = t.location
      AND t2.job_name = t.job_name
      AND t2.status_code = 'c'
  );

方法2:GROUP BY筛选有效组合后关联

先找出所有无完成记录的location+job_name组合,再关联原表获取目标记录:

WITH valid_job_groups AS (
  SELECT location, job_name
  FROM your_table
  GROUP BY location, job_name
  HAVING SUM(CASE WHEN status_code = 'c' THEN 1 ELSE 0 END) = 0
)
SELECT t.*
FROM your_table t
JOIN valid_job_groups v ON t.location = v.location AND t.job_name = v.job_name
WHERE t.status_code IN ('e', 'f');

方法3:MAX()判断组合最终状态

给状态赋予优先级(c最高,代表已恢复),通过MAX()获取每个组合的最高状态,排除已恢复的组合:

WITH job_group_status AS (
  SELECT 
    location, 
    job_name,
    MAX(CASE status_code 
        WHEN 'c' THEN 3 
        WHEN 'e' THEN 2 
        WHEN 'f' THEN 1 
        ELSE 0 
        END) AS highest_status
  FROM your_table
  GROUP BY location, job_name
)
SELECT t.*
FROM your_table t
JOIN job_group_status j ON t.location = j.location AND t.job_name = j.job_name
WHERE t.status_code IN ('e', 'f')
  AND j.highest_status != 3;

方法说明

  • 方法1逻辑直白,适合中小数据集,建议给location、job_name、status_code建联合索引提升效率。
  • 方法2先过滤有效组合,适合需要复用该组合的场景。
  • 方法3通过状态数值化判断恢复状态,适合需要基于状态优先级扩展的场景。

内容的提问来源于stack exchange,提问作者David Metcalfe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 16:45:25