【问题标题】:What's the best way to account for missing records when performing aggregate queries?在执行聚合查询时,说明丢失记录的最佳方法是什么?
【发布时间】:2021-01-15 16:39:04
【问题描述】:

我在 QuestDB 中有一个包含 IoT 传感器数据的表。通常的操作模式是传感器在具有活动互联网连接的情况下将信息写入表格。这意味着他们每天从几分钟到几个小时不等,或者不断向我发送数据。当我想在此之上运行聚合查询时,我该如何解释缺失值? 如果我想要 24 小时内每分钟的平均值,但缺少 4 小时的数据,我的结果是否会出现偏差?例如:

select avg(tempFahren) from (iot_logger timestamp(ts)) sample by 1m

很明显,我在绘图时直接跳到下一个报告的值,所以当传感器再次联机时,我会突然出现悬崖而不是循环模式:

【问题讨论】:

    标签: sql arduino questdb


    【解决方案1】:

    如果要填充缺失值,还可以选择在 SAMPLE BY 聚合中使用 FILL 关键字。有几种方法可以使用它,例如按先前值填充、线性插值或指定常量:

    select ts, avg(tempFahren) from (iot_logger timestamp(ts)) sample by 1m fill(linear);
    

    official documentation 上还有更多关于如何使用此功能的示例

    【讨论】:

      【解决方案2】:

      avg() 这样的聚合函数会忽略缺失的数据(例如null 值)。

      所以不,如果您的传感器在一段时间内不发送数据,您的结果将不会出现偏差。

      【讨论】:

        猜你喜欢
        • 2018-09-03
        • 2020-01-09
        • 1970-01-01
        • 2012-09-12
        • 1970-01-01
        • 1970-01-01
        • 2013-06-30
        • 1970-01-01
        • 2021-08-17
        相关资源
        最近更新 更多