每天查询InfluxDB特定时间

时间:2017-03-15 19:31:15

标签: influxdb

每天查询InfluxDB特定时间的最佳方式是什么,例如,我有一个系列有签入/结帐活动,我需要在上个月的每天下午2点到下午3点之间看到它们,我知道在查询语言上没有直接的方法 - 当前版本1.2-不确定是否有解决方法或什么?

1 个答案:

答案 0 :(得分:8)

我一直在寻找同样的问题并找到了你的问题。如你所说,语法似乎不允许这样做

我最接近的尝试是尝试使用正则表达式WHERE clausule,目前InfluxDB不支持。

所以这应该是答案,我不会发布答案只是说。

但是,在处理其他问题时,我发现在您的具体情况下可能会或可能不会帮助您。这是一个解决方法并不是很好,但是如果您可以在给定时间内制定您希望看到的内容的聚合/选择,那么它似乎可以 这样你最终每小时就有一个价值。例如,(给定人员在该小时内的签到结账的平均值/最大/计数数量,可能是您正在寻找的,或者您可以用来确定您希望他们单独查询的日期发生了什么事。)

例如,我想每天从00:00到06:00获取每日耗电量的测量值。我制作了第一个子查询,将测量分组从给定日期的00:00开始划分6小时。然后在主查询中,我分组24小时,然后选择第一个值。喜欢这个

SELECT first("mean") FROM (SELECT mean("value") FROM "Energy" WHERE "devicename" = 'Electricity' AND "deviceid" = '0_5'  AND time > '2017-01-01' GROUP BY time(6h) ) WHERE time > '2017-01-01' GROUP BY time(24h)

如果您想要下午2-4点,那么14:00-16:00,您需要先在子查询中分组2小时,然后将设置下载14h,以便在14:00开始。

SELECT first("mean") FROM ( SELECT mean("value") FROM "Energy" WHERE "devicename" = 'Electricity' AND "deviceid" = '0_5'  AND time > '2017-01-01T14:00:00Z' GROUP BY time(2h) ) WHERE time > '2017-01-01T14:00:00Z' GROUP BY time(24h,14h)

只是为了检查它。在我的1.2 InfluxDB中,这是最终的结果:

Energy
time    first
2017-01-01T14:00:00Z    86.41747572815534
2017-01-02T14:00:00Z    43.49722222222222
2017-01-03T14:00:00Z    81.05416666666666

子查询返回:

Energy
time    mean
2017-01-01T14:00:00Z    86.41747572815534
2017-01-01T16:00:00Z    91.46879334257974
2017-01-01T18:00:00Z    89.14027777777778
2017-01-01T20:00:00Z    94.47434119278779
2017-01-01T22:00:00Z    89.94305555555556
2017-01-02T00:00:00Z    86.29542302357837
2017-01-02T02:00:00Z    92.2625
2017-01-02T04:00:00Z    89.93619972260748
2017-01-02T06:00:00Z    87.78888888888889
2017-01-02T08:00:00Z    50.790277777777774
2017-01-02T10:00:00Z    0.6597222222222222
2017-01-02T12:00:00Z    0.10957004160887657
2017-01-02T14:00:00Z    43.49722222222222
2017-01-02T16:00:00Z    86.0610263522885
2017-01-02T18:00:00Z    86.59778085991678
2017-01-02T20:00:00Z    91.56527777777778
2017-01-02T22:00:00Z    90.52565880721221
2017-01-03T00:00:00Z    86.79166666666667
2017-01-03T02:00:00Z    87.15533980582525
2017-01-03T04:00:00Z    89.47988904299584
2017-01-03T06:00:00Z    91.58888888888889
2017-01-03T08:00:00Z    41.67732962447844
2017-01-03T10:00:00Z    16.216366158113733
2017-01-03T12:00:00Z    25.27739251040222
2017-01-03T14:00:00Z    81.05416666666666

如果您需要13:00-15:00,则需要将前一个示例中的子查询偏移1h。

14:00-15:00:

SELECT first("mean") FROM ( SELECT mean("value") FROM "Energy" WHERE "devicename" = 'Electricity' AND "deviceid" = '0_5'  AND time > '2017-01-01T14:00:00Z' GROUP BY time(1h) ) WHERE time > '2017-01-01T14:00:00Z' GROUP BY time(24h,14h)

希望这会有所帮助:)

相关问题