事件结构
查询期望的字段
| 字段 | 类型 | 为什么存在 |
|---|---|---|
| timestamp_utc | Timestamp | UTC finish-event time; use a fixed analysis window 中 production. |
| job_id | Utf8 | One fictional completed logical job per row. |
| schema_version | Int64 | Version of the event contract; 1 uses duration_ms and 2 uses latency_ms. |
| duration_ms | Int64 | Release-1 duration, null on release 2. |
| latency_ms | Int64 | Release-2 duration, null on release 1. |
复制查询
WITH normalized AS (
SELECT
job_id,
schema_version,
duration_ms,
CASE schema_version
WHEN 1 THEN duration_ms
WHEN 2 THEN latency_ms
END AS measured_ms
FROM job_finished
)
SELECT
COUNT(*) AS completed_jobs,
COUNT(duration_ms) AS jobs_in_old_average,
ROUND(AVG(duration_ms), 1) AS old_average_ms,
COUNT(measured_ms) AS jobs_with_duration,
SUM(CASE WHEN measured_ms IS NULL THEN 1 ELSE 0 END) AS unmeasured_jobs,
ROUND(100.0 * COUNT(measured_ms) / NULLIF(COUNT(*), 0), 1)
AS duration_coverage_pct,
ROUND(AVG(measured_ms), 1) AS schema_aware_average_ms
FROM normalized;此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。
查询结果
A plausible average can cover only half the jobs
The old field averages two fictional jobs at 475 ms. The version-aware query covers all four at 580 ms.
| completed_jobs | jobs_in_old_average | old_average_ms | jobs_with_duration | unmeasured_jobs | duration_coverage_pct | schema_aware_average_ms |
|---|---|---|---|---|---|---|
| 4 | 2 | 475 | 4 | 0 | 100 | 580 |
综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。
SQL 是如何工作的
- 1The old query AVG(duration_ms) still returns 475 ms because SQL averages ignore nulls. Only two of four completed jobs contribute to it.
- 2The version-aware CASE maps release 1 to duration_ms and release 2 to latency_ms, giving 580 ms across all four fictional jobs.
- 3Keep duration coverage beside the average. An unknown version or a missing field can leave the average unchanged while coverage falls.
需要检查的边界情况
- Use a fixed UTC time window when comparing releases; this four-row lesson leaves all fictional rows 中 scope.
- This example assumes one finish row per completed logical job. Deduplicate repeated finish events by job_id before using it for a real job count.
- A field rename is comparable only if both versions time the same start and stop points 中 the same unit.
- A missing or unknown schema_version maps to null and lowers coverage; do not silently coalesce it to an old field.
- The four rows are fictional and do not describe a customer, a real incident, or measured product performance.
推荐仪表板
- Table: completed jobs, duration coverage, and average by release
- Trend: duration coverage percentage over deploy time
警报指导
Alert on falling duration coverage only after establishing an expected minimum event count and documenting the version mapping.
读取警报设置设置此查询需要的事件
相关埋点和指南
继续分析
在你的事件上运行
创建表,调整字段并保存结果
免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。