活动合约
查询期望的字段
| 字段 | 类型 | 为什么存在 |
|---|---|---|
| timestamp_utc | Timestamp | 查询完成时间(UTC)。 |
| request_id | Utf8 | 有界请求相关标识符。 |
| route_template | Utf8 | 申请途径稳定。 |
| query_fingerprint | Utf8 | 没有参数的规范化查询形状。 |
| sequence_in_request | Int64 | 查询请求中的顺序。 |
| duration_ms | Float64 | 数据库操作持续时间。 |
| environment | Utf8 | 部署环境。 |
DataFusion SQL
复制查询
sql
WITH queries_per_request AS (
SELECT
route_template,
query_fingerprint,
request_id,
COUNT(*) AS executions_in_request
FROM database_request_query_events
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
AND environment = 'production'
GROUP BY route_template, query_fingerprint, request_id
)
SELECT
route_template,
query_fingerprint,
COUNT(*) AS requests,
SUM(CASE WHEN executions_in_request >= 5 THEN 1 ELSE 0 END)
AS requests_with_repeats,
AVG(executions_in_request) AS average_executions_per_request,
MAX(executions_in_request) AS maximum_executions_in_request
FROM queries_per_request
GROUP BY route_template, query_fingerprint
ORDER BY requests_with_repeats DESC, route_template;此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。
查询结果
请求内重复查询
结帐路由在两个请求中至少重复其行项目指纹五次。
/api/checkout
2
comparison 6
/api/profile
0
comparison 1
| route_template | query_fingerprint | requests | requests_with_repeats | average_executions_per_request | maximum_executions_in_request |
|---|---|---|---|---|---|
| /api/checkout | SELECT line_items BY order_id | 3 | 2 | 4 | 6 |
| /api/profile | SELECT user WITH preferences | 3 | 0 | 1 | 1 |
综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。
SQL 是如何工作的
- 1内部查询在任何路由级聚合之前建立请求级重复。
- 2受控指纹对等效参数化操作进行分组,而不保留原始 SQL 值。
- 3普遍性和最坏情况的重复都被保留,因此一种极端的要求看起来并不具有系统性。
需要决定的边缘情况
- 选择适合有意批处理和分页行为的阈值。
- 异步工作需要一个相关标识符,该标识符在从请求到工作人员的切换中仍然存在。
- 采样查询事件可以隐藏精确的重复计数;使用跟踪感知采样或记录估计值。
推荐仪表板
- 酒吧:requests_with_repeats(按路线和指纹)
- 趋势:按版本划分的每个请求的平均执行次数
- Trace链接:查询所选request_id的序列
让查询示例发挥作用
相关埋点和指南
继续分析
在真实事件中运行它
创建表,调整字段并保存结果
免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。