イベント契約
クエリが期待するフィールド
| フィールド | 種類 | なぜ存在するのか |
|---|---|---|
| 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ごとの繰り返し配信
請求書イベントは 4 回配信されたため、ダウンストリームで冪等のカウントが必要です。
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 |
合成出力例。運用上の決定に使用する前に、独自のイベント スキーマとしきい値に対してクエリを実行します。
例を再現する
パブリックフィクスチャをダウンロードする
JSON バンドルには、型付きイベント コントラクトが含まれています。 illustrative 入力行、正確な SQL、予想される出力、レビューメモ、およびエンジンのバージョン。 CSV には、表示された結果が含まれます。
SQL の仕組み
- 1event_id でグループ化すると、時間的に近いイベントが重複していると想定せずに、配信の再試行が明らかになります。
- 2event_name とソースを含めると、異なるコントラクト間で識別子を誤って再利用するプロデューサーをキャッチします。
- 3最初と最後のタイムスタンプは、重複が短い再試行バーストで到着するか、それともかなり遅れて到着するかを示します。
決定すべきエッジケース
- ダウンストリームのコンシューマが冪等性を必要とする場合は、再試行のたびに新しいイベント ID を生成しないでください。
- 無関係なイベント間で再利用された識別子は、無害な重複ではなく、インストルメンテーションの欠陥です。
- 重複が保存前に削除された場合は、再試行動作が監視可能な状態を維持できるように、別の重複排除結果を出力します。
推奨されるダッシュボード
- 統計: 選択した期間のイベント ID が重複しています
- バー: ソースごとの重複配信
- 表: 最新の反復識別子
レシピを活用する
関連する機器とガイド
ソースデータを定義する
この分析のイベント スキーマ
分析を続ける
実際のイベントで実行する
テーブルを作成し、フィールドを調整して、結果を保存します
無料で始めて、構造化されたイベントを送信し、クエリ結果をグラフ、共有ダッシュボード ウィジェット、またはアラート入力として使用します。