活动合约
查询期望的字段
| 字段 | 类型 | 为什么存在 |
|---|---|---|
| timestamp_utc | Timestamp | 事件接收时间。 |
| event_name | Utf8 | 稳定的逻辑事件名称。 |
| schema_version | Utf8 | 显式合约版本,例如 v2。 |
| producer_version | Utf8 | 应用程序构建或工作人员发布。 |
DataFusion SQL
复制查询
sql
WITH version_counts AS (
SELECT
event_name,
producer_version,
schema_version,
COUNT(*) AS events
FROM product_events
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
GROUP BY event_name, producer_version, schema_version
),
producer_totals AS (
SELECT
event_name,
producer_version,
SUM(events) AS producer_events
FROM version_counts
GROUP BY event_name, producer_version
)
SELECT
counts.event_name,
counts.producer_version,
counts.schema_version,
counts.events,
100.0 * counts.events / NULLIF(totals.producer_events, 0)
AS version_share_pct
FROM version_counts AS counts
JOIN producer_totals AS totals
ON totals.event_name = counts.event_name
AND totals.producer_version = counts.producer_version
ORDER BY counts.event_name, counts.producer_version, counts.events DESC;此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。
查询结果
生产者的架构版本共享
Web 部署已收敛于 v2,而工作版本仍占据大量 v1 份额。
web-1848
99.72%
worker-411
38.11%
| event_name | producer_version | schema_version | events | version_share_pct |
|---|---|---|---|---|
| checkout_completed | web-1848 | v2 | 9,840 | 99.72 |
| checkout_completed | worker-411 | v1 | 742 | 38.11 |
综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。
SQL 是如何工作的
- 1第一个 CTE 按生产者和模式版本对每个观察到的事件合约进行计数。
- 2生产者总数创建了公平比较高容量和低容量版本所需的分母。
- 3在输出中保留两个版本可以使混合部署可见,而不是仅报告最新版本。
需要决定的边缘情况
- 无版本化的历史事件需要显式的遗留标签,而不是静默的 NULL。
- 移动和桌面客户端的推出窗口可能比服务器版本更长。
- 仅当语义更改与版本标签一起记录时,版本标签才有用。
推荐仪表板
- 酒吧:version_share_pct by producer_version
- 趋势:旧版本在部署时间内的份额
- 表:具有多个活动版本的事件名称
让查询示例发挥作用
相关埋点和指南
继续分析
在真实事件中运行它
创建表,调整字段并保存结果
免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。