本文へ移動
Telemetry
ドキュメントを見る
概念とSQLパターン更新日: 2026年7月28日Telemetry 編集チームと製品チームによるレビュー1 最小読み取り時間

コーディング エージェントでこのドキュメントを使用してください

Claude Code、Codex、Cursor、または別のコーディング エージェント用の集中プロンプト パックを開き、それをここで説明するワークフローに適応させます。

SQL イベント分析用のウィンドウ関数

ウィンドウ関数は、結果の各行を保持しながら、関連する行全体を計算します。定期的な GROUP BY 多くのイベントをグループごとに 1 行に減らします。ウィンドウでは、以前の値、ランク、またはローリング ベースラインを追加しながら、毎日、リクエスト、またはアカウントを保持できます。

隣接するバケットを比較する

WITH daily AS (
  SELECT
    date_trunc('day', timestamp_utc) AS day,
    COUNT(*) AS completed_jobs
  FROM job_events
  WHERE status = 'completed'
    AND timestamp_utc >= now() - INTERVAL '30 days'
  GROUP BY date_trunc('day', timestamp_utc)
)
SELECT
  day,
  completed_jobs,
  LAG(completed_jobs) OVER (ORDER BY day) AS previous_day_jobs,
  AVG(completed_jobs) OVER (
    ORDER BY day
    ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
  ) AS rolling_7_bucket_average
FROM daily
ORDER BY day;

LAG ウィンドウの順序に従って前の行を読み取ります。額装された AVG ローリング 7 バケット ベースラインを計算します。最初の行には寄与するバケットが 7 つ未満であるため、完全なウィンドウが必要な場合は、それらのバケットにラベルを付けるか非表示にします。

比較単位で区切る

追加 PARTITION BY service 各サービスが独立したシーケンスを必要とする場合。これがないと、前の行が別のサービスに属している可能性があります。列の順序付けも決定的である必要があります。 2 つのイベントがタイムスタンプを共有する場合は、安定した識別子をタイブレーカーとして追加します。

ROW_NUMBER 論理キーごとに 1 つのイベントを選択する場合に便利です。

ROW_NUMBER() OVER (
  PARTITION BY delivery_id
  ORDER BY timestamp_utc DESC, event_id DESC
) AS newest_rank

フィルターして newest_rank = 1 外部クエリ内。パターンを使用する前に、「最新」または「最初に受け入れられた」のどちらが正しいビジネス ルールであるかを判断してください。

Windows では、欠落しているタイム バケット、重複したソース イベント、またはあいまいな行粒度は修復されません。前期比の変化を解釈する前に、これらの条件を検証してください。読む SQL 重複排除 アイデンティティ ルールと DataFusion SQL リファレンス Telemetry によってテストされたウィンドウ構文用。

関連製品の機能

構造化イベント テーブルに対して読み取り専用 DataFusion SQL を実行し、結果を再利用します。

所有権と技術リファレンス

Telemetry 編集チームがこの説明を所有しています。製品チームは動作、例、境界をレビューします。

編集基準を見直す