イベント契約
クエリが期待するフィールド
| フィールド | 種類 | なぜ存在するのか |
|---|---|---|
| timestamp_utc | Timestamp | 処理の試行が終了したとき。 |
| delivery_id | Utf8 | 再試行によって共有される安定した識別子。 |
| provider | Utf8 | Webhook プロバイダー。 |
| event_type | Utf8 | プロバイダーのイベント タイプ。 |
| attempt | Int64 | 1 ベースの処理試行。 |
| status | Utf8 | 成功、失敗、または重複排除。 |
DataFusion SQL
クエリをコピーする
sql
WITH delivery_outcomes AS (
SELECT
delivery_id,
provider,
event_type,
MAX(attempt) AS attempts,
SUM(CASE WHEN status = 'failed' THEN 1 ELSE 0 END) AS failed_attempts,
SUM(CASE WHEN status = 'success' THEN 1 ELSE 0 END) AS successful_attempts,
SUM(CASE WHEN status = 'deduplicated' THEN 1 ELSE 0 END) AS deduplicated_attempts
FROM webhook_deliveries
WHERE timestamp_utc >= now() - INTERVAL '7 days'
GROUP BY delivery_id, provider, event_type
)
SELECT
provider,
event_type,
COUNT(*) AS deliveries,
SUM(CASE
WHEN failed_attempts > 0 AND successful_attempts > 0 THEN 1 ELSE 0
END) AS recovered,
SUM(CASE
WHEN failed_attempts > 0 AND successful_attempts = 0 THEN 1 ELSE 0
END) AS permanent_failures,
SUM(deduplicated_attempts) AS duplicates_suppressed
FROM delivery_outcomes
GROUP BY provider, event_type
ORDER BY permanent_failures DESC, recovered DESC;この読み取り専用クエリは、空の型付きテーブルに対して計画され、実行されます。 アパッチ DataFusion 45.2.0。決定論的なサンプル出力は合成され、個別にレビューされます。フィールド タイプ、しきい値、ビジネス定義を独自のデータと照合して検証します。 テスト方法を読んでください。
クエリ結果
Webhook イベントによる永続的な障害
回復されたイベントは、永続的な顧客への影響としてカウントされることなく、表示されたままになります。
invoice.payment_succeeded
1
comparison 1
push
0
comparison 1
| provider | event_type | deliveries | recovered | permanent_failures | duplicates_suppressed |
|---|---|---|---|---|---|
| stripe | invoice.payment_succeeded | 4 | 1 | 1 | 1 |
| github | push | 3 | 1 | 0 | 1 |
合成出力例。運用上の決定に使用する前に、独自のイベント スキーマとしきい値に対してクエリを実行します。
例を再現する
パブリックフィクスチャをダウンロードする
JSON バンドルには、型付きイベント コントラクトが含まれています。 reproducible 入力行、正確な SQL、予想される出力、レビューメモ、およびエンジンのバージョン。 CSV には、表示された結果が含まれます。
SQL の仕組み
- 1最初の CTE は、1 つの配信に対するすべての試行を 1 つの結果レコードにまとめます。
- 2回復された配信には、少なくとも 1 回の失敗した試行と少なくとも 1 回の成功した試行があります。永続的な失敗が成功を記録することはありません。
- 3正しい冪等性は処理の失敗ではなく正常な結果であるため、重複の抑制は個別に追跡されます。
決定すべきエッジケース
- 再試行を確実にグループ化できるように、プロバイダー配信 ID を保持します。
- 配信はクエリウィンドウの後に回復する場合があります。プロバイダーの再試行スケジュールをカバーできる十分な長さのウィンドウを使用してください。
- 成功するにはプロバイダーを認識する以上のことが必要な場合、受信をダウンストリームの副作用から分離します。
推奨されるダッシュボード
- グループ化されたバー: event_type による回復と permanent_failures
- 統計: 重複抑制率
- 表: ダウンストリーム ジョブ コンテキストに関する最新の永続的な障害
レシピを活用する
関連する機器とガイド
ソースデータを定義する
この分析のイベント スキーマ
分析を続ける
実際のイベントで実行する
テーブルを作成し、フィールドを調整して、結果を保存します
無料で始めて、構造化されたイベントを送信し、クエリ結果をグラフ、共有ダッシュボード ウィジェット、またはアラート入力として使用します。