活動合約
查詢期望的欄位
| 欄位 | 型別 | 為什麼存在 |
|---|---|---|
| timestamp_utc | Timestamp | 觀察 cron-run 開始時間。 |
| schedule_name | Utf8 | 穩定的計劃工作流程名稱。 |
| environment | Utf8 | 部署環境。 |
| expected_interval_minutes | Float64 | 記錄開始之間的分鐘數。 |
DataFusion SQL
複製查詢
sql
WITH ordered_runs AS (
SELECT
schedule_name,
environment,
timestamp_utc AS run_at,
expected_interval_minutes,
LAG(timestamp_utc) OVER (
PARTITION BY schedule_name, environment
ORDER BY timestamp_utc
) AS previous_run_at
FROM cron_runs
WHERE timestamp_utc >= now() - INTERVAL '7 days'
)
SELECT
schedule_name,
environment,
previous_run_at,
run_at,
expected_interval_minutes,
date_part('second', run_at - previous_run_at) / 60.0 AS observed_gap_minutes
FROM ordered_runs
WHERE previous_run_at IS NOT NULL
AND date_part('second', run_at - previous_run_at) / 60.0
> expected_interval_minutes * 1.5
ORDER BY observed_gap_minutes DESC;此只讀查詢是針對空型別資料表計劃和執行的 阿帕奇 DataFusion 45.2.0。確定性樣本輸出是綜合的並單獨審查;根據您自己的資料驗證欄位型別、閾值和業務定義。 閱讀測試方法。
查詢結果
觀察到的時間表差距
計費同步錯過了兩次預期開始時間,而每日到期工作流程則跳過了一天。
hourly_billing_sync
180 min
daily_trial_expiration
2,880 min
| schedule_name | environment | previous_run_at | run_at | expected_interval_minutes | observed_gap_minutes |
|---|---|---|---|---|---|
| hourly_billing_sync | production | 2026-07-27 07:00 | 2026-07-27 10:00 | 60 | 180 |
| daily_trial_expiration | production | 2026-07-25 02:00 | 2026-07-27 02:00 | 1,440 | 2,880 |
綜合範例輸出。在將其用於操作決策之前,針對您自己的事件架構和閾值執行查詢。
SQL 是如何工作的
- 1LAG 檢索每個計劃和環境的先前觀察到的開始。
- 2時間戳差異成為觀察到的間隙,可以與每個作業自己的間隔進行比較。
- 31.5 的乘數允許正常的排程抖動,而不會隱藏真正錯過的執行。
需要決定的邊緣情況
- 此歷史查詢僅在下一次執行到達後才檢測到間隙;將其與當前丟失心跳警示配對。
- 計劃維護和禁用時間表應發出明確的狀態更改。
- 夏令時轉換需要 UTC 時間表或時區感知期望。
推薦儀表板
- 資料表:上一次和下一次執行錯過的開始時間
- 趨勢:按工作劃分的日程間隔分鐘數
- 統計:生產計劃目前已逾期
讓查詢範例發揮作用
相關埋點和指南
繼續分析
在真實事件中執行它
建立資料表,調整欄位並儲存結果
免費開始,傳送結構化事件,並將查詢結果用作圖表、共享儀表板小工具或警示輸入。