下面是我要提出这个问题的情况。
要求:在influxDb中预先聚合时间序列数据,每个传感器在设备中的粒度为秒、分钟、小时、天数和周。
当前的建议:创建五个连续查询(每个粒度级别一个,即秒、分钟.)对于设备的每个传感器在不同的保留策略中作为原始时间序列数据的保留策略,当设备在板上时。
的限制与目前的建议:增加了设备/传感器的数量(时间序列数据源),流入将因过多的连续查询(这是不建议的)而膨胀,并将给influxDb实例本身带来代价。
问题:为了避免上述问题,是否有可能在同一源度量(即原始时间序列度量)上创建连续查询,但可以使用引入的新标记来区分度量中的聚合,从而将结果与度量中的原始时间序列数据区分开来。
示例:
CREATE CONTINUOUS QUERY "strain_seconds" ON "database"
RESAMPLE EVERY 5s FOR 1m
BEGIN
SELECT MEAN("strain_top") AS "STRAIN_TOP_MEAN" INTO "database"."raw"."strain" FROM "database"."raw"."strain" GROUP BY time(1s),*
END发布于 2020-01-29 14:06:19
据我所知,并且已经从文档中看到,在连续查询中不可能应用新的标记。
如果我正确地理解了需求,这是您可以处理它的一种方法。
CREATE CONTINUOUS QUERY "strain_seconds" ON "database"
RESAMPLE EVERY 5s FOR 1m
BEGIN
SELECT MEAN("strain_top") AS "STRAIN_TOP_MEAN" INTO "database"."raw"."strain" FROM "database"."strain_seconds_retention_policy"."strain" GROUP BY time(1s),*
END这将将数据保存在相同的度量中,但保留策略不同-- strain_seconds_retention_policy。在执行select时,可以指定要从中选择的相应保留策略。
请注意,不可能同时从多个保留策略执行select。如果不指定一个,则使用默认的(而不是所有的)。如果这是您需要的东西,那么可以使用另一种方法。
我不太明白为什么每个设备和每个传感器都需要定义一个连续的查询。您只需要定义五个(1 /秒、分钟、小时、天、周)并执行group by * (全部),而您已经这样做了。只要源数据池具有相应设备和传感器的id标记,重放的数据池也将具有该标记。任何新添加的设备(数据)都将由这5个查询自动处理,并保存到相应的保留策略中。
如果您确实希望应用其他标记,则可以在自定义脚本中处理数据库外的数据,并使用所需的任何附加标记将其写回,而不是使用连续查询。
https://stackoverflow.com/questions/59960850
复制相似问题