イベントスキーマ
クエリが期待するフィールド
| フィールド | 種類 | なぜ存在するのか |
|---|---|---|
| timestamp_utc | Timestamp | Webhook ライフサイクル イベント時間。 |
| delivery_id | Utf8 | 安定したプロバイダーの配信識別子。 |
| provider | Utf8 | Webhook プロバイダー。 |
| event_type | Utf8 | プロバイダーのイベント タイプ。 |
| event_name | Utf8 | webhook_received または downstream_completed。 |
| status | Utf8 | 最終結果の成功または失敗。 |
クエリをコピーする
WITH deliveries AS (
SELECT
delivery_id,
provider,
event_type,
MIN(CASE
WHEN event_name = 'webhook_received' THEN timestamp_utc
ELSE NULL
END) AS received_at,
MIN(CASE
WHEN event_name = 'downstream_completed' AND status = 'success'
THEN timestamp_utc ELSE NULL
END) AS completed_at
FROM webhook_lifecycle_events
WHERE timestamp_utc >= now() - INTERVAL '7 days'
GROUP BY delivery_id, provider, event_type
),
delivery_outcomes AS (
SELECT
delivery_id,
provider,
event_type,
received_at,
completed_at,
date_part('second', completed_at - received_at) AS completion_seconds
FROM deliveries
WHERE received_at IS NOT NULL
)
SELECT
provider,
event_type,
COUNT(*) AS received_deliveries,
SUM(CASE WHEN completed_at IS NOT NULL THEN 1 ELSE 0 END)
AS completed_deliveries,
100.0 * SUM(CASE
WHEN completion_seconds <= 300.0 THEN 1 ELSE 0
END) / NULLIF(COUNT(*), 0) AS completed_within_target_pct,
approx_percentile_cont(completion_seconds, 0.95) AS p95_completion_seconds
FROM delivery_outcomes
GROUP BY provider, event_type
HAVING COUNT(*) >= 20
ORDER BY completed_within_target_pct, received_deliveries DESC;この読み取り専用クエリは、空の型付きテーブルに対して計画され、実行されます。 アパッチ DataFusion 45.2.0。決定論的なサンプル出力は合成され、個別にレビューされます。フィールド タイプ、しきい値、ビジネス定義を独自のデータと照合して検証します。 テスト方法を読んでください。
クエリ結果
Webhook配信は目標内で完了しました
GitHub プッシュ処理は受信時に確認されますが、5 分間のダウンストリーム完了目標を達成できないことがよくあります。
| provider | event_type | received_deliveries | completed_deliveries | completed_within_target_pct | p95_completion_seconds |
|---|---|---|---|---|---|
| stripe | invoice.payment_succeeded | 8,420 | 8,346 | 96.21 | 242 |
| github | push | 3,180 | 2,890 | 83.55 | 811 |
合成出力例。運用上の決定に使用する前に、独自のイベント スキーマとしきい値に対してクエリを実行します。
例を再現する
サンプルデータをダウンロードする
JSON バンドルには、型付きイベント コントラクトが含まれています。 illustrative 入力行、正確な SQL、予想される出力、レビューメモ、およびエンジンのバージョン。 CSV には、表示された結果が含まれます。
SQL の仕組み
- 1配信 CTE は、ライフサイクル イベントを 1 つの受信と 1 つのダウンストリームの正常な完了に集約します。
- 2完了レイテンシーは、HTTP ハンドラー時間だけではなく、ビジネス ワークフローを測定します。
- 3最終的な集計では完了シェアと p95 時間の両方がレポートされるため、欠落している結果は表示されたままになります。
確認するエッジケース
- 重複排除されたプロバイダーの再試行では、同じ配信 ID が保持され、新しい論理作業が作成されないようにする必要があります。
- 一部のイベント タイプは意図的に複数の結果に展開するため、明示的な終端定義が必要です。
- 最終的なサービス レベルを計算するときに、完全な完了ウィンドウを満たしていないごく最近の受領書を除外します。
推奨されるダッシュボード
- バー: completed_within_target_pct by event_type
- トレンド: p95_completion_seconds
- 表: 完了していない最も古い受信済み配信
このクエリに必要なイベントを設定する
関連する機器とガイド
分析を続ける
自分のイベントで実行する
テーブルを作成し、フィールドを調整して、結果を保存します
無料で始めて、構造化されたイベントを送信し、クエリ結果をグラフ、共有ダッシュボード ウィジェット、またはアラート入力として使用します。