イベント契約
クエリが期待するフィールド
| フィールド | 種類 | なぜ存在するのか |
|---|---|---|
| timestamp_utc | Timestamp | リクエストの完了時間。 |
| status_code | Int64 | HTTP 応答ステータス コード。 |
クエリをコピーする
WITH hourly AS (
SELECT
date_trunc('hour', timestamp_utc) AS hour,
COUNT(*) AS requests,
100.0 * SUM(CASE WHEN status_code >= 500 THEN 1 ELSE 0 END)
/ NULLIF(COUNT(*), 0) AS error_rate_pct
FROM api_requests
WHERE timestamp_utc >= now() - INTERVAL '72 hours'
GROUP BY date_trunc('hour', timestamp_utc)
),
baseline AS (
SELECT
hour,
requests,
error_rate_pct,
AVG(error_rate_pct) OVER (
ORDER BY hour ROWS BETWEEN 7 PRECEDING AND 1 PRECEDING
) AS previous_seven_avg_pct
FROM hourly
)
SELECT
hour,
requests,
error_rate_pct,
previous_seven_avg_pct,
error_rate_pct - previous_seven_avg_pct AS increase_pct_points
FROM baseline
WHERE previous_seven_avg_pct IS NOT NULL
ORDER BY hour;この読み取り専用クエリは、空の型付きテーブルに対して計画され、実行されます。 アパッチ DataFusion 45.2.0。決定論的なサンプル出力は合成され、個別にレビューされます。フィールド タイプ、しきい値、ビジネス定義を独自のデータと照合して検証します。 テスト方法を読んでください。
クエリ結果
時間当たりのエラー率がベースラインを超えて増加
13:00 のバケットは、最近のローリング平均からの唯一の明らかなプラスの偏差です。
12:00
0.03 pp
13:00
1.12 pp
14:00
0.02 pp
| hour | requests | error_rate_pct | previous_seven_avg_pct | increase_pct_points |
|---|---|---|---|---|
| 12:00 | 18,420 | 0.31 | 0.28 | 0.03 |
| 13:00 | 19,110 | 1.42 | 0.3 | 1.12 |
| 14:00 | 18,780 | 0.48 | 0.46 | 0.02 |
合成出力例。運用上の決定に使用する前に、独自のイベント スキーマとしきい値に対してクエリを実行します。
例を再現する
パブリックフィクスチャをダウンロードする
JSON バンドルには、型付きイベント コントラクトが含まれています。 illustrative 入力行、正確な SQL、予想される出力、レビューメモ、およびエンジンのバージョン。 CSV には、表示された結果が含まれます。
SQL の仕組み
- 1時間ごとの CTE は、分母との比率を計算します。
- 2ウィンドウは 1 つ前の時点で終了するため、現在のスパイクはそれ自身のベースラインを上げることができません。
- 3最終的な差はパーセント変化ではなくパーセントポイントです。
決定すべきエッジケース
- 7 時間のベースラインは、毎日の季節性をモデル化したものではありません。
- 欠落している時間バケットは欠落したままになります。見つからないトラフィックをエラーなしとして黙って処理しないでください。
- 最小限のリクエスト量を必要とし、相対的な変化と絶対的な影響のしきい値を組み合わせます。
推奨されるダッシュボード
- 傾向: 観測されたエラー率とローリングエラー率
- バー: ベースラインよりも増加します
- 表: 異常なバケット内のルート
レシピを活用する
関連する機器とガイド
分析を続ける
実際のイベントで実行する
テーブルを作成し、フィールドを調整して、結果を保存します
無料で始めて、構造化されたイベントを送信し、クエリ結果をグラフ、共有ダッシュボード ウィジェット、またはアラート入力として使用します。