イベント契約
クエリが期待するフィールド
| フィールド | 種類 | なぜ存在するのか |
|---|---|---|
| timestamp_utc | Timestamp | イベント発生時刻。 |
| event_name | Utf8 | 安定したイベント契約名。 |
| account_id | Utf8 | これらのイベントにはアカウント識別子が必要です。 |
| producer_version | Utf8 | イベントを発行したアプリケーションのバージョン。 |
DataFusion SQL
クエリをコピーする
sql
SELECT
event_name,
producer_version,
COUNT(*) AS events,
SUM(CASE
WHEN account_id IS NULL OR trim(account_id) = '' THEN 1
ELSE 0
END) AS missing_account_id,
100.0 * SUM(CASE
WHEN account_id IS NULL OR trim(account_id) = '' THEN 1
ELSE 0
END) / NULLIF(COUNT(*), 0) AS missing_rate_pct
FROM product_events
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
GROUP BY event_name, producer_version
HAVING COUNT(*) >= 20
ORDER BY missing_rate_pct DESC, events DESC;この読み取り専用クエリは、空の型付きテーブルに対して計画され、実行されます。 アパッチ DataFusion 45.2.0。決定論的なサンプル出力は合成され、個別にレビューされます。フィールド タイプ、しきい値、ビジネス定義を独自のデータと照合して検証します。 テスト方法を読んでください。
クエリ結果
イベントおよびプロデューサー別の欠落アカウント ID 率
ダッシュボード イベントには、バージョン固有の完全性回帰があります。
dashboard_viewed
18.49%
query_completed
0.18%
| event_name | producer_version | events | missing_account_id | missing_rate_pct |
|---|---|---|---|---|
| dashboard_viewed | web-1842 | 6,420 | 1,187 | 18.49 |
| query_completed | api-918 | 3,810 | 7 | 0.18 |
合成出力例。運用上の決定に使用する前に、独自のイベント スキーマとしきい値に対してクエリを実行します。
例を再現する
パブリックフィクスチャをダウンロードする
JSON バンドルには、型付きイベント コントラクトが含まれています。 illustrative 入力行、正確な SQL、予想される出力、レビューメモ、およびエンジンのバージョン。 CSV には、表示された結果が含まれます。
SQL の仕組み
- 1CASE 式では、NULL と空の文字列の両方が欠落しているものとして扱われます。
- 2producer_version でグループ化すると、展開の回帰を簡単に分離できます。
- 3最小ボリューム ルールにより、少数の開発イベントがレポートを支配するのを防ぎます。
決定すべきエッジケース
- イベント コントラクトのフィールドは、本当に必要な場合にのみ評価します。
- 匿名製品イベントには正当に account_id が欠落している可能性があるため、別の完全性ルールを使用する必要があります。
- 不明などのプレースホルダーは NULL ではありませんが、欠落している ID を隠すことができます。センチネル値を個別に測定します。
推奨されるダッシュボード
- バー: missing_rate_pct (event_name および producer_version)
- 傾向: 重要な契約の完了率
- 表: 最近の行に必須フィールドがありません
レシピを活用する
関連する機器とガイド
分析を続ける
実際のイベントで実行する
テーブルを作成し、フィールドを調整して、結果を保存します
無料で始めて、構造化されたイベントを送信し、クエリ結果をグラフ、共有ダッシュボード ウィジェット、またはアラート入力として使用します。