Influx聚合查询返回错误的时间

时间:2018-11-21 13:20:05

标签: time precision aggregation influxdb

我是influxdb的新用户,我的influxDB版本是1.7.1。我有大量时间涌入。

我有一个称为lv_table的度量,Listing_id和event_type是标签,event_id是字段

select *  from "lv_table" limit 10 
name: lv_table
time             Listing_id event_id event_type
----             ---------- -------- ----------
1542711774019000 105202696  4        "leads"
1542711774020000 105497566  66       "view"
1542711774021000 95532296   66       "view"
1542711774021000 98830991   1        "leads"
1542711774022000 105456186  66       "view"
1542711774023000 94326731   66       "view"
1542711774025000 104584666  66       "view"
1542711774028000 105603346  66       "view"
1542711774035000 99913981   66       "view"
1542711774037000 105430516  3        "leads"

但是当我在cli中使用“ precision RFC3339”时,该查询返回日期是1970年,例如“ 1970-01-18T20:31:51.774019Z”,但正确的时间是“ 2018-11-20T20:31:51.774019Z”

> precision RFC3339
> select *  from "lv_table" limit 10 
name: lv_table
time                        Listing_id event_id event_type
----                        ---------- -------- ----------
1970-01-18T20:31:51.774019Z 105202696  4        "leads"
1970-01-18T20:31:51.77402Z  105497566  66       "view"
1970-01-18T20:31:51.774021Z 95532296   66       "view"
1970-01-18T20:31:51.774021Z 98830991   1        "leads"
1970-01-18T20:31:51.774022Z 105456186  66       "view"
1970-01-18T20:31:51.774023Z 94326731   66       "view"
1970-01-18T20:31:51.774025Z 104584666  66       "view"
1970-01-18T20:31:51.774028Z 105603346  66       "view"
1970-01-18T20:31:51.774035Z 99913981   66       "view"
1970-01-18T20:31:51.774037Z 105430516  1        "leads"
> 

有什么问题,我该如何解决?

在聚合查询中,它很有价值...并显示2016年的时间,但应该在2018-11-20日期

1468800000000000 = 2016年7月18日星期一12:00:00 AM

select count(*) as count_leads  from "lv_table" where "event_type" = '"leads"' and time < 1542745800000000 group by Listing_id,time(1d)
>...
name: lv_table
tags: Listing_id=99965506
time             count_leads_event_id
----             --------------------
1468800000000000 1

name: lv_table
tags: Listing_id=99965771
time             count_leads_event_id
----             --------------------
1468800000000000 2

name: lv_table
tags: Listing_id=99966146
time             count_leads_event_id
----             --------------------
1468800000000000 1

name: lv_table
tags: Listing_id=99966736
time             count_leads_event_id
----             --------------------
1468800000000000 3
...

如果我不按时使用分组方式,则时间将等于0

1 个答案:

答案 0 :(得分:0)

自1970年1月1日以来,Influxdb在内部将时间戳存储为纳秒,因此实际上第一个数据点被解释为: 1542711774019000 ns -> 1542711 s -> Sun Jan 18 20:31:51 UTC 1970 这就是在cli中使用“ precision RFC3339”时看到的。

不确定如何获得

  

1468800000000000 = 2016年7月18日星期一12:00:00 AM

1468800000000000 ns -> 1468800 s -> Sun Jan 18 00:00:00 UTC 1970 这是您的第一个数据点时间戳,四舍五入为1天。

您没有描述如何将数据放入表中。在Influx HTTP API中,您可以使用可选的查询参数来指定输入时间戳数据的精度(请参见InfluxDB HTTP API reference)。

流入中的

Precision设置说明如何处理输入的时间戳数据。输入的时间戳记值始终是整数(不是rfc3339字符串)。并且此整数根据精度设置进行解释。

  

precision=[ns,u,ms,s,m,h] Optional Sets the precision for the supplied Unix time values. InfluxDB assumes that timestamps are in nanoseconds if you do not specify precision(此处为see Influx docs

它也会影响查询结果的输出格式。请参阅以下示例:

```

> precision ns
> insert demo value="precisionNS TS treated as nanoseconds" 1543220939000000000
> precision s
> insert demo value="precisionS TS treated as seconds" 1543220940
> precision ms
> insert demo value="precisionMS TS treated as ms" 1543220940123
> precision rfc3339
> select * from demo
name: demo
time                           value
----                           -----
2018-11-26T08:28:59Z           precisionNS TS treated as nanoseconds
2018-11-26T08:28:59.123456789Z precisionNS TS treated as nanoseconds
2018-11-26T08:29:00Z           precisionS TS treated as seconds
2018-11-26T08:29:00.123Z       precisionMS TS treated as ms
> 
> precision s
> select * from demo
name: demo
time       value
----       -----
1543220939 precisionNS TS treated as nanoseconds
1543220939 precisionNS TS treated as nanoseconds
1543220940 precisionS TS treated as seconds
1543220940 precisionMS TS treated as ms
> 
> precision ns
> select * from demo
name: demo
time                value
----                -----
1543220939000000000 precisionNS TS treated as nanoseconds
1543220939123456789 precisionNS TS treated as nanoseconds
1543220940000000000 precisionS TS treated as seconds
1543220940123000000 precisionMS TS treated as ms

```