活动合约
查询期望的字段
| 字段 | 类型 | 为什么存在 |
|---|---|---|
| timestamp_utc | Timestamp | 终端迁移时间(UTC)。 |
| migration_id | Utf8 | 来自源代码控制的稳定迁移标识符。 |
| service | Utf8 | 运行迁移的服务或部署作业。 |
| database_name | Utf8 | 批准的逻辑数据库名称。 |
| release | Utf8 | 应用程序或基础设施发布。 |
| status | Utf8 | 成功、失败或 rolled_back。 |
| duration_ms | Float64 | 迁移执行持续时间。 |
| error_type | Utf8 | 没有原始数据库输出的受控故障类别。 |
| environment | Utf8 | 部署环境。 |
DataFusion SQL
复制查询
sql
SELECT
release,
service,
database_name,
COUNT(*) AS migrations,
SUM(CASE WHEN status = 'success' THEN 1 ELSE 0 END) AS successful,
SUM(CASE WHEN status = 'failed' THEN 1 ELSE 0 END) AS failed,
SUM(CASE WHEN status = 'rolled_back' THEN 1 ELSE 0 END) AS rolled_back,
100.0 * SUM(CASE WHEN status = 'success' THEN 1 ELSE 0 END)
/ NULLIF(COUNT(*), 0) AS success_rate_pct,
AVG(duration_ms) AS average_duration_ms
FROM database_migration_events
WHERE timestamp_utc >= now() - INTERVAL '30 days'
AND environment = 'production'
GROUP BY release, service, database_name
ORDER BY release DESC;此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。
查询结果
按版本划分的迁移成功率
较新的版本包含失败的迁移和回滚的迁移,不应视为完成。
2026.07.2
60%
comparison 1%
2026.07.1
100%
comparison 0%
| release | service | database_name | migrations | successful | failed | rolled_back | success_rate_pct | average_duration_ms |
|---|---|---|---|---|---|---|---|---|
| 2026.07.2 | application-api | app_production | 5 | 3 | 1 | 1 | 60 | 1,470 |
| 2026.07.1 | application-api | app_production | 5 | 5 | 0 | 0 | 100 | 890 |
综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。
SQL 是如何工作的
- 1每次迁移的一个终端行可防止启动和重试事件导致分母膨胀。
- 2失败和回滚结果仍然是分开的,因为成功回滚仍然意味着迁移未交付。
- 3版本、服务和数据库确定了需要审查的确切部署边界。
需要决定的边缘情况
- 某些迁移工具会自动重试。在发出一个最终结果时单独保留尝试计数。
- 成功的迁移在逻辑上仍然可能是错误的;将此视图与应用程序运行状况和部署后验证配对。
- 不要记录原始 DDL、连接字符串或不受限制的数据库错误文本。
推荐仪表板
- 条形:success_rate_pct(按版本)
- 表:失败和回滚的迁移 ID
- 趋势:迁移持续时间和部署计数
让查询示例发挥作用
相关埋点和指南
继续分析
在真实事件中运行它
创建表,调整字段并保存结果
免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。