活動合約
查詢期望的欄位
| 欄位 | 型別 | 為什麼存在 |
|---|---|---|
| timestamp_utc | Timestamp | 事件發生時。 |
| job_id | Utf8 | 一項作業的每個事件共享的識別符號。 |
| job_name | Utf8 | 穩定的邏輯作業名稱。 |
| event_name | Utf8 | job_started、job_completed 或 job_failed。 |
| queue_name | Utf8 | 擁有該作業的佇列。 |
DataFusion SQL
複製查詢
sql
WITH started AS (
SELECT
job_id,
job_name,
queue_name,
MIN(timestamp_utc) AS started_at
FROM job_events
WHERE event_name = 'job_started'
AND timestamp_utc >= now() - INTERVAL '24 hours'
GROUP BY job_id, job_name, queue_name
),
finished AS (
SELECT
job_id,
MAX(timestamp_utc) AS finished_at
FROM job_events
WHERE event_name IN ('job_completed', 'job_failed')
AND timestamp_utc >= now() - INTERVAL '24 hours'
GROUP BY job_id
)
SELECT
s.job_id,
s.job_name,
s.queue_name,
s.started_at
FROM started s
LEFT JOIN finished f ON s.job_id = f.job_id
WHERE f.job_id IS NULL
AND s.started_at < now() - INTERVAL '15 minutes'
ORDER BY s.started_at ASC;此只讀查詢是針對空型別資料表計劃和執行的 阿帕奇 DataFusion 45.2.0。確定性樣本輸出是綜合的並單獨審查;根據您自己的資料驗證欄位型別、閾值和業務定義。 閱讀測試方法。
查詢結果
沒有終止事件的最古老的作業
資料表儲存操作員檢查或重播工作所需的識別符號。
| job_id | job_name | queue_name | started_at |
|---|---|---|---|
| job_7f31 | import_catalog | imports | 2026-07-27 15:02:11Z |
| job_801c | sync_subscription | billing | 2026-07-27 15:19:43Z |
綜合範例輸出。在將其用於操作決策之前,針對您自己的事件架構和閾值執行查詢。
SQL 是如何工作的
- 1第一個 CTE 保留每個邏輯作業的最早開始時間。第二個保留最新的終端事件。
- 2即使不存在匹配的完成或失敗,LEFT JOIN 也會保留已啟動的作業。
- 3十五分鐘閾值是停滯的操作定義。根據預期的工作持續時間來設定它,而不是盲目複製它。
需要決定的邊緣情況
- 長時間執行的作業需要特定於作業的閾值或心跳事件。
- 遲到的事件可能會暫時產生誤報;當攝取可能滯後時,延遲最新的儲存桶。
- 重用的 job_id 將加入不相關的執行,因此每個邏輯執行的 ID 必須是唯一的。
推薦儀表板
- 統計:當前停滯的作業數
- 資料表:最舊的停滯作業 job_id 和 queue_name
- 折線圖:按天檢測的停滯作業
讓查詢範例發揮作用
相關埋點和指南
繼續分析
在真實事件中執行它
建立資料表,調整欄位並儲存結果
免費開始,傳送結構化事件,並將查詢結果用作圖表、共享儀表板小工具或警示輸入。