0

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

当试图将聚合放在 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 在最后一分钟超过某个值)的“事件”感兴趣。

4

1 回答 1

0

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

于 2015-10-06T18:14:44.403 回答