活動合約
查詢期望的欄位
| 欄位 | 型別 | 為什麼存在 |
|---|---|---|
| timestamp_utc | Timestamp | 事件發生時間。 |
| event_id | Utf8 | 重試傳送時重複使用的穩定識別符號。 |
| event_name | Utf8 | 事件合約名稱。 |
| source | Utf8 | 生產者名稱。 |
DataFusion SQL
複製查詢
sql
SELECT
event_id,
event_name,
source,
COUNT(*) AS deliveries,
MIN(timestamp_utc) AS first_seen_at,
MAX(timestamp_utc) AS last_seen_at
FROM telemetry_events
WHERE timestamp_utc >= now() - INTERVAL '7 days'
AND event_id IS NOT NULL
GROUP BY event_id, event_name, source
HAVING COUNT(*) > 1
ORDER BY deliveries DESC, last_seen_at DESC
LIMIT 100;此只讀查詢是針對空型別資料表計劃和執行的 阿帕奇 DataFusion 45.2.0。確定性樣本輸出是綜合的並單獨審查;根據您自己的資料驗證欄位型別、閾值和業務定義。 閱讀測試方法。
查詢結果
按事件 ID 重複投遞
發票事件已交付四次,需要下游冪等計數。
evt_8f31
4
evt_77ac
2
| event_id | event_name | source | deliveries | first_seen_at | last_seen_at |
|---|---|---|---|---|---|
| evt_8f31 | invoice_paid | stripe_webhook | 4 | 12:01:03 | 12:06:44 |
| evt_77ac | job_completed | billing_worker | 2 | 10:14:22 | 10:14:39 |
綜合範例輸出。在將其用於操作決策之前,針對您自己的事件架構和閾值執行查詢。
SQL 是如何工作的
- 1按 event_id 分組公開重試傳遞,而不假設及時關閉的事件是重複的。
- 2包括 event_name 和原始碼可以捕獲意外地在不同合約中重複使用識別符號的生產者。
- 3第一個和最後一個時間戳顯示重複項是在短重試突發中還是更晚到達。
需要決定的邊緣情況
- 如果下游消費者需要冪等性,則不要為每次重試生成新的事件 ID。
- 在不相關的事件中重複使用識別符號是一種檢測缺陷,而不是無害的重複。
- 如果在儲存之前刪除重複項,則發出單獨的重複資料刪除結果,以便重試行為仍然可觀察。
推薦儀表板
- 統計:所選時間段內重複的事件 ID
- 酒吧:按來源重複交付
- 資料表:最新重複識別符號
讓查詢範例發揮作用
相關埋點和指南
定義源資料
此分析的事件模式
繼續分析
在真實事件中執行它
建立資料表,調整欄位並儲存結果
免費開始,傳送結構化事件,並將查詢結果用作圖表、共享儀表板小工具或警示輸入。