事件结构
查询期望的字段
| 字段 | 类型 | 为什么存在 |
|---|---|---|
| reading_id | Utf8 | 虚构测量的标识。 |
| measured_second | Int64 | 练习开始后,传感器测量的秒数。 |
| delivered_second | Int64 | 练习开始后,网络消息送达的秒数。 |
| co2_ppm | Int64 | 虚构的 CO₂ 读数,单位为 ppm;不能用于健康评估。 |
DataFusion SQL
复制查询
sql
WITH per_reading AS (
SELECT reading_id, MIN(co2_ppm) AS co2_ppm
FROM sensor_deliveries
GROUP BY reading_id
),
delivery_summary AS (
SELECT COUNT(*) AS deliveries, AVG(co2_ppm) AS delivered_mean_ppm
FROM sensor_deliveries
),
measurement_summary AS (
SELECT COUNT(*) AS measurements, AVG(co2_ppm) AS measurement_mean_ppm
FROM per_reading
)
SELECT deliveries, measurements, delivered_mean_ppm, measurement_mean_ppm
FROM delivery_summary CROSS JOIN measurement_summary;此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。
查询结果
两种统计单位,两种均值
六次送达对应四次测量。两个均值使用同一组虚构数值,但回答的是不同问题。
| deliveries | measurements | delivered_mean_ppm | measurement_mean_ppm |
|---|---|---|---|
| 6 | 4 | 700 | 675 |
综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。
SQL 是如何工作的
- 1第一个 CTE 按 reading_id 对送达记录分组,因此 r4 的重发不会算作新测量。
- 2按送达行计算的均值是 700 ppm;按四次测量计算的是 675 ppm。两者都不一定是教室空气按时间加权的均值。
- 3这里使用 MIN 只因为同一 reading_id 的每条虚构记录都有相同的 co2_ppm。去重真实数据前要检查是否有冲突值。
需要检查的边界情况
- 两次不同的测量可能得到相同的 CO₂ 数值;AVG(DISTINCT co2_ppm) 会错误地把它们合并。
- 真实的读数 ID 可能在不同设备间冲突,也可能在重启后复用。分组真实事件前,要先明确测量标识规则。
- 这组虚构 CO₂ 数值不能用于通风或健康决策。真实使用还需检查校准、安装位置、缺失读数和时间覆盖范围。
推荐仪表板
- 表格:一次练习中的送达次数、测量次数和两个均值
设置此查询需要的事件
相关埋点和指南
继续分析
在你的事件上运行
创建表,调整字段并保存结果
免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。