【问题标题】:pipelinedb aggregates in where clausepipelinedb 在 where 子句中聚合
【发布时间】:2015-09-30 15:12:42
【问题描述】:

我正在使用 pipelinedb 来测试对来自传感器的数据流的一些分析。 例如,我希望能够在流中找到由聚合定义的事件。例如。查找最近 5 分钟内 max(temperature) 和 min(temperature) 之间的差异超过一定范围的事件。

尝试将聚合放在 WHERE 子句中时,我收到一条错误消息,提示“在连续视图中不允许聚合”

我在这里遗漏了什么还是不可能?

否则我非常非常喜欢pipelinedb!

好吧,pipelinedb 说:“连续查询不支持 HAVING 子句”。

我想要做的是:

我有一个名为 geo_vital_stream 的流,它会发送一些传感器数据以及地理位置。目前我很感兴趣

insert into geo_vital_stream (device_id, user_id, measured_at, heartrate, energy, eda, lon, lat)  VALUES( 'A005D8-E4 2.0',1,'2015-10-08 15:04:33.134000+02',96.8497201823,351.056269367,0.505791,8.07154018407,52.9531484103 );

我的简历是这样的:

CREATE CONTINUOUS VIEW cv_sensor_eda AS 
SELECT user_id::integer, 
       MAX(eda::numeric) -  MIN(eda::numeric) as range_eda

FROM geo_vital_stream
WHERE (measured_at > clock_timestamp() - interval '1 minutes')
GROUP BY user_id

现在,我只对那些范围(range_eda 在最后一分钟超过某个值)的“事件”感兴趣。

【问题讨论】:

    标签: pipelinedb


    【解决方案1】:

    WHERE 子句中使用聚合实际上不是合法的 SQL。这是使用HAVING 子句完成的,但这似乎不是您需要的。由于聚合计算跨多行的值,我不清楚如何基于多个事件的聚合(minmax)检索单个事件。您能否举例说明每个事件的外观?

    【讨论】:

    • 好吧,pipelinedb 说:“连续查询不支持 HAVING 子句”。我要过滤掉的内容如下:我有一个名为 geo_vital_stream 的流,它会发送一些传感器数据以及地理位置。目前我很感兴趣
    猜你喜欢
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多