活动合约
查询期望的字段
| 字段 | 类型 | 为什么存在 |
|---|---|---|
| timestamp_utc | Timestamp | 事件发生时间。 |
| event_name | Utf8 | 稳定事件合约名称。 |
| account_id | Utf8 | 这些事件需要帐户标识符。 |
| producer_version | Utf8 | 发出事件的应用程序版本。 |
DataFusion SQL
复制查询
sql
SELECT
event_name,
producer_version,
COUNT(*) AS events,
SUM(CASE
WHEN account_id IS NULL OR trim(account_id) = '' THEN 1
ELSE 0
END) AS missing_account_id,
100.0 * SUM(CASE
WHEN account_id IS NULL OR trim(account_id) = '' THEN 1
ELSE 0
END) / NULLIF(COUNT(*), 0) AS missing_rate_pct
FROM product_events
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
GROUP BY event_name, producer_version
HAVING COUNT(*) >= 20
ORDER BY missing_rate_pct DESC, events DESC;此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。
查询结果
按活动和制作人划分的帐户 ID 缺失率
仪表板事件具有特定于版本的完整性回归。
dashboard_viewed
18.49%
query_completed
0.18%
| event_name | producer_version | events | missing_account_id | missing_rate_pct |
|---|---|---|---|---|
| dashboard_viewed | web-1842 | 6,420 | 1,187 | 18.49 |
| query_completed | api-918 | 3,810 | 7 | 0.18 |
综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。
SQL 是如何工作的
- 1CASE 表达式将 NULL 和空字符串视为缺失。
- 2按 producer_version 分组使部署回归更容易隔离。
- 3最小数量规则可以防止少数开发事件在报告中占据主导地位。
需要决定的边缘情况
- 仅评估活动合同中真正需要的字段。
- 匿名产品事件可能合法地缺少 account_id,并且应使用单独的完整性规则。
- 诸如“未知”之类的占位符不为 NULL,但仍可以隐藏缺失的身份;单独测量哨兵值。
推荐仪表板
- 条形:missing_rate_pct by event_name 和 producer_version
- 趋势:关键合同的完成率
- 表:最近的行缺少必填字段
让查询示例发挥作用
相关埋点和指南
继续分析
在真实事件中运行它
创建表,调整字段并保存结果
免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。